2014-06-11 34 views
4

我试图在命令行中运行FindBugs,并在指定要分析的项目时遇到麻烦。我知道FindBugs可以在字节码(.jar,.class)上工作,所以我编写了一个HelloWorld程序,并确保它有一些乱码,它们会被FindBugs检测到。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扩展名?

谢谢。

回答

3

程序中描述on the FindBugs website

  • 确保您download的FindBugs的分布,其中包括图形用户界面(叫做摇摆接口)。
  • 提取下载的ZIP文件,并将其bin文件夹添加到PATH中。
  • 类型findbugs打开GUI,然后单击新建项目
  • 在对话框:
    • 输入项目名称,说HelloWorld
    • 它说的地方分析的类路径,给你的.class文件或.class文件所在的目录(例如build/classes/main或其他任何地方;包结构必须在此目录中启动)。
    • 它说的地方辅助类路径,列出加载类所需的任何库。
    • 源目录的工作原理与类路径的分析,但为.java文件。 FindBugs使用它来显示你的问题在代码中的位置。
    • 您可以选择(cloud disabled)作为错误存储。
  • 点击分析
  • 现在您可以将项目配置保存为.fbp项目文件。

下一次,你可以通过运行

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.fbp 

如果你不想开始分析或不能使用图形用户界面,您可以通过添加-textui选项,获得纯文字版本findbugs.jar之后的第一个选项。输出格式和行为通过additional command line options进行配置。

但是,大多数人使用FindBugs与他们的IDE集成,或作为构建过程的一部分。使用 情况下都不需要GUI或命令行版本。查看IDE的插件,它可以为您节省大量时间,并且它们非常易于使用。

+0

感谢您的详细说明!我跟着每一步,但当我点击“分析”时,FindBugs GUI弹出一个“分析失败”窗口,说“ArrayIndexOutOfBoundsException:35328”。你有什么想法是什么导致了这种异常?谢谢! – Ida

+1

使用您的错误消息搜索导致我假设您正在使用Java 8?似乎有Java 8的FindBugs问题。尝试使用Java 7进行编译。 –

+0

我尝试了Java 7,问题解决了!谢谢! – Ida

相关问题