2014-06-11 39 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

相關問題