欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

如何應(yīng)用編碼標(biāo)準(zhǔn)和自動(dòng)化工具 提高代碼質(zhì)量

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-08 10:59 ? 次閱讀

嵌入式系統(tǒng)在我們的日常生活中廣泛存在,從消費(fèi)類電子、醫(yī)療設(shè)備,到汽車,工業(yè)控制,航空航天等,它們的存在已經(jīng)成為我們生活中不可分割的一部分。隨著技術(shù)的不斷進(jìn)步和客戶需求的增加,嵌入式系統(tǒng)和軟件變得越來越復(fù)雜,同時(shí)產(chǎn)品的開發(fā)周期變得越來越短。如何在短時(shí)間內(nèi)開發(fā)出高質(zhì)量的軟件對(duì)產(chǎn)品的成功起著決定性的作用。

本文將介紹如何應(yīng)用編碼標(biāo)準(zhǔn)和自動(dòng)化工具,提高代碼質(zhì)量。

關(guān)于代碼質(zhì)量

代碼質(zhì)量總體上是指為軟件編寫的代碼的整體優(yōu)良水平,一般可以通過下面一些指標(biāo)來評(píng)價(jià)代碼質(zhì)量:

可讀性:代碼應(yīng)該易于閱讀和理解,即使是不熟悉項(xiàng)目的人也是如此。

可維護(hù)性:代碼應(yīng)該有條理和模塊化,可以方便地修改和更新。

可移植性:代碼應(yīng)該被設(shè)計(jì)易于在不同的平臺(tái)上使用。

可重用性:代碼應(yīng)該是可重用的,可以在應(yīng)用程序的其他部分使用。

可測(cè)試性:代碼應(yīng)該是易于進(jìn)行單元測(cè)試和集成測(cè)試的。

安全性:代碼應(yīng)該是安全的,保護(hù)敏感數(shù)據(jù)并防止惡意攻擊。

性能:代碼應(yīng)該是高效的,專注于優(yōu)化性能,以最大限度地減少資源使用。

對(duì)于嵌入式系統(tǒng),代碼質(zhì)量更加的重要。嵌入式系統(tǒng)經(jīng)常是處理執(zhí)行關(guān)鍵任務(wù)功能的設(shè)備。

如果嵌入式軟件存在代碼質(zhì)量問題,可能會(huì)導(dǎo)致硬件設(shè)備的故障或安全漏洞,嚴(yán)重影響系統(tǒng)的正常運(yùn)行。

編碼標(biāo)準(zhǔn)是提高代碼質(zhì)量的最佳實(shí)踐

基于歷史原因,目前在嵌入式開發(fā)中,主要還是使用C/C++高級(jí)編程語言,而C/C++是一種不安全的語言,包含大量未定義的行為,對(duì)于這些行為的不同解釋,可能會(huì)導(dǎo)致未知或不確定的副作用,其中一部分將會(huì)轉(zhuǎn)化為我們俗稱的“Bug”。比如C語言標(biāo)準(zhǔn)庫中的一些輸入輸出函數(shù),字符串函數(shù)導(dǎo)致的緩沖區(qū)溢出的問題,指針未初始化風(fēng)險(xiǎn),重復(fù)釋放內(nèi)存等等。

同時(shí),軟件開發(fā)執(zhí)行和實(shí)施的核心是“人”,也就是開發(fā)人員,在實(shí)踐過程中,開發(fā)人員可能會(huì)一次又一次無意地將相同類型的錯(cuò)誤寫入到他們的源代碼中。這一結(jié)論來自各種權(quán)威機(jī)構(gòu),如NASA、貝爾實(shí)驗(yàn)室和MITRE,它們進(jìn)行了多項(xiàng)調(diào)查和研究。這些研究的結(jié)果是給出了最佳編程實(shí)踐或推薦的編程實(shí)踐,它們可以有效識(shí)別有風(fēng)險(xiǎn)和不良的編碼行為。

有許多指南和編碼實(shí)踐可用于檢查常見錯(cuò)誤以及如何避免這些錯(cuò)誤來提高代碼質(zhì)量,其中一些技術(shù)和實(shí)踐在實(shí)施過程中,成為眾所周知的編碼標(biāo)準(zhǔn)。編碼標(biāo)準(zhǔn)是編碼規(guī)則、指導(dǎo)方針和最佳實(shí)踐的集合,它可以識(shí)別語言中容易引起B(yǎng)ug的行為,防止你在源代碼中做可疑的事情,消除容易出現(xiàn)缺陷的代碼結(jié)構(gòu),幫助你快速提高代碼質(zhì)量。

