我试图在命令行中运行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扩展名?
感谢。
答案 0 :(得分:3)
该程序描述为on the FindBugs website:
findbugs
以打开GUI,然后单击 New Project HelloWorld
。build/classes/main
或其他;包结构必须从这个目录开始)。(cloud disabled)
作为错误存储。下次,您可以通过运行
开始分析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的插件,它可以节省你很多时间,它们真的很容易使用。