您好,我想开始研究 Java 源代码的静态分析。作为开始,直接解析我的源代码树似乎是最简单的,但是假设有用于此的 API。特别是有一个 API 允许这样的代码会很好:
for (MetaClass m : mySourcePackage.getClasses())
{
System.out.println(m.getMethods().size());
...
}
当然,对于任何给定的类,您都可以使用反射来做到这一点——但我更感兴趣的是从头开始静态分析整个源代码包——并逐一迭代类(例如,评估事物如测试覆盖率、最大行数等...)。
是否有用于进行此类元分析的任何高质量开源框架(或者,是否可以使用特定类路径启动 JVM 并在 JVM 内部进行此类分析)?
请记住,我并不特别担心 DI 和反射等陷阱(至少,目前不是)。
最佳答案
Findbugs可以将其视为静态分析的框架。您可以实现具有特定目标的新检测器。 "How To" tutorial
此外,这里有一些库涵盖了您提到的目标:
关于Java静态分析: Getting started,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353829/