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

时间:2014-06-11 08:10:36

标签: java findbugs

我试图在命令行中运行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”的信息,它说

  

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

结尾

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

感谢。

1 个答案:

答案 0 :(得分:3)

该程序描述为on the FindBugs website

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

下次,您可以通过运行

开始分析
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.fbp

如果您不想或不能使用GUI,可以通过在findbugs.jar之后添加-textui选项作为第一个选项来获取纯文本版本。输出格式和行为通过additional command line options配置。

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