1. 程式人生 > >使用FindBugs-IDEA外掛找到程式碼中潛在的問題

使用FindBugs-IDEA外掛找到程式碼中潛在的問題

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

在編寫程式碼的過程中,可能不會時時刻刻記得檢查空的引用,還有刪除沒有用過的變數,在我們自己測試的過程中可能難以發現問題,一旦app上線,使用者的使用環境改變,這些潛在的問題就可能會冒出來.
當然這這只是對於我這種經常寫出空指標異常的小白而言的,程式設計風格良好,程式設計嚴謹的大神請忽略.

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

第一步下載外掛,在AndroidStudio的File->Setting->Plugins->Browser Repositorise中搜索FindBugs-IDEA.然後install.
install-plugin


因為已經安裝過外掛,所以install的按鈕已經消失了.
安裝成功後需要重啟AS才可以使用.
use-plugin
靜靜等待一會,在下方生成分析結果

這裡寫圖片描述

找到的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 效能
主要是一些無用的程式碼,比如聲明瞭沒有用到的屬性等等

5->correctness 程式碼的正確性 這一項應該算是最重要的了
主要是沒有對變數進行不為空判定,在特殊情況可能發生空指標異常.

這篇文章還只是對FindBugs這個外掛最主要的功能進行介紹,相信你能在使用過程中發現這個工具更多的用法.