2010-07-30 114 views
11

FindBugs的報告這樣的:我可以告訴findbugs忽略我無法添加的類嗎?

findbugs: 
[findbugs] Executing findbugs from ant task 
[findbugs] Running FindBugs... 
[findbugs] The following classes needed for analysis were missing: 
[findbugs] com.company.OptionalClass 
[findbugs] Warnings generated: 11 
[findbugs] Missing classes: 2 
[findbugs] Calculating exit code... 
[findbugs] Setting 'missing class' flag (2) 
[findbugs] Setting 'bugs found' flag (1) 
[findbugs] Exit code set to: 3 
[findbugs] Java Result: 3 
[findbugs] Classes needed for analysis were missing 
[findbugs] Output saved to findbugs.xml 
BUILD SUCCESSFUL 

這OptionalClass來說,從我沒有源代碼,並且我不想要一個的FindBugs分析的第三方jar引用。它指的是我在我的課程路徑或其他任何地方沒有的課程。當我們的第三方jar以某種方式被配置時,這個類可能在某些情況下被使用。

有沒有辦法告訴findbugs忽略這個類?

請注意,它完成分析並生成findbugs.xml報告,所以這是一個小問題。

回答

3

出現此消息是因爲您的二進制類中的某個位置正在引用該類。這並不一定意味着FindBugs試圖分析com.company.OptionalClass來報告它;相反,它更可能是FindBugs分析它以獲取有關引用它的類的更多信息。

考慮您的一些源代碼,你要分析:

package my.actual.codebase; 
import com.some.third.party.stuff.OptionalClass; 

class ReferencesOptionalClass extends OptionalClass {} 

這種例子是很常見的測試類,例如參考[email protected],但JUnit jar不包含在你想要分析的內容中。

在上面的例子中,您確實需要ReferenceOptionalClass的結果,但爲了獲得它們,FindBugs的某些部分需要查看OptionalClass。如果它不能這樣做,因爲它不在那裏,它報告該類缺失[1]。當FindBugs無法找到該類時,它通常會中止它試圖執行的特定類型的分析,並繼續進行其餘分析而沒有問題。

簡單的答案是,如果你對FindBugs給你的分析級別感到滿意,那麼就忽略這個錯誤。

[1]請注意,這很可能是一個傳遞引用,即您的代碼包含A類,它在輔助JAR中引用B,然後引用OptionalClass。

1

不, 但是,如果將jar添加到findbugs項目文件的'auxillary jars'部分,則不需要源代碼或爲此代碼生成findbugs報告。

+0

我沒有編譯類的jar。 – 2010-08-02 04:03:47

1

要使用螞蟻任務,你的第三方jar是在classpath時忽略了第三方類,使用命令行的時候指定一個選項-auxclasspath classpath或提供嵌套元素<auxClasspath refid="classpath">

相關問題