我需要爲findbugs ant腳本設置一個過濾器文件,該腳本只掃描src/*文件而不掃描test/*文件。FindBugs過濾器文件忽略JUnit測試
什麼是語法檢查所有類,而忽略名稱中的'測試'的任何文件名或包名稱?
我需要爲findbugs ant腳本設置一個過濾器文件,該腳本只掃描src/*文件而不掃描test/*文件。FindBugs過濾器文件忽略JUnit測試
什麼是語法檢查所有類,而忽略名稱中的'測試'的任何文件名或包名稱?
FindBugs實際上是掃描編譯後的類文件,而不是sourcePath
。如果你正在編譯你的src/*和test/*文件到不同的目錄,你可以使用嵌套的<class...>
元素。
<findbugs home="${findbugs.dir}" output="xml:withMessages"
outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M"
effort="max" projectName="${ant.project.name}"
auxClasspathRef="findbugs.classpath"
sourcePath="${src.dir}">
<class location="${src.classes.dir}"/>
</findbugs>
如果src/*和test/*都被編譯到一個目錄中,那麼這將不起作用。在這種情況下,請使用filter file並排除與測試對應的軟件包或類名稱。
<findbugs home="${findbugs.dir}" output="xml:withMessages"
outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M"
effort="max" projectName="${ant.project.name}"
auxClasspathRef="findbugs.classpath"
sourcePath="${src.dir}"
excludefilter="exclude.xml">
<class location="${classes.dir}"/>
</findbugs>
其中exclude.xml
樣子:
<FindBugsFilter>
<Match>
<Class name="~.*Test$"/>
</Match>
<Match>
<Package name="~test\..*"/>
</Match>
</FindBugsFilter>
順便說一句,這是一個好主意覆蓋單元測試與FindBugs的爲好。沒有理由使用低質量的標準進行測試。測試中的錯誤就是這樣,錯誤。
當然,如果你第一次運行FindBugs,可能會有很多bug報告,但是如果你注意到它們的話bug數量會隨着時間的推移而降低。
與此相關的問題是您在單元測試中測試錯誤情況(例如,將null標記爲標記@Nonnull的參數) – 2012-09-20 10:55:41
很好的解釋...顯然我需要開始喝咖啡或什麼的。刪除了我的答案,這是正確的誤導。 – TofuBeer 2009-04-16 16:35:14