国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

帶你走近MISRA C:2012

北匯信息POLELINK ? 2022-10-13 14:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:給你小魚干小編:吃不飽

01

汽車軟件與C語言

隨著軟件定義汽車概念的興起,汽車軟件開發(fā)的工作量開始呈指數(shù)級增加,當前車載軟件代碼量已經(jīng)達到1億-3億行。這是一個什么概念呢,相當于比Windows系統(tǒng)還高出一個數(shù)量級。據(jù)調查,大部分的車載軟件都是使用C語言進行開發(fā),因為C執(zhí)行效率高、代碼量小,因此在汽車的小型控制部件中被廣泛使用。盡管C語言在嵌入式系統(tǒng)中如此流行,但仍有很多缺陷:

1

C是弱類型語言

在下面代碼中,char類型和int類型是可以直接運算的,因為char類型會被提升為int,這就是C中的隱式類型轉換,將精度較小的轉換為大精度的,在這個意義上講,它并不符合強類型語言的定義。

#include

int main(void){

char a='a';

int b=10;

int c=a+b;

return 0;

}

2

C有更多操作符及優(yōu)先級

C相較于其他的語言有更多的操作符,因此其也有更多不同的操作符優(yōu)先級,其中的大多數(shù)都不是能直觀判斷的,所以通常會被程序員誤解。

3

C程序一般不為常見問題

提供運行時檢查

C程序一般不為常見問題提供運行時檢查,例如運算異常(如零除),溢出,指針的有效性或者數(shù)組越界。

02

MISRA C編碼規(guī)范

綜上所述,C語言對于安全性要求很高的汽車軟件而言是不安全的。汽車工業(yè)軟件可靠性協(xié)會(Motor Industry Software Reliability Association,MISRA)在1998年發(fā)布了第一版針對汽車工業(yè)軟件安全性的C語言編碼規(guī)范---MISRA C,讓程序員有規(guī)范可循。從1998年發(fā)布的MISRA C:1998,只針對汽車制造業(yè)的嵌入式開發(fā),到MISRA C:2012,已經(jīng)開始擴大覆蓋范圍到其他高安全性系統(tǒng)。下面我們就看一下具體的MISRA C:2012規(guī)則內容。

03

MISRA C:2012規(guī)則介紹

MISRA C:2012包含159條規(guī)則,其中Directives有16條,Rules有143條。

01

Dir 4.12:動態(tài)內存分配不應被使用。

a009cbba-4a6e-11ed-b116-dac502259ad0.png

圖1 Dir 4.12規(guī)則

原理:任何庫的動態(tài)內存分配和進程的釋放都可能導致未定義的行為。

02

Rule 10.3:表達式的值不應分配給具有較窄基本類型或不同基本類型類別的對象。

a03f348a-4a6e-11ed-b116-dac502259ad0.png

圖2 Rule 10.3規(guī)則

原理:C語言允許程序員有相當大的自由度,并允許自動形成不同算術類型之間的賦值。然而,使用這些隱式轉換可能會導致意外的結果,可能會丟失值、符號或精度。如MISRA基本類型模型所強制的,使用更強的類型可以降低這些問題發(fā)生的可能性。

看到這里,相信大家有許多疑問:為什么一個是Dir而另一個是Rule呢?Category、Analysis這些又是什么呢?下面就來介紹一下MISRA規(guī)則的分類和屬性。

04

MISRA C:2012規(guī)則分類

MISRA C:2012的規(guī)則按照性質分為兩類:指令(Directives)和規(guī)則(Rules)。規(guī)則有三種不同類別:”強制(Mandatory)”、”要求(Required)”和“建議(Advisory)”;其中具體結果如下圖所示。

a0506e6c-4a6e-11ed-b116-dac502259ad0.png