在嵌入式系統(tǒng)中,MISRA-C/C++,CERT-C/C++,CWE等已經(jīng)成為事實(shí)標(biāo)準(zhǔn)。特別是在汽車、醫(yī)療和鐵路等安全關(guān)鍵型應(yīng)用中,被IEC 61508、EN 50128和ISO 26262 等功能安全標(biāo)準(zhǔn)所要求。

很多大公司都有相應(yīng)的代碼編程規(guī)范,尤其是針對(duì)C語言,但這些編程規(guī)范往往與業(yè)界的編程標(biāo)準(zhǔn)(比如MISRA C)的側(cè)重點(diǎn)不同。一般公司的編程規(guī)范更加注重代碼風(fēng)格,比如命名,縮進(jìn),括號(hào)的使用等,來提高可讀性,而業(yè)界的編程標(biāo)準(zhǔn)更偏重于代碼的可維護(hù)性,可移植性,可靠性和安全性。在具體實(shí)踐中,往往是需要這二者結(jié)合使用。

MISRA

MISRA C由汽車工業(yè)軟件可靠性協(xié)會(huì)開發(fā)。它的目的是提高嵌入式系統(tǒng)環(huán)境中的代碼安全性、可移植性和可靠性,特別是那些用 ISO C 編程的系統(tǒng)。

MISRA C標(biāo)準(zhǔn)的第一版“Guidelines for the use of the C language in vehicle based software”于1998年制定,正式名稱為MISRA-C:1998。2004年進(jìn)行了一次更新“Guidelines for the use of the C language in critical systems”,正式名稱為 MISRA-C:2004。從1998年的vehicle based software到2004年的critical systems,因?yàn)镸ISRA協(xié)會(huì)發(fā)現(xiàn)MISRA C不僅汽車行業(yè)需要,其他一些安全相關(guān)的行業(yè)也需要。最新的MISAR C標(biāo)準(zhǔn)是MISRA-C:2012。

關(guān)于MISRA C,很多開發(fā)者都有一個(gè)誤解:MISRA C只適用于汽車電子嵌入式軟件開發(fā)。對(duì)此,MISRA C的輪值主席Andrew Banks特意做了解釋說明:雖然MISRA最開始推出的時(shí)候主要是針對(duì)汽車行業(yè)的,但由于它本身其實(shí)是在C/C++語言的基礎(chǔ)上,加上了一些約束,去掉了一些讓人容易出錯(cuò)的編程方法,保留了常用的寫法,盡可能讓開發(fā)者保持一致,提高可維護(hù)性和可移植性,從而提高安全性和可靠性,因此 MISRA 在飛機(jī)、機(jī)器人、無人機(jī)、醫(yī)療等其它的嵌入式行業(yè)也開始流行起來,成為了全球公認(rèn)的嵌入式 C 編程標(biāo)準(zhǔn)。

CERT

CERT C/C++由卡內(nèi)基梅隆大學(xué)軟件工程研究所(SEI)的計(jì)算機(jī)緊急響應(yīng)小組 (CERT)部門創(chuàng)建和發(fā)布,為C/C++編程語言的安全編碼提供規(guī)則和建議,這些規(guī)則和建議的目標(biāo)是開發(fā)安全、穩(wěn)定和可靠的系統(tǒng)。

CWE

CWE是基于社區(qū)開發(fā)的一組影響信息安全的軟件和硬件缺陷列表。它用通用語言描述和討論軟件和硬件的缺陷,可以作為缺陷識(shí)別、緩解和預(yù)防工作的公共基線標(biāo)準(zhǔn)。因此,CWE可以幫助開發(fā)人員和安全從業(yè)者檢查現(xiàn)有軟件和硬件產(chǎn)品的缺陷,評(píng)估針對(duì)這些缺陷的工具的覆蓋率等。

