發(fā)布時間:2020-07-14
通常,代碼檢查很重要,原因有三:
避免低級bug:一些常見代碼問題,如果在編譯或運行前不能及時發(fā)現(xiàn),代碼中的語法問題會直接導(dǎo)致編譯或運行時錯誤,影響開發(fā)效率和代碼質(zhì)量;
統(tǒng)一代碼習(xí)慣:每一個團(tuán)隊或個人都會有一些代碼規(guī)范或者代碼習(xí)慣,為了便于后期維護(hù)和閱讀,我們編寫的代碼也需要符合一定的格式規(guī)范;
保證線上代碼質(zhì)量:在版本管理中,我們需要在提交或發(fā)布之前自動執(zhí)行一些代碼檢查工作,確保我們的代碼符合最終版本要求。
靜態(tài)掃描就是不運行程序,通過掃描源代碼的方式檢查漏洞,常見的方法也有多種:
如把源代碼生成 AST(抽象語法樹)后對 AST 進(jìn)行分析,找出用戶可控變量的使用過程是否流入到了危險函數(shù),從而定位出漏洞;
或者通過正則規(guī)則來匹配源代碼,根據(jù)平常容易產(chǎn)生漏洞的代碼定制出規(guī)則,把這些規(guī)則代入到代碼中進(jìn)行驗證來定位漏洞。
當(dāng)然靜態(tài)掃描由于不運行程序也有好多事情處理不了,如程序通過運算得到的一個結(jié)果后,就沒辦法分析這個結(jié)果了,所以需要動態(tài)運行程序來解決這個問題,也就是動態(tài)掃描,動態(tài)掃描可以通過單元測試或人工掃描等方式。
靜態(tài)代碼分析是指無需運行被測代碼,通過詞法分析、語法分析、控制流、數(shù)據(jù)流分析等技術(shù)對程序代碼進(jìn)行掃描,找出代碼隱藏的錯誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現(xiàn)的空指針引用等等。統(tǒng)計證明,在整個軟件開發(fā)生命周期中,30% 至 70% 的代碼邏輯設(shè)計和編碼缺陷是可以通過靜態(tài)代碼分析來發(fā)現(xiàn)和修復(fù)的。
在軟件項目開發(fā)過程中,因為其為編譯執(zhí)行語言,語言規(guī)則要求較高,開發(fā)團(tuán)隊往往要花費大量的時間和精力發(fā)現(xiàn)并修改代碼缺陷。所以 靜態(tài)代碼分析工具能夠幫助開發(fā)人員快速、有效的定位代碼缺陷并及時糾正這些問題,從而極大地提高軟件可靠性并節(jié)省開發(fā)成本。
靜態(tài)代碼分析工具的優(yōu)勢 :
自動執(zhí)行靜態(tài)代碼分析,快速定位代碼隱藏錯誤和缺陷。
幫助代碼設(shè)計人員更專注于分析和解決代碼設(shè)計缺陷。
減少在代碼人工檢查上花費的時間,提高軟件可靠性并節(jié)省開發(fā)成本。
下面主要介紹一下:澤眾推出的代碼分析工具CA,CA支持對源代碼進(jìn)行解析,得到代碼的控制流程圖,通過對流程圖進(jìn)行代碼走查,實現(xiàn)代碼級的測試覆蓋,輕松實現(xiàn)XUnit單元測試模塊的構(gòu)建。CA還可以通過時間設(shè)定,只檢驗更新的代碼,提高效率。
推薦閱讀:
什么情況下需要進(jìn)行靜態(tài)程序分析?常用Java靜態(tài)代碼分析工具的優(yōu)勢
代碼審查和代碼走查的區(qū)別及代碼審查在軟件開發(fā)生命周期中的作用
電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報價)。
您的信息已成功提交!
我們的客服人員稍后會與您聯(lián)系