圖3 MISRA C:2012規(guī)則分類那么,在任何情況下都可以明確地說明該條代碼違反了規(guī)則嗎?出于此問題,MISRA C:2012規(guī)則的Rules具有可判定性Decidable/Undecidable,他們的區(qū)分標準為是否能在任何情況下明確回答“該代碼是否遵循了這條規(guī)則”?a08f1450-4a6e-11ed-b116-dac502259ad0.png圖4 MISRA C:2012規(guī)則的可判定性要注意的是,可判定性并不適用于Directives規(guī)則。Rules的分析范圍分為Single Translation Unit/System:a0a0ed56-4a6e-11ed-b116-dac502259ad0.png圖5 Rules的分析范圍

05

Helix QAC與MISRA C:2012

很明顯,MISRA C:2012規(guī)則就是為靜態(tài)測試而生的。Perforce公司的靜態(tài)分析工具Helix QAC,是汽車行業(yè)中主流的靜態(tài)分析器,其開發(fā)團隊是MISRA C&C++編碼委員會的創(chuàng)始會員,也是MISRA C&C++委員會最具影響力的會員。Helix QAC具有業(yè)界領先的編碼規(guī)范覆蓋度,目前MISRA C:2004的編碼規(guī)范覆蓋度達到了99%,而對MISRA C:2012的編碼規(guī)范覆蓋度已達到100%。是嵌入式靜態(tài)分析領域公認的行業(yè)領導及先驅。a0b7196e-4a6e-11ed-b116-dac502259ad0.png圖6 Helix QAC的編碼規(guī)范覆蓋度下面以開源工程wget為例,演示一下Helix QAC是如何定位違反MISRA C:2012規(guī)則的代碼。a0cafb00-4a6e-11ed-b116-dac502259ad0.png圖7 HelixQAC診斷消息0883診斷消息0883:“包含文件代碼不受重復包含的保護”正是MISRAC:2012規(guī)則Dir 4.10的映射,通過診斷消息開發(fā)人員就可以了解到代碼違反MISRA C:2012規(guī)則的情況,從而對代碼進行修改使其合規(guī)。a0fe16f2-4a6e-11ed-b116-dac502259ad0.png圖8 Rule 9.1規(guī)則的不同診斷消息Rule 9.1:對象在初始化前不能被使用。a134044c-4a6e-11ed-b116-dac502259ad0.png圖9 Rule 9.1規(guī)則這里大家或許會疑惑,為什么同一個規(guī)則下會產(chǎn)生兩種診斷消息呢?答案是:數(shù)據(jù)流分析。數(shù)據(jù)流分析是Helix QAC的高級分析,Helix QAC通過內置的數(shù)據(jù)流分析器分析運行時的行為。數(shù)據(jù)流分析可以識別各種問題,包括可能指示編碼錯誤的條件,以及可能導致程序崩潰的關鍵未定義行為。我們可以看到圖中的診斷消息2962和2963雖然都是Rule 9.1產(chǎn)生的,但是分成了Suspicious和Apparent兩種。我們在代碼中看一下這兩條診斷消息的不同。診斷消息2963的源碼如下:a13ec814-4a6e-11ed-b116-dac502259ad0.png
在226行聲明了數(shù)組saved_lengths,241行對saved_lengths進行賦值操作,在255行使用saved_lengths。但saved_lengths的賦值操作不一定會進行,因為該操作在for循環(huán)中進行,如果for循環(huán)沒有達到執(zhí)行條件導致并未執(zhí)行,那么此時saved_lengths就沒有初始化。所以此條診斷消息是Suspicious。診斷消息2962源碼如下:a163cf2e-4a6e-11ed-b116-dac502259ad0.png
可以看到,在824行聲明變量dt,但后面并未對dt進行初始化。所以此條診斷消息是Apparent。
由此可見Helix QAC數(shù)據(jù)流分析功能的強大。Helix QAC的數(shù)據(jù)流功能也在不斷地更新,在即將到來的新版本2022.4中,數(shù)據(jù)流計劃從Helix QAC引擎中分離出來,成為自己的組件。在近期發(fā)布的最新版本Helix QAC 2022.3中,引入了對微軟Visual Studio 2022的支持,提供更廣泛的編譯器支持,以及對C++20和C23的升級語言支持。此外,此版本具有使用“qainject”自動生成 CCT 的功能,可簡化構建理解和編譯器設置。作為Perforce公司的合作伙伴,北匯信息將為客戶提供優(yōu)質的靜態(tài)代碼測試工具和服務。

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

    關注

    1

    文章

    167

    瀏覽量

    3735
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標準對比與Perforce QAC應用詳解

    如何編寫真正安全的C語言代碼?指南涵蓋MISRA C、CERT、CWE等國際安全編碼標準對比,以及如何借助Perforce QAC自動檢測漏洞。推薦給嵌入式/汽車/工業(yè)軟件的開發(fā)者!
    的頭像 發(fā)表于 01-26 17:38 ?819次閱讀
    <b class='flag-5'>C</b>語言安全編碼指南:<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>、CERT <b class='flag-5'>C</b>、CWE 與 <b class='flag-5'>C</b> Secure 標準對比與Perforce QAC應用詳解

    汽車網(wǎng)絡安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡安全如何選編程語言?CC++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優(yōu)劣與適用場景,以及Perforce QAC/Klocwork對MISRA、CERT等規(guī)范的
    的頭像 發(fā)表于 12-26 11:13 ?442次閱讀
    汽車網(wǎng)絡安全開發(fā)語言選型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    TDK KLZ2012-A電感:汽車A2B應用的理想之選

    TDK KLZ2012-A電感:汽車A2B應用的理想之選 在汽車電子的復雜世界里,電感作為關鍵的電子元件,其性能直接影響著整個系統(tǒng)的穩(wěn)定性和可靠性。今天,我們就來深入了解一下TDK推出
    的頭像 發(fā)表于 12-25 17:25 ?1106次閱讀

    TDK ADL2012電感:汽車解耦電路的理想之選

    TDK ADL2012電感:汽車解耦電路的理想之選 在汽車電子領域,解耦電路對于保障電子系統(tǒng)的穩(wěn)定運行至關重要。TDK的ADL系列電感,特別是ADL2012型號,為汽車應用提供了出色的解決方案。今天
    的頭像 發(fā)表于 12-25 14:05 ?277次閱讀

    SRP2012TMA系列屏蔽功率電感器:設計與應用指南

    SRP2012TMA系列屏蔽功率電感器:設計與應用指南 在電子設備的設計中,功率電感器起著至關重要的作用。今天,我們就來詳細探討一下BOURNS的SRP2012TMA系列屏蔽功率電感器,看看它在實際
    的頭像 發(fā)表于 12-23 18:05 ?1271次閱讀

    探索Bourns CW2012A系列0805芯片電感:特性、規(guī)格與應用考量

    探索Bourns CW2012A系列0805芯片電感:特性、規(guī)格與應用考量 在電子設計領域,芯片電感作為關鍵的無源元件,對電路的性能起著至關重要的作用。今天,我們將深入探討B(tài)ourns
    的頭像 發(fā)表于 12-22 16:50 ?528次閱讀

    CWF2012A 系列 0805 貼片電感:特性、參數(shù)與應用解析

    CWF2012A 系列 0805 貼片電感:特性、參數(shù)與應用解析 作為電子工程師,在電路設計中,電感是不可或缺的基礎元件,其性能直接影響著整個電路的穩(wěn)定性與性能表現(xiàn)。今天,我們就來詳細解析
    的頭像 發(fā)表于 12-22 16:10 ?415次閱讀

    泰克TDS2012C數(shù)字存儲示波器:基礎測試的可靠選擇

    的 TDS2012C型號 (帶寬100MHz,采樣率1GS/s,2通道)以其穩(wěn)定的性能和友好的用戶體驗,在基礎測試應用中保持著廣泛的使用價值。 為確保此類基礎測試儀器能夠長期保持可靠的測量性能,適當?shù)募夹g維護十分必要。 深圳市寶安區(qū)沙井方豐瑞儀器設備經(jīng)營部 在基礎測試設備的支持
    的頭像 發(fā)表于 11-11 11:17 ?522次閱讀
    泰克TDS<b class='flag-5'>2012C</b>數(shù)字存儲示波器:基礎測試的可靠選擇

    一文帶你了解電源測試系統(tǒng)的功能!

    在當今電子與電力技術飛速發(fā)展的時代,各類電子設備、電力系統(tǒng)以及新能源相關產(chǎn)品的研發(fā)、生產(chǎn)和維護過程中,電源測試系統(tǒng)扮演著至關重要的角色。本文將帶你了解源儀電子的電源測試系統(tǒng)的功能。
    的頭像 發(fā)表于 07-02 09:10 ?991次閱讀
    一文<b class='flag-5'>帶你</b>了解電源測試系統(tǒng)的功能!

    漫畫科普 | 功率放大器到底有哪些應用?帶你解鎖功放經(jīng)典應用場景!(一)

    漫畫科普 | 功率放大器到底有哪些應用?帶你解鎖功放經(jīng)典應用場景!(一)
    的頭像 發(fā)表于 06-20 20:00 ?996次閱讀
    漫畫科普 | 功率放大器到底有哪些應用?<b class='flag-5'>帶你</b>解鎖功放經(jīng)典應用場景!(一)

    基于ESP32C3的智能小車設計

    你有沒有想過,從零開始親手制作一輛堅固耐用的遙控越野車?今天,小編就帶你走進一個融合機械、電子與物聯(lián)網(wǎng)的精彩DIY項目——一款由 Seeed Studio XIAO ESP32C3 強力驅動的 3D打印4x4 RC漫游車!
    的頭像 發(fā)表于 06-04 11:11 ?2419次閱讀
    基于ESP32<b class='flag-5'>C</b>3的智能小車設計

    X1A000171000300,FC2012AN,32.768kHz,2012mm,EPSON晶振

    產(chǎn)品簡介X1A000171000300,FC2012AN,32.768kHz,2012mm,EPSON晶振,日本進口晶振,EPSON晶振,愛普生晶振,型號:FC2012AN,編碼為
    發(fā)表于 05-13 17:03 ?0次下載

    Helix QAC 2025.1 重磅發(fā)布!MISRA C:2025? 100%覆蓋

    Helix QAC 2025.1新增功能 Helix QAC 2025.1實現(xiàn)了對新版MISRA C:2025?標準的 100% 覆蓋,并提供對應的合規(guī)模塊。此版本還擴展了對 CERT C
    的頭像 發(fā)表于 05-13 16:48 ?1470次閱讀
    Helix QAC 2025.1 重磅發(fā)布!<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025? 100%覆蓋

    MISRA C:2025新標準解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)

    MISRA C:2025?發(fā)布!新增5條規(guī)則,并對部分現(xiàn)有規(guī)則進行了擴展、重組,以進一步簡化安全關鍵型系統(tǒng)的開發(fā)流程。如何實現(xiàn)最新MISRA合規(guī)性?
    的頭像 發(fā)表于 05-08 17:58 ?2890次閱讀
    <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025新標準解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)

    代碼靜態(tài)測試工具Perforce QAC 2025.1新特性

    Perforce QAC 2025.1實現(xiàn)了對新發(fā)布的MISRA C:2025?標準的100%覆蓋,并提供了對應的新合規(guī)模塊。該版本還擴展了對CERT C Level 1建議的覆蓋范圍,改進了與持續(xù)
    的頭像 發(fā)表于 04-21 15:14 ?1079次閱讀
    代碼靜態(tài)測試工具Perforce QAC 2025.1新特性