我尝试运行 FindBugs在命令行中,在指定要分析的项目时遇到了麻烦。我知道 FindBugs 在字节码(.jar、.class)上工作,所以我写了一个 HelloWorld 程序并确保它有一些困惑的代码可以被 FindBugs 检测到。
然后我尝试了:
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld/bin
抛出异常:
java.lang.IllegalArgumentException: Can't read project from HelloWorld/bin
at edu.umd.cs.findbugs.Project.readProject(Project.java:774)
我还尝试了 .class 和 .jar 文件,但没有显示任何内容:
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld/bin/Main.class
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.jar
我查看了 FindBugs 手册中有关命令行选项“-project”的内容,它说
The project file you specify should be one that was created using the GUI interface. It will typically end in the extension .fb or .fbp
我不明白这个。这是否意味着需要进行一些预处理并且 FindBugs 无法直接检查任意 .jar 或 .class 或项目?我如何获得此 .fb 或 .fbp 扩展名?
谢谢。
最佳答案
过程描述on the FindBugs website :
- 确保你 download包含 GUI(称为 Swing 界面)的 FindBugs 发行版。
- 解压缩您下载的 ZIP 并将其 bin 文件夹添加到您的 PATH。
- 键入
findbugs
以打开 GUI,然后单击New Project - 在对话框中:
- 输入项目名称,例如
HelloWorld
。 - 在它说用于分析的类路径 的地方,为它提供包含您的 .class 文件的 Jar 或 .class 文件所在的目录(例如
build/classes/main
或其他;包结构必须在此目录中开始)。 - 在显示辅助类路径的地方,列出加载类所需的所有库。
- 源目录 的工作方式与用于分析的类路径 类似,但用于 .java 文件。 FindBugs 使用它来向您展示您的问题在代码中的什么位置。
- 您可以选择
(cloud disabled)
作为 bug store。
- 输入项目名称,例如
- 点击分析。
- 现在您可以将项目配置保存为 .fbp 项目文件。
下次,您可以通过运行开始分析
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.fbp
如果您不想或不能使用 GUI,您可以通过在 findbugs.jar 之后添加 -textui
选项作为第一个选项来获得纯文本版本。输出格式和行为通过 additional command line options 配置.
但是,大多数人将 FindBugs 与他们的 IDE 集成使用,或者将其作为构建过程的一部分。这两个用例都不需要 GUI 或命令行版本。查看适用于您的 IDE 的插件,它可能会为您节省很多时间,而且它们真的很容易使用。
关于java - FindBugs 命令行 : how to specify the project to be analyzed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157777/