单个文件上的Spotbug?

时间:2018-09-28 01:14:29

标签: static-analysis spotbugs

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

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

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

2 个答案:

答案 0 :(得分:1)

是的,因为SpotBugs分析字节码(.class文件),所以您必须首先构建项目(至少要分析的部分)。

在那之后,您可以仅分析一个文件,例如在IntelliJ IDEA中(仍然是FindBugs插件,但是SpotBugs可以执行FindBugs可以执行的所有工作,并且代码相同):

IDEA analyze single file

答案 1 :(得分:1)

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

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

即使编译了该文件,也无法在单个文件上正确运行它,因为有些检测器会考虑多个文件,例如检测何时尝试将null传递给其参数的方法会被注释为非null,或者将方法定义为public,然后再也不从类外部调用它。