博客
希望我們能(néng)與您分享和探讨成(chéng)長(cháng)中的點點滴滴
靜态代碼分析是如何工作的
分享到
了解靜态代碼分析是如何工作的,可以幫助您更輕松地提高質量,并在不犧牲速度的情況下遵守編碼規範。在這(zhè)裡(lǐ),我們將(jiāng)闡釋靜态代碼分析是如何工作的。
本文將(jiāng)包含如下幾個部分:
• 軟件測試中的靜态分析
• 靜态代碼分析是如何工作的
• 靜态代碼分析示例
• Perforce靜态代碼分析工具如何提供幫助
軟件測試中的靜态分析
靜态分析在軟件測試開(kāi)始之前發(fā)揮著(zhe)關鍵的作用。靜态分析會(huì)确保您傳遞給測試的代碼是最高質量的。而且,如果您選擇了合适的靜态分析工具,開(kāi)發(fā)流程將(jiāng)會(huì)加快。
靜态分析能(néng)發(fā)現什麼(me)
靜态分析在您運行程序之前就(jiù)能(néng)發(fā)現代碼中潛在的質量問題。
這(zhè)些問題包括:
• 編程錯誤
• 違反編碼規範
• 安全漏洞
靜态分析工具特别擅長(cháng)發(fā)現諸如緩沖區溢出、内存洩漏和空指針之類的編碼問題。
靜态分析可以幫助開(kāi)發(fā)團隊學(xué)習最佳編碼實踐,這(zhè)有助于您長(cháng)期提高代碼質量。
靜态分析不能(néng)識别什麼(me)
有些問題是靜态分析無法識别的。例如,靜态分析無法檢測出軟件需求是否已經(jīng)滿足,也無法識别出某個函數將(jiāng)如何執行。您需要對(duì)此進(jìn)行動态測試。
這(zhè)就(jiù)是爲什麼(me)靜态分析和動态測試是互補的。靜态分析可以在早期檢測出代碼中的錯誤,這(zhè)确保了産品進(jìn)入測試階段的時(shí)候的高質量。而且,因爲通過(guò)這(zhè)種(zhǒng)方式确保了測試流程更高效,靜态分析還(hái)加速了整個研發(fā)周期。
靜态代碼分析是如何工作的
下面(miàn)是靜态代碼分析的工作原理。
1. 編寫代碼
您的第一步是編寫代碼。
2. 運行靜态代碼分析工具
接下來,在代碼上運行靜态代碼分析工具。該工具將(jiāng)根據預先定義的編碼規則檢查代碼。這(zhè)些預先定義的編碼規則可能(néng)來自編碼規範,也可能(néng)是您的團隊開(kāi)發(fā)的内部編碼規則。
3. 審查結果
靜态代碼分析工具將(jiāng)識别不符合編碼規則的代碼。然後(hòu),您可以審查結果。可能(néng)會(huì)有誤報需要排除,有些問題會(huì)比其他問題更加嚴重需要盡快修複。一些靜态代碼分析工具,比如Helix QAC和Klocwork,將(jiāng)爲您确定問題的優先級。
4. 修複需要修複的問題
接下來,您將(jiāng)修複需要修複的問題。從最關鍵的部分開(kāi)始。然後(hòu)繼續修複列表中的其他問題。
5. 繼續測試
一旦您解決了代碼中的問題,就(jiù)可以進(jìn)入下一個開(kāi)發(fā)階段。您也可以重新開(kāi)始這(zhè)個流程。
靜态代碼分析示例
Helix QAC和Klocwork用于多個行業提供最精确的靜态分析結果,30多年來一直是值得信賴的靜态代碼分析工具,可以幫助您比其他工具更準确地發(fā)現代碼中的缺陷。您可以随時(shí)分析和修複代碼。使用Helix QAC或Klocwork是确保您的代碼符合ISO标準的最佳方式。
以下是一個靜态代碼分析的示例。
選擇編碼規範(如适用)
您可以在Helix QAC或Klocwork中添加一個合規模塊,以輕松地遵守編碼規範。MISRA、AUTOSAR和CERT是一些常見的編碼規範,您也可以使用自己的内部編碼規則。
創建您的項目
在運行分析之前,您需要創建一個新項目。在這(zhè)裡(lǐ),您可以選擇一種(zhǒng)編程語言(C, C++, C#, Java或JavaScript)。
然後(hòu),您將(jiāng):
1. 配置項目的設置以匹配編譯器的設置。這(zhè)可以确保您的分析能(néng)夠順利而準确地運行。Helix QAC和Klocwork也可以針對(duì)不同的編譯器進(jìn)行優化。
2. 同步您的項目。這(zhè)將(jiāng)指定靜态分析工具分析哪個源文件和頭文件。
分析您的項目
您可以在構建項目之時(shí)或之後(hòu)開(kāi)始分析項目。分析項目可以通過(guò)腳本、命令或點擊按鈕來完成(chéng)。
Helix QAC和Klocwork還(hái)能(néng)與Microsoft Visual Studio和Eclipse相集成(chéng)。因此,您可以在不離開(kāi)集成(chéng)開(kāi)發(fā)環境(IDE)的情況下分析文件。
審查違規情況
您將(jiāng)看到與您的項目相關聯的文件和文件夾。當您選擇一個文件時(shí),您將(jiāng)看到分析結果。如果一行代碼旁邊有一個泡泡圖标,這(zhè)意味著(zhe)該行代碼存在診斷信息。您可以點擊泡泡來查看違規情況。
您還(hái)可以使用診斷窗口來篩選結果。隻需點擊診斷信息,就(jiù)可以看到代碼中哪裡(lǐ)出現了違規情況。
根據嚴重度篩選
根據代碼的性質,您可能(néng)會(huì)得到數百甚至數千條診斷信息。您可以使用嚴重度篩選器來确定您需要處理的問題的優先級。嚴重度級别可針對(duì)您的團隊進(jìn)行定制。
您還(hái)可以按規則篩選診斷信息。如果您有一個(或多個)對(duì)産品更重要的規則,這(zhè)樣(yàng)的功能(néng)是很有幫助的。
抑制您無法修複的違規情況
如果您發(fā)現了您不打算修複的一條診斷信息或一種(zhǒng)診斷類型,您可以加以抑制。您可以配置抑制的範圍以滿足您的需要。您還(hái)可以添加偏差标記。這(zhè)些是用來記錄您抑制診斷的原因。這(zhè)對(duì)合規而言很重要。
完全不抑制某些規則或診斷是很難的,因爲每個人通常都(dōu)需要抑制一些規則,特别是當涉及到遺留代碼時(shí)。
編輯您的代碼
您可以選擇在靜态分析工具或集成(chéng)開(kāi)發(fā)環境(IDE)中編輯代碼。隻需修複代碼,保存文件,然後(hòu)重新分析文件。如果診斷信息消失,則問題已得到修複。
評審代碼度量指标
您也可以使用web儀表盤來檢查Helix QAC或Klocwork的代碼度量指标。例如,您可以查看圈複雜度這(zhè)個指标的曆史記錄。這(zhè)將(jiāng)使您了解代碼的複雜度是如何随時(shí)間而變化的。過(guò)于複雜的代碼很難維護。
試用Helix QAC或Klocwork進(jìn)行靜态代碼分析
您可以親自體驗一下,就(jiù)明白爲什麼(me)Helix QAC和Klocwork這(zhè)兩(liǎng)款靜态代碼分析工具受到業界的信賴長(cháng)達30多年。若想了解Helix QAC和Klocwork將(jiāng)如何幫助您分析代碼,立刻注冊申請免費試用吧。