編碼標(biāo)準(zhǔn)的應(yīng)用對(duì)提高代碼質(zhì)量有立竿見影的作用。在Dr. Dobbs所做的一項(xiàng)研究中(Code Quality Improvement | Dr Dobb's),引入編碼標(biāo)準(zhǔn)進(jìn)行符合性檢查后,缺陷注入率降低了41%,這節(jié)省了大量測(cè)試時(shí)間,既提高了代碼質(zhì)量,又縮短了工程時(shí)間,從而加速了產(chǎn)品上市。在這項(xiàng)研究中,每個(gè)月的缺陷注入率是相當(dāng)穩(wěn)定的,直到該組織引入編碼標(biāo)準(zhǔn),然后缺陷率急速下降(見下圖)。

隨著對(duì)標(biāo)準(zhǔn)遵從度的提高,質(zhì)量也隨之提高,偏差越來越少,缺陷率直線下降。

1682409881679113.png

自動(dòng)化工具是實(shí)施編碼標(biāo)準(zhǔn)的最佳路徑

有了編碼標(biāo)準(zhǔn)后,應(yīng)用標(biāo)準(zhǔn)意味著代碼除了需要遵守語言本身的規(guī)則外,還需要遵守成百上千條編碼標(biāo)準(zhǔn)所包含的規(guī)則和要求。理論上,我們可以通過人工來檢查每條編碼規(guī)則的實(shí)施情況,但對(duì)于日益復(fù)雜的軟件顯然是力不從心的。大量的實(shí)踐表明,應(yīng)用自動(dòng)化工具是實(shí)施編碼標(biāo)準(zhǔn),提高代碼質(zhì)量的最佳路徑。

自動(dòng)化工具中我們最熟悉的就是編譯器和鏈接器。高質(zhì)量的編譯器和鏈接器應(yīng)支持現(xiàn)代編程語言,如最新的C和C++規(guī)范,報(bào)告每個(gè)構(gòu)建步驟中可能出現(xiàn)的問題,以便它生成懷疑的警告,例如易失性變量或內(nèi)存訪問,其評(píng)估順序可能會(huì)影響應(yīng)用程序的邏輯。警告是第一道靜態(tài)分析檢查,絕不能忽視,尤其是在功能安全設(shè)置中。最好的建議是通過更改編譯器設(shè)置將所有警告都視為錯(cuò)誤來將警告轉(zhuǎn)化為錯(cuò)誤。這將迫使開發(fā)人員修復(fù)代碼中的所有歧義,因?yàn)樗械木娑紝⒆鳛檎嬲膯栴}處理。

專用的靜態(tài)分析工具基于源代碼分析,可以在不執(zhí)行程序的情況下發(fā)現(xiàn)潛在的問題,比如 IAR 提供了與 IAR Embedded Workbench 無縫集成的靜態(tài)分析工具 C-STAT。這種類型的工具可以幫助你找到代碼中最常見的缺陷來源,也可以幫助你找到開發(fā)人員在試圖編寫代碼時(shí)往往不會(huì)考慮的問題,特別是當(dāng)他們?yōu)榱俗屇承┕δ苓\(yùn)行而加入支撐代碼時(shí)。靜態(tài)分析工具確實(shí)能幫助你開發(fā)出更好的代碼,因?yàn)樗鼈儚?qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)。事實(shí)上,如果正在創(chuàng)建一個(gè)功能安全認(rèn)證的應(yīng)用,你可能會(huì)被建議,甚至強(qiáng)制要求使用靜態(tài)分析工具。

此外,嵌入式軟件在運(yùn)行時(shí)仍然容易受到算術(shù)問題、緩沖區(qū)溢出、邊界問題、堆完整性和內(nèi)存泄漏的影響。一個(gè)可行的方法是在可能發(fā)生潛在錯(cuò)誤的所有地方插入特定的檢測(cè)代碼或斷言來檢測(cè)此類錯(cuò)誤。但是,手動(dòng)添加指令來檢測(cè)并以某種方式在運(yùn)行時(shí)報(bào)告問題是一項(xiàng)非常耗時(shí)的任務(wù)。因此,使用動(dòng)態(tài)或運(yùn)行時(shí)分析工具來捕獲和觸發(fā)僅在運(yùn)行時(shí)的缺陷和錯(cuò)誤,是一個(gè)可以極大提高效率和生產(chǎn)力的方法。例如,在 IAR Embedded Workbench 中,開發(fā)人員可以使用運(yùn)行時(shí)分析工具插件 C-RUN。

綜上所述,編譯器和鏈接器可以報(bào)告在構(gòu)建中可能出現(xiàn)的問題,靜態(tài)分析工具擅長(zhǎng)發(fā)現(xiàn)一些未定義行為的缺陷,檢查編碼標(biāo)準(zhǔn)的符合性,而運(yùn)行時(shí)分析工具擅長(zhǎng)發(fā)現(xiàn)只有在執(zhí)行時(shí)才會(huì)觸發(fā)的缺陷。這些缺陷有時(shí)會(huì)有重疊,但有時(shí)只能在一個(gè)域或另一個(gè)域中檢測(cè)到。為了盡可能提高代碼質(zhì)量,以及發(fā)現(xiàn)問題的效率,需要將幾者結(jié)合使用并盡可能與開發(fā)和構(gòu)建工具集成。下圖矩陣代表組合不同工具時(shí)的完整缺陷覆蓋率。

