1. gzyueqian
      13352868059

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

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

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

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

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

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

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

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

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

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

        

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

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

        用途5——提供尺寸檢查

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

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

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

        用途7——輔助線程檢查

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

        結(jié)論

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

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

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

      
      

      1. 性饥渴少妇推油按摩 | 日韩字幕一中文在线综合 | 三级日本久久高清 | 日本又黄又湿又高潮不卡网站 | 久草视频免费在线观看 | 亚洲欭美日韩颜射在线二 |