findbugs的使用

我們通常都會在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這個插件最主要的功能進行介紹,相信你能在使用過程中發現這個工具更多的用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章