0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

靜態(tài)分析中的自動(dòng)執(zhí)行是否提供所需

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Fulvio Baccaglini ? 2022-09-10 15:26 ? 次閱讀

軟件開發(fā)活動(dòng)應(yīng)包括源代碼審查,以提高軟件質(zhì)量并防止或消除軟件缺陷,靜態(tài)分析工具可以自動(dòng)化該活動(dòng)的重要部分,同時(shí)降低其成本。代碼審查通?;诙x應(yīng)識(shí)別和糾正哪些違規(guī)或缺陷的編碼標(biāo)準(zhǔn)和/或檢查表進(jìn)行。

尤其是 C 語言,編碼標(biāo)準(zhǔn)的流行示例是 MISRA C 和 CERT C,它們分別提供了增強(qiáng)安全性和安全性的指南(盡管這兩個(gè)范圍之間存在一些重疊)。MISRA C 指南的制定特別關(guān)注其靜態(tài)分析的可執(zhí)行性,這反映在可以自動(dòng)實(shí)現(xiàn)的大量執(zhí)行中。

但是,有兩個(gè)不可避免的限制阻礙了全自動(dòng)執(zhí)行:

1. 在某些情況下,將靜態(tài)分析器完全執(zhí)行準(zhǔn)則所需的所有信息形式化是不切實(shí)際的或不可能的。

2. 對(duì)于某些準(zhǔn)則,即使所有信息都可用于算法,即使算法可以擴(kuò)展以清除任何特定的假陽性或假陰性。

最新版本的 MISRA C (2012) 中,這些限制反映在指南的分類中。當(dāng)可以提供足夠的信息時(shí),將指南歸類為規(guī)則;否則,它被歸類為指令。當(dāng)可以構(gòu)造通用算法時(shí),將規(guī)則分類為可判定的;否則,它被歸類為不可判定。

指南有不同的優(yōu)先級(jí)和不同的范圍,但為了初步了解自動(dòng)執(zhí)行的潛在程度,159 條指南分為 16 條指令、27 條不可判定規(guī)則和 116 條可判定規(guī)則。

指令的一個(gè)示例是所有代碼都應(yīng)可追溯至文件化要求。在這種情況下,僅向靜態(tài)分析器提供整個(gè)源代碼和用于構(gòu)建應(yīng)用程序的編譯器配置是不夠的。首先,將任何重要的要求形式化是不切實(shí)際的或不可能的。

可判定規(guī)則的一個(gè)示例是不應(yīng)使用#undef。在這種情況下,可以構(gòu)造一個(gè)算法來掃描任何源代碼并報(bào)告所有出現(xiàn)和僅出現(xiàn)#undef 預(yù)處理指令的情況。

不可判定規(guī)則的一個(gè)例子是項(xiàng)目不應(yīng)包含無法訪問的代碼。你能想象一個(gè)算法可以精確識(shí)別任何項(xiàng)目中所有無法訪問的代碼實(shí)例嗎?

不可判定性可能是一個(gè)相當(dāng)不直觀的概念。軟件開發(fā)人員通常會(huì)面臨一系列需要解決的問題,從微不足道到不可能,其中可以實(shí)現(xiàn)的限制通常由熟悉的因素決定,例如缺乏信息、問題過于復(fù)雜、資源消耗急劇增加域范圍等

