1. gzyueqian
      18529173453

      嵌入式開發(fā):靜態(tài)代碼分析器的7種用途

      更新時(shí)間: 2022-08-29 14:03:36來源: 粵嵌教育瀏覽量:8723

        標(biāo)準(zhǔn)C編譯器的一個(gè)問題是,它不尋找程序設(shè)計(jì)中的潛在缺陷,而只尋找其編碼中的缺陷。使用靜態(tài)代碼分析器有助于改進(jìn)固件并捕捉編譯器無法想象的問題。下面是每個(gè)嵌入式開發(fā)人員都應(yīng)該熟悉的靜態(tài)代碼分析器的七種用法。

        標(biāo)準(zhǔn)C編譯器在確定程序中編寫的代碼是否有效以及是否可以編譯成工作程序方面做得很好。但是它假設(shè),如果它能編譯代碼,那么一切都是好的。這仍然給錯(cuò)誤留下了很大的空間。當(dāng)按如下方式使用時(shí),靜態(tài)代碼分析器可能是一個(gè)非常有價(jià)值的工具。

        用途1——捕捉潛在的錯(cuò)誤

        靜態(tài)代碼分析器最廣為人知的用途之一是掃描軟件中的潛在問題和缺陷。這些問題包括從在switch情況下忘記break語句到潛在的緩沖區(qū)溢出。靜態(tài)代碼分析器具有發(fā)現(xiàn)軟件問題的能力,這些問題通常會(huì)被編譯器和審查代碼的工程師所忽略。在實(shí)現(xiàn)階段的早期建立一個(gè)靜態(tài)代碼分析器是一個(gè)很好的實(shí)踐,可以確保潛在的問題被立即處理,而不是在開發(fā)周期的后期。

        用途2——實(shí)施編碼標(biāo)準(zhǔn)

        使用編碼標(biāo)準(zhǔn)是確保軟件以一致和可讀的方式開發(fā)的好方法。編碼標(biāo)準(zhǔn)不僅會(huì)指定可讀性的問題,還可以用來實(shí)施最佳實(shí)踐。許多靜態(tài)代碼分析器支持的編碼標(biāo)準(zhǔn)的一個(gè)很好的例子是MISRA C。靜態(tài)代碼分析器可用于確保嵌入式開發(fā)人員沒有違反標(biāo)準(zhǔn)的大多數(shù)建議或最佳實(shí)踐(然而,一些規(guī)則需要視覺檢查,并且不能自動(dòng)確定合規(guī)性)。如果發(fā)生了違規(guī),靜態(tài)分析器將向開發(fā)人員報(bào)告違規(guī)情況,并采取糾正措施。使用靜態(tài)分析器來執(zhí)行編碼標(biāo)準(zhǔn)的結(jié)果是快速確定代碼是否遵循定義的標(biāo)準(zhǔn)。

        用途3——支持嚴(yán)格遵守ANSI-C標(biāo)準(zhǔn)

        關(guān)心編寫符合ANSI-C標(biāo)準(zhǔn)的可移植軟件的開發(fā)人員可以使用靜態(tài)分析器來確定是否使用了任何非標(biāo)準(zhǔn)語言功能。將分析器設(shè)置為“strict”將會(huì)確定感興趣的領(lǐng)域,在這些領(lǐng)域中,對(duì)不同編譯器或平臺(tái)的可移植性可能會(huì)成為一個(gè)問題。然后,開發(fā)人員可以檢查這些區(qū)域并改進(jìn)軟件,以更好地符合ANSI-C標(biāo)準(zhǔn),或者至少記錄軟件的哪些區(qū)域可能需要額外的移植工作。

        

        用途4——執(zhí)行強(qiáng)類型檢查

        C編程語言不支持強(qiáng)類型檢查。在C中,如果開發(fā)人員要?jiǎng)?chuàng)建自己的類型,編譯器將忽略新類型,而使用基礎(chǔ)C類型。

        用途5——提供尺寸檢查

        C編程語言無法提供任何類型的量綱分析來確保計(jì)算的一致性。然而,靜態(tài)代碼分析器可以執(zhí)行這些檢查,并確保千米不會(huì)意外地乘以英尺而產(chǎn)生錯(cuò)誤的結(jié)果。量綱分析的設(shè)置因工具而異,但這是開發(fā)人員應(yīng)該利用的一個(gè)重要特性。

        用途6——支持基本堆棧分析

        嵌入式開發(fā)人員了解最壞情況下的堆棧使用對(duì)于開發(fā)任何基于實(shí)時(shí)的嵌入式系統(tǒng)都至關(guān)重要。有許多方法可以分析和確定最壞情況下的堆棧使用情況,但是開始了解堆棧使用情況的一種方法是使用靜態(tài)代碼分析器。靜態(tài)分析器可以計(jì)算一個(gè)函數(shù)的堆棧使用和調(diào)用圖,以提供關(guān)于堆棧需要多深的基本感覺。靜態(tài)分析器工具還可以提供對(duì)程序函數(shù)如何使用以及它們是否被認(rèn)為是確定性的洞察。使用靜態(tài)分析器來了解堆棧使用情況和最壞情況函數(shù)是理解最壞情況堆棧分析的良好開端。

        用途7——輔助線程檢查

        靜態(tài)分析工具也可用于識(shí)別處理器上同時(shí)運(yùn)行的線程和任務(wù)的問題。例如,一個(gè)分析工具可以識(shí)別是否有任何與鎖定或解鎖互斥體相關(guān)的異常。線程檢查對(duì)于識(shí)別實(shí)時(shí)系統(tǒng)中的問題是非常有用的工具,但是這種分析的設(shè)置通常并不簡單。盡管如此,設(shè)置工作對(duì)于發(fā)現(xiàn)難以捉摸或異常的線程事件還是很有價(jià)值的。

        結(jié)論

        對(duì)于希望開發(fā)實(shí)時(shí)系統(tǒng)的嵌入式開發(fā)人員來說,靜態(tài)分析是一個(gè)無價(jià)的工具。靜態(tài)分析器的這七種用途只是許多可用分析工具中強(qiáng)大特性的幾個(gè)例子。使用靜態(tài)代碼分析器可以極大地提高代碼庫的質(zhì)量和健壯性,如果設(shè)置得當(dāng),甚至可以確保與眾所周知的或定制的編碼標(biāo)準(zhǔn)的一致性和一致性。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲激情视频欧美专区 | 亚洲性欧美在线se | 亚洲国产精品成电影 | 欧美日韩国产一区二区三区地区 | 天天一本大道久久 | 亚洲A∨精品一区二区三区导航 |