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