Polyspace工具可幫助您識別軟件中的死代碼或執(zhí)行不到的代碼。這可以節(jié)省時(shí)間并降低與測試活動相關(guān)的成本,從而實(shí)現(xiàn)穩(wěn)健性和完整的代碼覆蓋度。Polyspace產(chǎn)品提供的有關(guān)軟件運(yùn)行時(shí)行為的詳細(xì)信息證明了死代碼的存在,并幫助您將控制和數(shù)據(jù)流跟蹤到潛在來源。這在遵守行業(yè)標(biāo)準(zhǔn)(如DO178B/C、ISO26262、IEC61508和IEC62304)時(shí)尤其重要。
死代碼是您的應(yīng)用中永遠(yuǎn)不會執(zhí)行的部分。常見的原因包括:
條件分支中的編程錯(cuò)誤
由于輸入數(shù)據(jù)永遠(yuǎn)不會導(dǎo)致執(zhí)行某個(gè)特定分支,代碼永遠(yuǎn)不會得到執(zhí)行
調(diào)試結(jié)構(gòu)和其他非功能代碼
針對不同運(yùn)行時(shí)情景而設(shè)計(jì)的可重用組件
您的應(yīng)用中存在死代碼可能導(dǎo)致嚴(yán)重的后果,因?yàn)樗赡苁请[藏錯(cuò)誤的根源。死代碼還意味著該代碼效率低下,因?yàn)樗鼤黾涌蓤?zhí)行文件的大小,這對于嵌入式應(yīng)用影響很大。還可能導(dǎo)致法律問題。
死代碼的簡單示例
此外,檢測死代碼的效率可能非常低,使用傳統(tǒng)的測試方法幾乎不可能檢測到。根據(jù)DO-178C的形式方法補(bǔ)充DO—333,“涉及‘始終/從不’的需求一般不能由一組有限的測試用例進(jìn)行驗(yàn)證,但可以通過形式分析進(jìn)行驗(yàn)證。”
使用測試實(shí)現(xiàn)完整代碼覆蓋率的成本
Polyspace產(chǎn)品可以幫助您找到死代碼,優(yōu)化測試周期,并縮短整個(gè)驗(yàn)證周期。
這非常重要,因?yàn)樗梢詼p少工程師試圖獲得100%代碼覆蓋率所花費(fèi)的時(shí)間,還可以節(jié)省測試時(shí)間和開發(fā)資源。這對于必須遵守像DO178B/C之類的標(biāo)準(zhǔn)的高度完整性和安全關(guān)鍵型應(yīng)用尤其如此。
DO-178B/ED-12B對死代碼和停用代碼的定義如下:
死代碼- 由于設(shè)計(jì)錯(cuò)誤而無法在目標(biāo)計(jì)算機(jī)環(huán)境的操作配置中執(zhí)行(代碼)或使用(數(shù)據(jù)),并且不能被追溯至系統(tǒng)或軟件需求的可執(zhí)行目標(biāo)代碼(或數(shù)據(jù))。一個(gè)例外是嵌入式標(biāo)識符。
停用代碼- 在設(shè)計(jì)上符合以下特征之一的可執(zhí)行目標(biāo)代碼(或數(shù)據(jù)):
不是為了執(zhí)行(代碼)或使用(數(shù)據(jù)),例如以前開發(fā)的軟件組件的一部分
僅在目標(biāo)計(jì)算機(jī)環(huán)境的特定配置中執(zhí)行(代碼)或使用(數(shù)據(jù)),例如由硬件引腳選擇或軟件編程的選項(xiàng)啟用的代碼
DO-178B/ED-12B的基本要求是刪除任何死代碼,并驗(yàn)證停用的代碼,證明它不會被意外激活。因此,測試的成本非常高。無論認(rèn)證要求如何,識別死代碼還是一個(gè)不錯(cuò)的開發(fā)實(shí)踐,因?yàn)檠芯勘砻鳎来a和停用代碼是隱藏缺陷和運(yùn)行時(shí)錯(cuò)誤的根源。Polyspace產(chǎn)品可以幫助您優(yōu)化測試周期,并縮短整個(gè)驗(yàn)證周期。
使用 Polyspace Bug Finder 識別執(zhí)行不到的代碼
即使在運(yùn)行單個(gè)測試用例之前,您也可以使用PolySpace代碼驗(yàn)證工具在模塊級或在完整的應(yīng)用中識別執(zhí)行不到的代碼。如下圖所示,使用Polyspace Bug Finder,您可以直接在IDE(如Eclipse)中檢測執(zhí)行不到的代碼部分。這還有助于您考慮任何此類死代碼對您的應(yīng)用的影響,從而使您能夠在第一時(shí)間做出更改。
使用 Polyspace Bug Finder 在 Eclipse IDE 內(nèi)直接在編譯階段識別死代碼
使用 Polyspace Code Prover 證明死代碼的存在
Polyspace Code Prover可讓您證明死代碼的存在,因?yàn)樗峁┝藬?shù)學(xué)證明方式,突出顯示某一段代碼,對于任何代碼路徑或者應(yīng)用中任何組合變量值,該段代碼均不執(zhí)行。憑借形式化方法和抽象解釋技術(shù),Polyspace Code Prover可以證明應(yīng)用中的死代碼,且誤報(bào)率幾乎為零。
在 Polyspace Code Prover 中證明死代碼的存在,其中包括導(dǎo)致該問題的原因的詳細(xì)信息
您可以使用詳細(xì)的檢查信息進(jìn)一步了解此類冗余的原因。它可能會揭示在需求捕獲中由于未識別或者未關(guān)聯(lián)任何測試用例而錯(cuò)過的需求。還可以使用能夠識別上下文驗(yàn)證參數(shù)范圍的數(shù)據(jù)范圍規(guī)范來識別死代碼和停用代碼。
代碼覆蓋率、代碼度量指標(biāo)和趨勢
代碼覆蓋率是一項(xiàng)指標(biāo),用于量化表示某個(gè)軟件應(yīng)用是否經(jīng)過全面測試并且包含錯(cuò)誤的機(jī)率較低。結(jié)構(gòu)化代碼覆蓋率主要用作一種度量,表示達(dá)到了足夠的測試的情況。由于不可能測試所有可能的運(yùn)行時(shí)場景,100%的代碼覆蓋率是指經(jīng)過測試已經(jīng)達(dá)到可接受水平的軟件。死代碼的存在使得不可能達(dá)到100%的代碼覆蓋率,并導(dǎo)致投入大量的時(shí)間和精力編寫不必要的測試用例。
Polyspace工具可產(chǎn)生并合成有用的代碼指標(biāo),準(zhǔn)確地反映代碼的質(zhì)量。這些指標(biāo)可以使用基于Web的儀表板查看。使用這一內(nèi)置功能,您可以訪問各種指標(biāo),如運(yùn)行時(shí)錯(cuò)誤、代碼復(fù)雜度,以及編碼違規(guī)。使用這些指標(biāo),您可以在從第一次迭代到最終交付版本的代碼進(jìn)化過程中跟蹤達(dá)到預(yù)定義的軟件質(zhì)量目標(biāo)的進(jìn)度。您還可以測量實(shí)施的任何代碼更改對代碼庫造成的增量影響,例如由于更改而引入任何死代碼。
在 Polyspace 基于 Web 的儀表板中跟蹤代碼質(zhì)量指標(biāo)
此外,Polyspace產(chǎn)品還可以很好地與代碼覆蓋工具集成,如可以導(dǎo)入Polyspace產(chǎn)品驗(yàn)證結(jié)果并使用這些結(jié)果補(bǔ)充代碼覆蓋解決方案的VectorCast。
-
嵌入式
+關(guān)注
關(guān)注
5141文章
19537瀏覽量
315018 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7241瀏覽量
91013 -
代碼
+關(guān)注
關(guān)注
30文章
4887瀏覽量
70259
發(fā)布評論請先 登錄
新能源車軟件單元測試深度解析:自動駕駛系統(tǒng)視角
如何操作時(shí)域網(wǎng)絡(luò)分析儀進(jìn)行故障檢測?
時(shí)域網(wǎng)絡(luò)分析儀如何檢測電纜故障?
【JVM開發(fā)者必看】IntelliJ IDEA代碼分析實(shí)踐指南:實(shí)時(shí)糾錯(cuò)、冗余檢測、自動修復(fù)等

深度解析:PCB死銅問題的根源與處理方法
國聯(lián)易安:“三管齊下”,惡意代碼輔助檢測“更高效”
synopsys 的design ware:DW_fpv_div,浮點(diǎn)數(shù)除法器,默認(rèn)32位下,想提升覆蓋率(TMAX),如果用功能case去提升覆蓋率呢?
汽車異構(gòu)硬件平臺開發(fā)如何進(jìn)行靜態(tài)代碼分析

利用靜態(tài)檢查工具完善功能安全中測試覆蓋率

如何使用Polyspace Code Prover來統(tǒng)計(jì)堆棧

2025年智能水表將覆蓋全北京!超聲波測量技術(shù)助力智能水表實(shí)現(xiàn)全天候高精度流量監(jiān)測

電導(dǎo)率的檢測方法有哪幾種
單元測試工具TESSY 新版本亮點(diǎn)速覽:提供測試駕駛艙視圖、超級覆蓋率、代碼訪問分析、增強(qiáng)覆蓋率審查

該如何提高代碼容錯(cuò)率、降低代碼耦合度?

評論