在单个文件上发现错误?

Nas*_*Ohi 3 static-analysis spotbugs

我在 Eclipse IDE 中使用 Spotbugs 插件。我可以在整个项目上运行 Spotbugs,这给我的印象是该工具需要构建项目才能呈现其分析报告。

但文档说它是一个静态分析工具。

所以,我很好奇如果它需要构建项目,那么我们可以将其称为静态分析工具吗?如果不需要构建项目,我们可以在单个 .java 文件上运行 Spotbugs 吗?

Thr*_*nCA 5

静态分析的含义是它分析“静态”的项目文件,而不是监视正在运行的应用程序。https://en.wikipedia.org/wiki/Static_program_analysis

与分析源代码相比,分析字节码既有优点也有缺点。它速度更快,更适合对程序流程进行深入分析,但不会发现编译后的错误,例如不必要的导入和不一致但合法的空白。

即使您编译了该文件,也无法在单个文件上正确运行它,因为存在考虑多个文件的检测器,例如检测何时尝试传递null给参数注释为非空的方法,或者当您将一个方法定义为公共方法,然后从未从类外部调用它时。