1682409874713953.png

總結(jié)

隨著嵌入式系統(tǒng)的復(fù)雜性提高,對(duì)于嵌入式軟件的要求也越來越高,其中最核心最根本的是代碼質(zhì)量,而編碼標(biāo)準(zhǔn)是提高代碼質(zhì)量的最佳實(shí)踐。遵循編碼標(biāo)準(zhǔn)的最有效的方式是應(yīng)用自動(dòng)化工具,包括靜態(tài)分析工具,運(yùn)行時(shí)分析工具,這樣可以有效地在開發(fā)過程中提高代碼質(zhì)量,既減少了項(xiàng)目的開發(fā)時(shí)間和成本,又提高了產(chǎn)品的質(zhì)量和競(jìng)爭(zhēng)力。

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

    關(guān)注

    41

    文章

    3626

    瀏覽量

    129771
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    958

    瀏覽量

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

    關(guān)注

    30

    文章

    4830

    瀏覽量

    69090
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何提高嵌入式代碼質(zhì)量?

    嵌入式系統(tǒng)的發(fā)展已經(jīng)深刻地影響了我們?nèi)粘I畹姆椒矫婷?,從智能家居到汽車控制系統(tǒng),再到醫(yī)療設(shè)備和工業(yè)自動(dòng)化等領(lǐng)域,嵌入式系統(tǒng)無處不在。嵌入式軟件的質(zhì)量直接關(guān)系到系統(tǒng)的安全性、穩(wěn)定性和性能。因此,提高
    發(fā)表于 01-15 10:48

    誠聘高級(jí)運(yùn)維自動(dòng)化工程師

    獵頭職位:高級(jí)運(yùn)維自動(dòng)化工程師【合肥】工作職責(zé): 1、根據(jù)基礎(chǔ)架構(gòu)運(yùn)維管理需求,規(guī)劃設(shè)計(jì)運(yùn)維自動(dòng)化平臺(tái)和系統(tǒng)的架構(gòu)并推進(jìn)落實(shí);2、負(fù)責(zé)現(xiàn)有自動(dòng)化運(yùn)維系統(tǒng)和工具的維護(hù)和完善; 3、負(fù)責(zé)運(yùn)
    發(fā)表于 12-12 10:37

    一個(gè)自動(dòng)化工廠的標(biāo)配是什么?

    監(jiān)視和控制生產(chǎn)過程中的各個(gè)參數(shù),使設(shè)備工作在正常狀態(tài)或最佳狀態(tài),并使產(chǎn)品達(dá)到最好的質(zhì)量。因此可以說,沒有眾多的優(yōu)良的傳感器,現(xiàn)代化生產(chǎn)也就失去了基礎(chǔ)。 NO.5 變頻器 自動(dòng)化工廠的交換器 變頻器
    發(fā)表于 08-22 11:30

    CasePlayer2--單元測(cè)試自動(dòng)化工具

    CasePlayer2是一款日本普遍通用的單元測(cè)試自動(dòng)化工具.它可以快速解析您的程序,定位程序中的問題點(diǎn),生成程序相應(yīng)的流程圖,式樣書等必要文檔.
    發(fā)表于 09-05 11:23

    2021年化工自動(dòng)化控制儀表模擬考試一點(diǎn)通

    練習(xí)。2021年化工自動(dòng)化控制儀表考試內(nèi)容及化工自動(dòng)化控制儀表作業(yè)模擬考試1、【單選題】工業(yè)標(biāo)準(zhǔn)化熱電偶鉑銠30-鉑銠6是()型熱電偶。(C
    發(fā)表于 09-02 07:41

    2021年化工自動(dòng)化控制儀表考試試題及化工自動(dòng)化控制儀表操作證考試 精選資料分享

    題庫來源:安全生產(chǎn)模擬考試一點(diǎn)通公眾號(hào)小程序化工自動(dòng)化控制儀表考試試題根據(jù)新化工自動(dòng)化控制儀表考試大綱要求,安全生產(chǎn)模擬考試一點(diǎn)通將化工
    發(fā)表于 09-13 06:55

    單元測(cè)試/集成測(cè)試自動(dòng)化工具--WinAMS

    CoverageMasterwinAMS : 適用于嵌入式目標(biāo)機(jī)代碼的單元測(cè)試/集成測(cè)試工具全面支持嵌入式微機(jī)!驗(yàn)證嵌入式C/C++軟件 實(shí)施以模塊為單位的自動(dòng)化單元測(cè)試工具不需要Ho
    發(fā)表于 06-17 18:26

    Android和iOS 測(cè)試五個(gè)最好的開源自動(dòng)化工具

    本文主要介紹Android和iOS 五個(gè)最好的開源自動(dòng)化工具,這里整理了相關(guān)資料,希望能幫助測(cè)試軟件的朋友,有需要的看下。自動(dòng)化測(cè)試在產(chǎn)品測(cè)試上有著非常重要的作用。實(shí)現(xiàn)測(cè)試自動(dòng)化有多種積極的方式
    的頭像 發(fā)表于 02-06 15:48 ?8070次閱讀
    Android和iOS 測(cè)試五個(gè)最好的開源<b class='flag-5'>自動(dòng)化工具</b>

    模擬EDA自動(dòng)化工具如今已經(jīng)登場(chǎng)

    各種不同類型的模擬電路增加‘秘密配方’,因此,他們通常不情愿采用自動(dòng)化途徑。 雖然如此,與數(shù)字設(shè)計(jì)自動(dòng)化工具較勁的模擬設(shè)計(jì)自動(dòng)化工具如今已經(jīng)登場(chǎng)了。
    發(fā)表于 05-21 16:30 ?3305次閱讀

    化工自動(dòng)化儀表分類、功能優(yōu)勢(shì)及應(yīng)用分析

      化工生產(chǎn)過程自動(dòng)化,就是在化工設(shè)備上,配置一些自動(dòng)化裝置,代替操作人員的部分直接勞動(dòng),使生產(chǎn)在不同程度上自動(dòng)地進(jìn)行。這種用
    發(fā)表于 08-26 10:16 ?8040次閱讀

    Keil集成AStyle代碼格式化工具

    借助AStyle代碼格式化工具能讓我們寫的代碼看起來工整而且規(guī)范,下面來介紹一下keil如何集成AStyle代碼格式化工具
    的頭像 發(fā)表于 03-30 09:12 ?3365次閱讀
    Keil集成AStyle<b class='flag-5'>代碼</b>格式<b class='flag-5'>化工具</b>

    應(yīng)用編碼標(biāo)準(zhǔn)自動(dòng)化工具提高代碼質(zhì)量

    同時(shí),軟件開發(fā)的執(zhí)行和實(shí)施的核心是“人”,也就是開發(fā)人員,在實(shí)踐過程中,開發(fā)人員可能會(huì)一次又一次無意地將相同類型的錯(cuò)誤寫入到他們的源代碼中。這一結(jié)論來自各種權(quán)威機(jī)構(gòu),如 NASA、貝爾實(shí)驗(yàn)室和 MITRE,它們進(jìn)行了多項(xiàng)調(diào)查和研究。
    的頭像 發(fā)表于 02-23 13:48 ?531次閱讀

    EsDA — 嵌入式系統(tǒng)設(shè)計(jì)自動(dòng)化工具

    EsDA — 嵌入式系統(tǒng)設(shè)計(jì)自動(dòng)化工具
    的頭像 發(fā)表于 06-09 10:26 ?685次閱讀
    EsDA — 嵌入式系統(tǒng)設(shè)計(jì)<b class='flag-5'>自動(dòng)化工具</b>

    Jenkins 與 SonarQube 集成部署,自動(dòng)化代碼質(zhì)量監(jiān)控

    前言 強(qiáng)化代碼質(zhì)量,加速軟件交付!Jenkins 攜手 SonarQube,與華為云 Flexus X 云服務(wù)器強(qiáng)強(qiáng)聯(lián)合,打造自動(dòng)化代碼質(zhì)量
    的頭像 發(fā)表于 01-07 17:24 ?280次閱讀
    Jenkins 與 SonarQube 集成部署,<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>代碼</b><b class='flag-5'>質(zhì)量</b>監(jiān)控

    IT自動(dòng)化工具Ansible基礎(chǔ)入門

    Ansible是幫助運(yùn)維人員實(shí)現(xiàn)自動(dòng)化的最重要的工具之一。
    的頭像 發(fā)表于 02-07 10:00 ?93次閱讀
    IT<b class='flag-5'>自動(dòng)化工具</b>Ansible基礎(chǔ)入門