Polyspace工具可幫助您識別軟件中的死代碼或執(zhí)行不到的代碼。這可以節(jié)省時間并降低與測試活動相關(guān)的成本,從而實現(xiàn)穩(wěn)健性和完整的代碼覆蓋度。Polyspace產(chǎn)品提供的有關(guān)軟件運行時行為的詳細(xì)信息證明了死代碼的存在,并幫助您將控制和數(shù)據(jù)流跟蹤到潛在來源。這在遵守行業(yè)標(biāo)準(zhǔn)(如DO178B/C、ISO26262、IEC61508和IEC62304)時尤其重要。
死代碼是您的應(yīng)用中永遠(yuǎn)不會執(zhí)行的部分。常見的原因包括:
條件分支中的編程錯誤
由于輸入數(shù)據(jù)永遠(yuǎn)不會導(dǎo)致執(zhí)行某個特定分支,代碼永遠(yuǎn)不會得到執(zhí)行
調(diào)試結(jié)構(gòu)和其他非功能代碼
針對不同運行時情景而設(shè)計的可重用組件
您的應(yīng)用中存在死代碼可能導(dǎo)致嚴(yán)重的后果,因為它可能是隱藏錯誤的根源。死代碼還意味著該代碼效率低下,因為它會增加可執(zhí)行文件的大小,這對于嵌入式應(yīng)用影響很大。還可能導(dǎo)致法律問題。

死代碼的簡單示例
此外,檢測死代碼的效率可能非常低,使用傳統(tǒng)的測試方法幾乎不可能檢測到。根據(jù)DO-178C的形式方法補充DO—333,“涉及‘始終/從不’的需求一般不能由一組有限的測試用例進行驗證,但可以通過形式分析進行驗證。”

使用測試實現(xiàn)完整代碼覆蓋率的成本
Polyspace產(chǎn)品可以幫助您找到死代碼,優(yōu)化測試周期,并縮短整個驗證周期。
這非常重要,因為它可以減少工程師試圖獲得100%代碼覆蓋率所花費的時間,還可以節(jié)省測試時間和開發(fā)資源。這對于必須遵守像DO178B/C之類的標(biāo)準(zhǔn)的高度完整性和安全關(guān)鍵型應(yīng)用尤其如此。
DO-178B/ED-12B對死代碼和停用代碼的定義如下:
死代碼- 由于設(shè)計錯誤而無法在目標(biāo)計算機環(huán)境的操作配置中執(zhí)行(代碼)或使用(數(shù)據(jù)),并且不能被追溯至系統(tǒng)或軟件需求的可執(zhí)行目標(biāo)代碼(或數(shù)據(jù))。一個例外是嵌入式標(biāo)識符。
停用代碼- 在設(shè)計上符合以下特征之一的可執(zhí)行目標(biāo)代碼(或數(shù)據(jù)):
不是為了執(zhí)行(代碼)或使用(數(shù)據(jù)),例如以前開發(fā)的軟件組件的一部分
僅在目標(biāo)計算機環(huán)境的特定配置中執(zhí)行(代碼)或使用(數(shù)據(jù)),例如由硬件引腳選擇或軟件編程的選項啟用的代碼
DO-178B/ED-12B的基本要求是刪除任何死代碼,并驗證停用的代碼,證明它不會被意外激活。因此,測試的成本非常高。無論認(rèn)證要求如何,識別死代碼還是一個不錯的開發(fā)實踐,因為研究表明,死代碼和停用代碼是隱藏缺陷和運行時錯誤的根源。Polyspace產(chǎn)品可以幫助您優(yōu)化測試周期,并縮短整個驗證周期。
使用 Polyspace Bug Finder 識別執(zhí)行不到的代碼
即使在運行單個測試用例之前,您也可以使用PolySpace代碼驗證工具在模塊級或在完整的應(yīng)用中識別執(zhí)行不到的代碼。如下圖所示,使用Polyspace Bug Finder,您可以直接在IDE(如Eclipse)中檢測執(zhí)行不到的代碼部分。這還有助于您考慮任何此類死代碼對您的應(yīng)用的影響,從而使您能夠在第一時間做出更改。

