天天看點

使用FindBugs-IDEA插件找到代碼中潛在的問題

我們通常都會在APP上線之後,發現各種錯誤,尤其是空指針異常,這些錯誤對于使用者體驗來說是非常不好的,但其實大部分的問題,我們都能夠提前發現.

在編寫代碼的過程中,可能不會時時刻刻記得檢查空的引用,還有删除沒有用過的變量,在我們自己測試的過程中可能難以發現問題,一旦app上線,使用者的使用環境改變,這些潛在的問題就可能會冒出來.

當然這這隻是對于我這種經常寫出空指針異常的小白而言的,程式設計風格良好,程式設計嚴謹的大神請忽略.

今天我介紹一個小插件,幫助我們提前找到這些潛在的問題,然後根據需要去修改.

第一步下載下傳插件,在AndroidStudio的File->Setting->Plugins->Browser Repositorise中搜尋FindBugs-IDEA.然後install.

使用FindBugs-IDEA插件找到代碼中潛在的問題

因為已經安裝過插件,是以install的按鈕已經消失了.

安裝成功後需要重新開機AS才可以使用.

使用FindBugs-IDEA插件找到代碼中潛在的問題

靜靜等待一會,在下方生成分析結果

使用FindBugs-IDEA插件找到代碼中潛在的問題

找到的bug太多,數量就不展示啦.

我來簡單介紹一下這幾類bug,當然有些你是可以忽略的.

1->Bad pratice程式設計的壞習慣

主要是命名問題,比如類名最好以大寫開頭,字元串不要使用等号不等号進行比較,可能會有異常最好用try-catch包裹的代碼,方法有傳回值但被忽略等等,這些如果不想改可以直接忽略.

2->Malicious code vulnerability 惡意代碼漏洞

聽起來很吓人呀,主要是一些屬性直接使用public讓别的類來擷取,建議改為private并為其提供get/set方法.

還有一些public的靜态字段,可能會被别的包擷取之類的.

這些也需要根據項目具體情況來,個人意見,在有的不重要類,有時直接公開使用屬性,可能更為便捷.如果你認為這些不需要修改,完全可以忽略.

3->Dodgy code 糟糕的代碼

·比如一個double/float被強制轉換成int/long可能會導緻精度損失,一些接近零的浮點數會被直接截斷,事實上我們應該保留.

這裡順便提一點,這兩天看了《app研發錄》,在規範代碼,盡量規避錯誤這方面我也有了一些收獲.

在類型轉換的時候,我們應該為類型轉換提供一個安全的轉換方法,因為我們永遠不會知道,我們的app在使用者手裡會發生什麼,是以我們要盡可能的去減少這種發生錯誤的可能.

·比如使用switch的時候沒有提供default。

·多餘的空檢查,就是不可能為空的值,增加了不為空判斷,這是沒有必要的。屬于代碼備援

·不安全的類型轉換等等。

這項太多了,就不一一列舉了。

4->performance 性能

主要是一些無用的代碼,比如聲明了沒有用到的屬性等等