除了所有這些因素之外,編碼標(biāo)準(zhǔn)的自動(dòng)執(zhí)行(或任何其他自動(dòng)檢測軟件缺陷的非正式方式)涉及構(gòu)建原則上可以自我分析的算法,這會(huì)引入一個(gè)循環(huán)性,如果一個(gè)額外的基本限制會(huì)導(dǎo)致一個(gè)悖論 - undecidability - 不妨礙構(gòu)建一個(gè)健全和完整的分析儀。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7613

    瀏覽量

    137240
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4808

    瀏覽量

    68808
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    自動(dòng)點(diǎn)焊溫度分析儀在工業(yè)應(yīng)用的精準(zhǔn)控制與分析

    自動(dòng)點(diǎn)焊溫度分析儀是現(xiàn)代工業(yè)生產(chǎn)中不可或缺的工具之一,尤其在焊接領(lǐng)域,其精準(zhǔn)控制與分析能力對(duì)于確保產(chǎn)品質(zhì)量和提高生產(chǎn)效率具有重要意義。隨著科技的發(fā)展,自動(dòng)點(diǎn)焊溫度
    的頭像 發(fā)表于 01-04 09:32 ?102次閱讀

    自動(dòng)零件分析儀的原理和應(yīng)用

    、自動(dòng)控制技術(shù)和數(shù)據(jù)處理技術(shù)。其主要由進(jìn)樣系統(tǒng)、分析系統(tǒng)和數(shù)據(jù)處理系統(tǒng)三部分組成。 進(jìn)樣系統(tǒng):負(fù)責(zé)將待測零件或樣品送入分析系統(tǒng)。這一系統(tǒng)通常通過泵、閥等組件將樣品從樣品容器抽取并送入
    發(fā)表于 12-23 15:22

    FPGA基礎(chǔ)知識(shí)及設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具

    本文將首先介紹FPGA的基礎(chǔ)知識(shí),包括FPGA的工作原理以及為什么要使用FPGA等,然后討論設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具。
    的頭像 發(fā)表于 11-11 11:29 ?1056次閱讀
    FPGA基礎(chǔ)知識(shí)及設(shè)計(jì)和<b class='flag-5'>執(zhí)行</b>FPGA應(yīng)用<b class='flag-5'>所需</b>的工具

    汽車異構(gòu)硬件平臺(tái)開發(fā)如何進(jìn)行靜態(tài)代碼分析

    先進(jìn)的靜態(tài)代碼分析工具,其新版本引入的多CCT功能為開發(fā)人員提供了強(qiáng)大的支持,該功能不僅簡化了多編譯器環(huán)境下的代碼分析過程,還可以極大增強(qiáng)
    的頭像 發(fā)表于 10-09 16:15 ?550次閱讀
    汽車異構(gòu)硬件平臺(tái)開發(fā)如何進(jìn)行<b class='flag-5'>靜態(tài)</b>代碼<b class='flag-5'>分析</b>

    靜態(tài)鏈接和動(dòng)態(tài)鏈接

    一、靜態(tài)鏈接靜態(tài)鏈接通過靜態(tài)庫進(jìn)行鏈接,生成的目標(biāo)程序包含運(yùn)行需要的所有庫,可以直接運(yùn)行,不過就是文件比較大。靜態(tài)庫是匯編產(chǎn)生的.o文件的
    發(fā)表于 08-27 10:20

    恒訊科技分析:如何測試海外靜態(tài)IP服務(wù)的穩(wěn)定性和速度?

    Speedtest.net)或其他專業(yè)的代理測試工具。 2、連接到靜態(tài)IP:按照服務(wù)提供商的指示配置你的網(wǎng)絡(luò)設(shè)置,連接到分配給你的海外靜態(tài)IP。 3、進(jìn)行ping測試:使用ping命令測試IP地址的響應(yīng)時(shí)間和丟包率。低響應(yīng)時(shí)間和
    的頭像 發(fā)表于 08-14 14:58 ?385次閱讀

    IAR通過多架構(gòu)認(rèn)證的靜態(tài)分析工具加速代碼質(zhì)量自動(dòng)

    公司推出經(jīng)TüV SüD認(rèn)證的C-STAT靜態(tài)分析工具,適用于最新發(fā)布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的頭像 發(fā)表于 06-19 15:49 ?404次閱讀

    如何設(shè)置靜態(tài)IP代理

    靜態(tài)IP
    jf_60146132
    發(fā)布于 :2024年04月29日 07:46:31

    Visual Develop開發(fā)STM8S207MBT6時(shí)需要提供一個(gè)靜態(tài)庫,如何實(shí)現(xiàn)?

    我在使用ST Visual Develop開發(fā)STM8S207MBT6時(shí)需要提供一個(gè)靜態(tài)庫(例如MDK創(chuàng)建的.lib庫文件)給客戶調(diào)取接口使用,但是我并不想客戶查看函數(shù)調(diào)取接口的具體源碼,請(qǐng)問該如何操作呢?
    發(fā)表于 03-12 07:54

    如何將預(yù)編譯靜態(tài)庫集成到PSoC? Creator?

    BSEC API 提供了要包含的頭文件以及要鏈接的預(yù)編譯靜態(tài)庫(適用于Arm? Cortex? M4 以及 M0+)。 如何在PSoC? Creator 執(zhí)行此操作? 謝謝
    發(fā)表于 03-06 08:07

    verilogfor循環(huán)是串行執(zhí)行還是并行執(zhí)行

    在Verilog,for循環(huán)是并行執(zhí)行的。Verilog是一種硬件描述語言,用于描述和設(shè)計(jì)數(shù)字電路和系統(tǒng)。在硬件系統(tǒng),各個(gè)電路模塊是同時(shí)運(yùn)行的,并且可以并行執(zhí)行多個(gè)操作。因此,在V
    的頭像 發(fā)表于 02-22 16:06 ?3038次閱讀

    DC電源模塊在工業(yè)自動(dòng)的應(yīng)用案例分析

    著重要的作用,而機(jī)器人的控制系統(tǒng)需要穩(wěn)定可靠的電源供應(yīng)。DC電源模塊可以提供穩(wěn)定的直流電源,滿足機(jī)器人控制系統(tǒng)的需求。 DC電源模塊在工業(yè)自動(dòng)的應(yīng)用案例分析 2.
    的頭像 發(fā)表于 02-22 11:08 ?479次閱讀
    DC電源模塊在工業(yè)<b class='flag-5'>自動(dòng)</b>化<b class='flag-5'>中</b>的應(yīng)用案例<b class='flag-5'>分析</b>

    靜態(tài)測試方案

    隨著自動(dòng)駕駛、車聯(lián)網(wǎng)等技術(shù)突飛猛進(jìn)的發(fā)展,汽車包含的軟件越來越多。如何保證這些軟件的質(zhì)量就成了重中之重。經(jīng)緯恒潤擁有十幾年的嵌入式軟件研發(fā)及測試經(jīng)驗(yàn),經(jīng)驗(yàn)豐富的軟件測試團(tuán)隊(duì),能夠借助測試工具及設(shè)備給客戶提供優(yōu)質(zhì)的
    的頭像 發(fā)表于 01-29 11:36 ?2091次閱讀
    <b class='flag-5'>靜態(tài)</b>測試方案

    電路的電感是否可以用大電感替換小電感

    電子發(fā)燒友網(wǎng)站提供《電路的電感是否可以用大電感替換小電感.docx》資料免費(fèi)下載
    發(fā)表于 01-22 09:28 ?0次下載

    Klocwork—符合功能安全要求的自動(dòng)靜態(tài)測試工具

    Klocwork是Perforce公司產(chǎn)品,主要用于C、C++、C#、Java、 python和Kotlin代碼的自動(dòng)靜態(tài)分析工作,可以提供編碼規(guī)則檢查、代碼質(zhì)量度量、測試結(jié)果管理等
    的頭像 發(fā)表于 01-16 16:26 ?674次閱讀
    Klocwork—符合功能安全要求的<b class='flag-5'>自動(dòng)</b>化<b class='flag-5'>靜態(tài)</b>測試工具