靜態分析 Static analysis
如果你在使用一種靜態類型語言,你就有一種隔離和發現某幾類bug的強大手段----這些bug通過代碼評審或是別的傳統方式很難發現。靜態分析(Static Analysis)就是用軟件工具對程序代碼進行驗證的機制,通過它可以找出其中存在的已知的bug模式。
靜態分析工具大致分為兩類:對編譯結果(class文件 或是字節碼)進行分析,或對源代碼進行分析。
字節碼分析:
字節碼分析的目標是在編譯后的代碼中找出已知的bug模式。首先,人們已經對某些語言進行了足夠的研究。以至于能夠從編譯后的字節碼中找到一些常見的bug模式。這個工具不能找出所有的bug。。
字節碼分析,能夠大概找到以下類型的bug
正確性 可能是邏輯錯誤的地方
不良實踐 違反基本編碼實踐
迷惑 難懂的代碼,奇怪的方法,反常的做法,糟糕的代碼
源代碼分析
源代碼分析,能大概找到以下類型的bug
可能的bug 空的try catch
dead code 沒有被用到的本地變量、參數和私有變量等。
欠優化的代碼 無節制的字符串操作
過于復雜的表達式 以復制黏貼的方式來復用代碼
重復代碼