单个文件上的 Spotbug?

Spotbugs on a single file?

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

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

所以,我很好奇如果它需要构建项目,那么我们可以称它为静态分析工具吗? 如果不需要构建项目,我们可以 运行 Spotbugs on single .java files?

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

之后,您可以只分析单个文件,例如在 IntelliJ IDEA 中(仍然是 FindBugs 插件,但 SpotBugs 可以完成 FindBugs 可以做的所有事情,相同的代码库):

静态分析的含义是分析您的项目文件"at rest",而不是监视运行ning 应用程序。 https://en.wikipedia.org/wiki/Static_program_analysis

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

你不能在单个文件上正确地 运行 它,即使你编译了那个文件,因为有些检测器会考虑多个文件,例如检测你何时试图通过 null 到其参数被注释为非 null 的方法,或者当您将方法定义为 public 然后从未从 class.

外部调用它时