Java静态分析: Getting started

标签 java code-coverage static-analysis

您好,我想开始研究 Java 源代码的静态分析。作为开始,直接解析我的源代码树似乎是最简单的,但是假设有用于此的 API。特别是有一个 API 允许这样的代码会很好:

for (MetaClass m : mySourcePackage.getClasses()) 
{
       System.out.println(m.getMethods().size());
       ...
}

当然,对于任何给定的类,您都可以使用反射来做到这一点——但我更感兴趣的是从头开始静态分析整个源代码包——并逐一迭代类(例如,评估事物如测试覆盖率、最大行数等...)。

是否有用于进行此类元分析的任何高质量开源框架(或者,是否可以使用特定类路径启动 JVM 并在 JVM 内部进行此类分析)?

请记住,我并不特别担心 DI 和反射等陷阱(至少,目前不是)。

最佳答案

Findbugs可以将其视为静态分析的框架。您可以实现具有特定目标的新检测器。 "How To" tutorial

此外,这里有一些库涵盖了您提到的目标:

More tools/libraries

关于Java静态分析: Getting started,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353829/

相关文章:

java - Spring行为中的@async是同步的

c++ - 使用 Visual Studio 对 native VS C++ 的 gtest 单元测试执行代码覆盖

azure - 我可以从 Azure 上的部署生成代码覆盖率吗?

javascript - 对不可空的流类型细化不起作用

java - SonarQube 与 FindBugs 插件

java - 声音文件目录java

java - 在 Kotlin 或 Java 中如何判断一个数字是否是 10 的幂?

java - 公开 Google Datastore 数据的实体 ID

unit-testing - 包外测试文件时的 Golang 测试覆盖率

c++ - Visual C++(2012 - 2015)代码指标