如何解決積壓的靜態(tài)分析警告和技術(shù)債務(wù)
在將靜態(tài)分析工具集成到開發(fā)團(tuán)隊(duì)的日常工作流中之后,下一階段將致力于減少項(xiàng)目中的警告和技術(shù)債務(wù)積壓。
對于正在維護(hù)或開發(fā)中的產(chǎn)品,可能有大量待處理的待辦事項(xiàng)。對于未開發(fā)項(xiàng)目(請參閱我的靜態(tài)分析系列的第一篇文章,以了解這些不同項(xiàng)目階段的討論:不會使團(tuán)隊(duì)不知所措的靜態(tài)分析入門方法),積壓的次數(shù)更少,盡管對于每個(gè)成熟階段的建議都相同。
處理積壓的警告的最佳起點(diǎn)是根據(jù)期望的結(jié)果對結(jié)果進(jìn)行優(yōu)先級排序和篩選。以安全性為例,根據(jù)安全性警告按重要性對優(yōu)先級進(jìn)行排序是有意義的。這是首次將靜態(tài)分析引入項(xiàng)目時(shí)使用的方法的延續(xù),但現(xiàn)在的重點(diǎn)是團(tuán)隊(duì)可以分析的下一組易消化的警告。這將由Parasoft C/C++test通過多種方式處理,我們將在下面介紹。
用于高級分析的儀表板
Parasoft的集中式報(bào)告和分析儀表板使開發(fā)人員和管理人員能夠從各種角度查看項(xiàng)目的當(dāng)前狀態(tài),并在需要的地方進(jìn)一步導(dǎo)航到更多詳細(xì)信息,以建立一組警告以進(jìn)行進(jìn)一步調(diào)查??紤]以下儀表板,該儀表板顯示了項(xiàng)目當(dāng)前符合CERT C編碼標(biāo)準(zhǔn):
圖1:Web門戶儀表板的示例。在這種情況下,符合CERT C合規(guī)性簡介。
使用此Web門戶,用戶可以更深入地進(jìn)行分析,并根據(jù)需要深入到文件和代碼級別,并完全在Web門戶或IDE中調(diào)查警告。在此階段,可以對警告進(jìn)行優(yōu)先級排序,將其分配給開發(fā)人員,禁止其顯示或標(biāo)記為誤報(bào)。請參閱Parasoft資源管理器中的以下示例:
圖2:Parasoft違規(guī)資源管理器
管理違反編碼標(biāo)準(zhǔn)
在大多數(shù)情況下,在分析源代碼標(biāo)準(zhǔn)合規(guī)性時(shí),將違反情況報(bào)告為靜態(tài)分析警告。在大型項(xiàng)目中,最初會有很多警告,因此快速有效地對其進(jìn)行管理至關(guān)重要。 Parasoft的違規(guī)資源管理器是導(dǎo)航、評估、確定優(yōu)先級并分配報(bào)告的錯(cuò)誤進(jìn)行補(bǔ)救的關(guān)鍵工具。如果發(fā)現(xiàn)違反靜態(tài)分析規(guī)則是有效但合理的,被認(rèn)為是無害的,或者不適用,則開發(fā)人員可以抑制該錯(cuò)誤,并可以記錄偏差。這些偏差會在項(xiàng)目的每個(gè)級別上報(bào)告給儀表板和合規(guī)性文檔。
為了使編碼標(biāo)準(zhǔn)合規(guī)性適用于現(xiàn)有項(xiàng)目,至關(guān)重要的是,團(tuán)隊(duì)?wèi)?yīng)首先關(guān)注必須被視為強(qiáng)制性的規(guī)則。遵從性通常是基于滿足強(qiáng)制性要求的,如果有適當(dāng)?shù)淖C明,則會違反建議的規(guī)則。標(biāo)準(zhǔn)允許對規(guī)則進(jìn)行重新分類(如果不是強(qiáng)制性的),如果有正當(dāng)理由并記錄在案,則允許違反。沒有這個(gè),試圖糾正每種違規(guī)行為將變得不可行。
Parasoft通過為管理人員提供一個(gè)可導(dǎo)航界面來瀏覽違規(guī)行為,并在需要時(shí)自動(dòng)生成報(bào)告以提供認(rèn)證證據(jù),從而為用戶節(jié)省了許多額外的工作時(shí)間。MISRA C偏差報(bào)告的示例如下所示:
圖3:示例Parasoft MISRA C偏差報(bào)告
管理錯(cuò)誤和安全警告的待辦事項(xiàng)
對于采用靜態(tài)分析的團(tuán)隊(duì)來說,了解不必修正或分析所有警告非常重要。并非所有警告都相等,因此,嚴(yán)重性級別是調(diào)查和修復(fù)警告應(yīng)投入多少精力的最佳指示。繼續(xù)本系列第一篇文章中討論的“沙中線”方法,當(dāng)深入研究積壓的警告時(shí),我們每次都有效地將沙中線移得更遠(yuǎn)。
Parasoft Jtest和Parasoft C/C++test使用戶可以使用配置在IDE中對警報(bào)進(jìn)行優(yōu)先級排序和過濾。例如,嚴(yán)重性和類別(警告類型,例如與安全相關(guān)的警告)可用于創(chuàng)建一組適合分析的警告。新用戶配置示例如下所示:
圖4:IDE中的自定義測試配置設(shè)置
此配置可用于過濾IDE中的警告:
圖5:可以在IDE的DTP Findings視圖中選擇配置
逐步移動(dòng)“界線”以解決下一個(gè)最高優(yōu)先級和類別是處理大量警告的最佳方法。 最終,由于時(shí)間和預(yù)算的原因,達(dá)到了一個(gè)臨界點(diǎn),但是軟件團(tuán)隊(duì)?wèi)?yīng)該感到安心,盡管仍有大量積壓的警告,但他們在質(zhì)量和安全性方面已取得了顯著改善。
總結(jié)
在大型項(xiàng)目中,最初會有很多警告,因此快速有效地對其進(jìn)行管理至關(guān)重要。對于采用靜態(tài)分析的團(tuán)隊(duì)來說,了解不必修復(fù)或分析所有警告非常重要,但是請確保選擇一種工具,該工具可讓您瀏覽、評估、確定優(yōu)先級并分配報(bào)告的錯(cuò)誤以進(jìn)行補(bǔ)救。逐步移動(dòng)“界線”以解決下一個(gè)最高優(yōu)先級和類別是處理大量警告的最佳方法。