更快地投放市場的趨勢容易產(chǎn)生以下誤解:靜態(tài)分析只是發(fā)現(xiàn)錯(cuò)誤。軟件開發(fā)人員必須盡可能多地消除錯(cuò)誤,并會(huì)使用錯(cuò)誤快速發(fā)現(xiàn)工具,但很可能仍然存在一些錯(cuò)誤。這種做法對(duì)于非安全關(guān)鍵型應(yīng)用(如智能手機(jī)應(yīng)用)可能足夠了,但對(duì)于安全關(guān)鍵型應(yīng)用可能是不夠的。
因此,安全關(guān)鍵型應(yīng)用需要更嚴(yán)格的方法來驗(yàn)證安全性和穩(wěn)健性,這就是靜態(tài)分析可以帶來的其他好處。在本文中,我們將消除靜態(tài)分析只是發(fā)現(xiàn)錯(cuò)誤這一誤解,并證明它可以幫助驗(yàn)證是否符合編碼標(biāo)準(zhǔn),生成有關(guān)代碼質(zhì)量的指標(biāo),并可以在軟件開發(fā)的任何階段使用。
毫無疑問,發(fā)現(xiàn)錯(cuò)誤肯定是靜態(tài)代碼分析的一個(gè)重要方面。但是,靜態(tài)分析技術(shù)的范圍廣泛,從簡單的語法檢查或基于啟發(fā)式的方法,到基于形式化方法的高級(jí)驗(yàn)證,不一而足。
這一范圍還體現(xiàn)在市場上各種各樣的靜態(tài)分析工具。例如,一些高級(jí)編譯器有一個(gè)采用靜態(tài)分析形式的內(nèi)置語法檢查器。在該范圍的另一端是基于形式化方法的工具,如可以執(zhí)行語義分析的 Polyspace,為您的軟件提供詳細(xì)的運(yùn)行行為。
Polyspace Bug Finder 是一種可以幫助發(fā)現(xiàn)錯(cuò)誤的靜態(tài)分析工具,但它還可用于:
檢查您的軟件是否符合編碼標(biāo)準(zhǔn),如 MISRA C/C++、JSF++ 和自定義規(guī)則
生成代碼度量指標(biāo)以幫助您改進(jìn)代碼質(zhì)量。
此外,使用 Polyspace Code Prover,您還可以證明您的軟件不會(huì)由于特定類型的關(guān)鍵運(yùn)行時(shí)錯(cuò)誤而崩潰。
因此,這些工具已經(jīng)超出了簡單的錯(cuò)誤發(fā)現(xiàn),在驗(yàn)證和確認(rèn)過程中非常有價(jià)值。例如,下圖中的代碼是形式驗(yàn)證的結(jié)果,該結(jié)果確認(rèn)在任何運(yùn)行條件下都不會(huì)發(fā)生溢出錯(cuò)誤:
如前所述,您可以使用靜態(tài)分析來檢查您的代碼是否符合特定的編碼準(zhǔn)則或標(biāo)準(zhǔn),從而避免使用不安全或不可靠的結(jié)構(gòu)。它還可以幫助您捕捉表明代碼質(zhì)量的關(guān)鍵指標(biāo),如圈復(fù)雜度、執(zhí)行不到的代碼、使用共享全局變量和遞歸 、省去編寫測試用例的開銷。這些指標(biāo)可以幫助您找出設(shè)計(jì)問題,例如可能最終影響軟件性能和可靠性的代碼架構(gòu)。
使用非初始化變量或不受保護(hù)的共享變量可能在特定的測試用例中顯示意想不到的結(jié)果。然后,您可能會(huì)承擔(dān)調(diào)試任務(wù),花費(fèi)大量的時(shí)間試圖找出問題所在。更糟糕的是,由于此類運(yùn)行時(shí)錯(cuò)誤的不可預(yù)知性,這些缺陷可能不會(huì)在測試過程中顯示出來。
靜態(tài)分析更為廣泛的優(yōu)勢并不廣為人知,因此它在軟件開發(fā)工作流程的后期才被采用。因?yàn)樗缓唵蔚卣J(rèn)為是一種發(fā)現(xiàn)錯(cuò)誤的方法,所以它通常在軟件開發(fā)的最后階段才被采用(例如,靜態(tài)分析是質(zhì)量工程團(tuán)隊(duì)發(fā)布代碼之前的最后一關(guān))。超過90%的潛在客戶在進(jìn)入了項(xiàng)目的結(jié)束階段后才與我們聯(lián)系,了解我們的靜態(tài)分析解決方案。
但是,如果您想利用上面討論的所有優(yōu)勢,則應(yīng)在開發(fā)的早期階段引入靜態(tài)分析。實(shí)際上,使用編譯器就是一個(gè)這樣的例子,因?yàn)榫幾g器是一個(gè)非常簡單的靜態(tài)分析工具,可幫助開發(fā)代碼的語法和語義。研究發(fā)現(xiàn),盡早發(fā)現(xiàn)和修復(fù)編碼錯(cuò)誤可以獲得顯著的成本效益。還可以縮短您所開發(fā)軟件所需的測試時(shí)間。因此,靜態(tài)分析在早期引入您的工作流非常重要,它遠(yuǎn)不是簡單地識(shí)別錯(cuò)誤。
-
代碼
+關(guān)注
關(guān)注
30文章
4808瀏覽量
68816 -
編譯器
+關(guān)注
關(guān)注
1文章
1639瀏覽量
49198 -
靜態(tài)分析
+關(guān)注
關(guān)注
1文章
41瀏覽量
3898
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論