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