使用 Polyspace Bug Finder 在 Eclipse IDE 內(nèi)直接在編譯階段識別死代碼
使用 Polyspace Code Prover 證明死代碼的存在
Polyspace Code Prover可讓您證明死代碼的存在,因為它提供了數(shù)學(xué)證明方式,突出顯示某一段代碼,對于任何代碼路徑或者應(yīng)用中任何組合變量值,該段代碼均不執(zhí)行。憑借形式化方法和抽象解釋技術(shù),Polyspace Code Prover可以證明應(yīng)用中的死代碼,且誤報率幾乎為零。

在 Polyspace Code Prover 中證明死代碼的存在,其中包括導(dǎo)致該問題的原因的詳細(xì)信息
您可以使用詳細(xì)的檢查信息進一步了解此類冗余的原因。它可能會揭示在需求捕獲中由于未識別或者未關(guān)聯(lián)任何測試用例而錯過的需求。還可以使用能夠識別上下文驗證參數(shù)范圍的數(shù)據(jù)范圍規(guī)范來識別死代碼和停用代碼。
代碼覆蓋率、代碼度量指標(biāo)和趨勢
代碼覆蓋率是一項指標(biāo),用于量化表示某個軟件應(yīng)用是否經(jīng)過全面測試并且包含錯誤的機率較低。結(jié)構(gòu)化代碼覆蓋率主要用作一種度量,表示達到了足夠的測試的情況。由于不可能測試所有可能的運行時場景,100%的代碼覆蓋率是指經(jīng)過測試已經(jīng)達到可接受水平的軟件。死代碼的存在使得不可能達到100%的代碼覆蓋率,并導(dǎo)致投入大量的時間和精力編寫不必要的測試用例。
Polyspace工具可產(chǎn)生并合成有用的代碼指標(biāo),準(zhǔn)確地反映代碼的質(zhì)量。這些指標(biāo)可以使用基于Web的儀表板查看。使用這一內(nèi)置功能,您可以訪問各種指標(biāo),如運行時錯誤、代碼復(fù)雜度,以及編碼違規(guī)。使用這些指標(biāo),您可以在從第一次迭代到最終交付版本的代碼進化過程中跟蹤達到預(yù)定義的軟件質(zhì)量目標(biāo)的進度。您還可以測量實施的任何代碼更改對代碼庫造成的增量影響,例如由于更改而引入任何死代碼。

在 Polyspace 基于 Web 的儀表板中跟蹤代碼質(zhì)量指標(biāo)
此外,Polyspace產(chǎn)品還可以很好地與代碼覆蓋工具集成,如可以導(dǎo)入Polyspace產(chǎn)品驗證結(jié)果并使用這些結(jié)果補充代碼覆蓋解決方案的VectorCast。
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20449瀏覽量
334077 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7335瀏覽量
94774 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73973
發(fā)布評論請先 登錄
半導(dǎo)體嵌入式單元測試的核心技術(shù)、工具選型與落地全流程
嵌入式軟件單元測試必要性與專業(yè)工具重要性的系統(tǒng)性專業(yè)研究報告
海爾智家借助MATLAB技術(shù)提高測試覆蓋率
芯片過熱導(dǎo)致鎖死?全自動燒錄機溫控系統(tǒng)的優(yōu)化實戰(zhàn)
芯片測試覆蓋率99%就夠了嗎?給DFT設(shè)計提個醒
汽車軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標(biāo)準(zhǔn)的單元測試體系重構(gòu)與中日實踐深度對比(2026學(xué)術(shù)研究報告)
嵌入式軟件單元測試中AI自動化與人工檢查的協(xié)同機制研究:基于專業(yè)工具的實證分析
分析嵌入式軟件代碼的漏洞-代碼注入
C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用
LED死燈原因到底有多少種?
FCT自動測試設(shè)備:電路板性能檢測利器
太陽光模擬器關(guān)鍵參數(shù) | 光譜匹配度、光譜覆蓋率及光譜偏離率
太陽光模擬器性能的影響參數(shù):光譜匹配度、光譜覆蓋率及光譜偏離率
如何操作時域網(wǎng)絡(luò)分析儀進行故障檢測?
【JVM開發(fā)者必看】IntelliJ IDEA代碼分析實踐指南:實時糾錯、冗余檢測、自動修復(fù)等
關(guān)于使用Polyspace進行死代碼檢測和覆蓋率度量的分析和介紹
評論