FindBugs命令行:如何指定要分析的项目?

Ida*_*Ida 5 java findbugs

我试图在命令行中运行FindBugs,并在指定要分析的项目时遇到麻烦.我理解FindBugs在字节码(.jar,.class)上工作,所以我写了一个HelloWorld程序并确保它有一些凌乱的代码可以被FindBugs检测到.

然后我尝试了:

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld/bin
Run Code Online (Sandbox Code Playgroud)

哪个例外:

java.lang.IllegalArgumentException: Can't read project from HelloWorld/bin
              at edu.umd.cs.findbugs.Project.readProject(Project.java:774)
Run Code Online (Sandbox Code Playgroud)

我也试过.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
Run Code Online (Sandbox Code Playgroud)

我说,我检查了FindBugs手册中有关命令行选项"-project"的信息

您指定的项目文件应该是使用GUI界面创建的项目文件.它通常以扩展名.fb或.fbp结尾

我不明白这一点.这是否意味着需要进行一些预处理,FindBugs不能直接检查任意.jar或.class或项目?我如何获得.fb或.fbp扩展名?

谢谢.

bar*_*uin 3

FindBugs 网站上描述了该过程:

  • 确保您下载了包含 GUI(称为Swing 界面)的 FindBugs 发行版。
  • 解压下载的 ZIP 并将其bin文件夹添加到您的 PATH 中。
  • 键入findbugs以打开 GUI,然后单击“新建项目”
  • 在对话框中:
    • 输入项目名称,例如HelloWorld
    • 在显示Classpath for Analysis 的地方,给它包含 .class 文件的 Jar 或 .class 文件所在的目录(例如build/classes/main或其他;包结构必须从此目录开始)。
    • 在显示Auxiliary classpath的地方,列出加载类所需的所有库。
    • 源目录的工作方式与用于分析的类路径类似,但适用于 .java 文件。FindBugs 使用它来向您显示问题在代码中的位置。
    • 您可以选择(cloud disabled)作为错误存储。
  • 单击分析
  • 现在您可以将项目配置保存为 .fbp 项目文件。

下次,您可以通过运行来开始分析

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.fbp
Run Code Online (Sandbox Code Playgroud)

如果您不想或无法使用 GUI,可以通过将该-textui选项添加为 findbugs.jar 后的第一个选项来获取纯文本版本。输出格式和行为通过附加命令行选项进行配置。

然而,大多数人使用与其 IDE 集成的 FindBugs,或者作为构建过程的一部分。这两种用例都不需要 GUI 或命令行版本。看看你的 IDE 的插件,它可能会节省你很多时间,而且它们真的很容易使用。