在第一次使用findbugs時檢查出100多個Bad pratice,仔細一看原來全是R文件里面的類名首字母沒有大寫導致的。
於是只有自己在findbugs設置界面中添加過濾條件來忽略掉R文件。
在File-Settings-Other Settings-FindBugs IDEA的Filter中,在Exclude的那個框中點加號添加過濾文件,
注意文件類型不是java,也不是文件夾,而是xml文件,文件內容為過濾規則。
自己先寫了個過濾R文件的xml文件,然而並沒有想象中那么簡單。。
<?xml version="1.0" encoding="UTF-8"?> <FindBugsFilter> <Match> <Class name="com.work.checkpermission.R" /> </Match> </FindBugsFilter>
如果是過濾一些正常的類,如上語法是正確的,可能R文件比較特殊,這樣寫是無效的。
正確的過濾R文件的xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <FindBugsFilter> <Match> <Or> <Class name="~.*\.R\$.*"/> <Class name="~.*\.Manifest\$.*"/> </Or> </Match> </FindBugsFilter>
該xml無論什么名字,無論放在哪,只要添加進Exclude框中點擊ok即可。
同理,若想要篩選在哪些類中使用findbugs,可以指定相應規則然后添加到Include框中即可。
關於findbugs的filter文件內容的具體語法可參考網址:http://findbugs.sourceforge.net/manual/filter.html
這些規則可以是篩選/過濾類、方法、包、文件夾等等,全部可以自定義。
然后在使用findbugs過程中工程還報出了一個編譯錯誤:
Error:Gradle: failed to create directory '...'
...
> Failed to execute aapt
在查閱資料中發現這好像是Android Studio 3.0才有的錯誤,
解決方法是在gradle.properties文件的最后添加一行:android.enableAapt2=false
也可以嘗試使用工具欄Build-Clean Project清理項目,File-invalidate caches/restart清理緩存。