色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何在日常開發過程中提高代碼質量

IAR愛亞系統 ? 來源:IAR愛亞系統 ? 2025-01-23 09:09 ? 次閱讀

隨著技術的不斷進步,客戶期望越來越高,嵌入式設備變得越來越智能,對應的嵌入式系統和軟件也變得越來越復雜,同時產品的開發周期變得越來越短。如何在短時間內開發出高質量的軟件對產品的成功起著決定性的作用。提高代碼質量是一個系統工程,本文主要介紹開發人員如何在日常開發過程中提高代碼質量。

01

什么是代碼質量?

代碼質量一般用于衡量代碼的“好”和“爛”:“好”代碼表示代碼質量高,“爛”代碼表示代碼質量低。雖然目前代碼質量沒有一個單一客觀的定義,但是代碼質量一般可以通過一些指標來衡量:

可讀性(Readability):“好”代碼應該易于閱讀和理解。

可靠性(Reliability):“好”代碼應該是可靠的(Bug越少,代碼質量越高)。

可測試性(Testability):“好”代碼應該易于測試。

可重用性(Reusability):“好”代碼應該易于在不同項目里面重用。

可維護性(Maintainability):“好”代碼應該易于修改和維護。

可擴展性(Extensibility):“好”代碼應該易于擴展。

可移植性(Portability):“好”代碼應該易于在不同的平臺上移植。

02

如何提高代碼質量?

提高代碼質量不是一項一次性任務,而是一項需要長期堅持的實踐。下面是目前常用的一些提高代碼質量的實踐:

遵循編碼標準:編碼標準是前輩總結的一些編碼最佳實踐和經驗教訓。編碼標準一般分為公司內部編碼標準(比如代碼風格和命名規則等)和行業編碼標準(比如MISRA, CERT和CWE等)。

靜態代碼分析:靜態代碼分析可以幫助檢查代碼是否遵循相關編碼標準。

單元測試:單元測試主要是功能測試,可以幫助測試代碼是否符合對應的設計,確保代碼功能的正確性。

代碼審查:代碼審查可以加強開發者之間的協作,幫助檢查代碼中潛在的邏輯問題。

使用版本控制:使用版本控制可以管理代碼變更歷史,同時方便團隊協作。

CI/CD:CI/CD可以實現自動化構建、靜態代碼分析和單元測試。

03

為什么需要在日常開發過程中提高代碼質量?

下面是Capers Jones 的著作“Applied Software Measurement: Global Analysis of Productivity and Quality”里面關于Bug引入、檢測和修復成本的一張圖:

絕大部分Bug是在日常開發編碼階段引入的。

Bug發現的越早,越容易修復,修復成本越低;反之Bug發現的越晚,越難修復,修復成本越高。

在日常開發編碼階段過程中提高代碼質量,可以盡早發現代碼中的Bug,盡快修復代碼中的Bug,大大降低修復Bug的成本。

80e448e2-d8a0-11ef-9310-92fbcf53809c.png

04

如何在日常開發過程中提高代碼質量?

前面介紹了提高代碼質量的一些通用實踐,下面具體介紹開發人員如何在日常開發過程中提高代碼質量。

構建0 Error和0 Warning

在構建的時候,開發人員會做到0 Error (因為Error會導致構建失敗)。但是很多時候沒有做到0 Warning (因為Warning不會導致構建失敗)。但是Waring有可能是潛在的隱藏的Bug。

下面是一個經典的編譯器Warning:提示應該使用比較運算符==而不是賦值符=:

8106d308-d8a0-11ef-9310-92fbcf53809c.png

修改之后重新構建:0 Error和0 Warning:

81266b46-d8a0-11ef-9310-92fbcf53809c.png

靜態代碼分析

構建0 Error和0 Warning之后,建議先做靜態代碼分析,因為靜態代碼分析不需要運行代碼,分析起來比較方便快捷,而且靜態代碼分析能檢測出一些常見的代碼錯誤。

在IAR Embedded Workbench當中,只需要先勾選對應的C-STAT靜態代碼檢查規則:

814eef9e-d8a0-11ef-9310-92fbcf53809c.png

就可以使用C-STAT對整個工程進行靜態代碼分析:

81700198-d8a0-11ef-9310-92fbcf53809c.png

也可以使用C-STAT對單個文件進行靜態代碼分析:

8193c7ae-d8a0-11ef-9310-92fbcf53809c.png

分析完成后,對應C-STAT Messages窗口會顯示對應檢查結果,雙擊對應信息可以定位到源代碼位置:

81a4f57e-d8a0-11ef-9310-92fbcf53809c.png

如果不太熟悉對應檢查規則,可以按F1,會彈出對應幫助文檔(包含對應檢查規則的描述,對應編碼標準以及違反和遵循對應規則的代碼示例等)來幫助快速定位和解決問題:

81c3026c-d8a0-11ef-9310-92fbcf53809c.png

根據幫助文檔中的信息,推測需要將代碼里面的4u改成(int32_t) 4。修改代碼之后重新進行靜態代碼分析,之前的違反修復了:

81deb5fc-d8a0-11ef-9310-92fbcf53809c.png

使用IAR C-STAT可以非常方便地進行靜態代碼分析并且迅速得到反饋,以確保代碼符合相應的編碼標準。

單元測試

在靜態代碼分析之后,建議做單元測試。因為靜態代碼分析只能檢查代碼是否遵循相關編碼標準,代碼的功能測試還需要單元測試。IAR本身沒有提供單元測試工具,IAR有很多提供單元測試工具的合作伙伴。同時IAR里面的C-RUN動態代碼分析可以幫助在單元測試時發現一些潛在的問題。

在IAR Embedded Workbench當中,只需要勾選對應的C-RUN動態代碼檢查規則:

81f6121a-d8a0-11ef-9310-92fbcf53809c.png

重新構建,編譯器會在有可能出現違反的地方自動插入對應的測試代碼。

在運行的時候C-RUN會檢測是否有對應的違反,比如下面C-RUN Messages提示訪問越界:

82145234-d8a0-11ef-9310-92fbcf53809c.png

分析發現對應數組的大小是4,但是錯誤地引用了[4]( [4]是數組的第5個元素),導致訪問越界。修改代碼之后重新測試OK (C-RUN Messages窗口沒有對應違反):

82291476-d8a0-11ef-9310-92fbcf53809c.png

代碼審查 在單元測試完成之后,建議邀請同伴做代碼審查(為了提高代碼審查的效率,建議在構建、靜態代碼分析和單元測試完成之后再做代碼審查)。

CI/CD

在代碼審查完成之后,建議上傳代碼到服務器進行自動化工作流。

IAR提供了對應的自動化工具IAR Build Tools可以通過命令行的方式進行自動化構建、靜態代碼分析和下載調試(用于單元測試):

8259201c-d8a0-11ef-9310-92fbcf53809c.png

8273e96a-d8a0-11ef-9310-92fbcf53809c.png

05

總結

在與用戶的交流中,我們欣喜地發現越來越多的公司和開發人員意識到代碼質量的重要性,但同時也發現了一些問題:

有些公司居然沒有對代碼進行靜態代碼分析、單元測試和代碼審查,代碼的正確性和質量完全依靠最后的產品測試。

有些公司購買了非常好的靜態代碼分析和單元測試工具,但是遺憾的是這些工具并沒有被開發人員在日常開發過程中充分使用,而是等到發布軟件版本之后才對整個工程進行靜態代碼分析和單元測試。

有些公司還沒有部署自動化工作流(開發人員的時間非常寶貴,要盡量對代碼進行自動化構建、靜態代碼分析和單元測試,這樣開發人員就可以盡快收到反饋,提高代碼質量的同時也提升研發效率)。

本文以IAR Embedded Workbench和IAR Build Tools(包含C-STAT靜態代碼分析和C-RUN動態代碼分析)為例介紹了開發人員如何在日常開發過程中提高代碼質量。

需要注意的是,文中的IAR Embedded Workbench和IAR Build Tools(包含C-STAT靜態代碼分析和C-RUN動態代碼分析)只是工具示例,文中的策略也適用于其它工具。

選擇對應的工具很重要,但是更重要的是:開發人員需要在日常開發過程中充分利用好對應的工具來提高代碼質量。因為絕大部分Bug是在日常開發編碼階段引入的,Bug發現的越早,越容易修復,修復成本越低;反之Bug發現的越晚,越難修復,修復成本越高。

更多關于IAR Embedded Workbench和Build Tools(包含C-STAT靜態代碼分析和C-RUN動態代碼分析)的信息,可以參考:

https://www.iar.com/zh/products/architectures/arm/iar-embedded-workbench-for-arm/

https://www.iar.com/zh/products/architectures/arm/iar-build-tools-for-arm/

https://www.iar.com/zh/products/c-stat

https://www.iar.com/zh/products/c-run

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3618

    瀏覽量

    129637
  • 代碼
    +關注

    關注

    30

    文章

    4820

    瀏覽量

    68882

原文標題:在日常開發過程中提高代碼質量

文章出處:【微信號:IAR愛亞系統,微信公眾號:IAR愛亞系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何提高嵌入式代碼質量

    嵌入式代碼質量是至關重要的。本文將探討如何通過有效的開發方法和工具來提高嵌入式代碼質量,以確
    發表于 01-15 10:48

    何在播放視頻過程中插入音頻

    ZDP14x0是一款基于開源GUI引擎的圖像顯示專用驅動芯片,可以通過串口或者SPI與其他芯片通信,且能播放視頻。本文將介紹如何在播放視頻過程中插入音頻。
    的頭像 發表于 12-26 11:13 ?315次閱讀
    如<b class='flag-5'>何在</b>播放視頻<b class='flag-5'>過程中</b>插入音頻

    何在Petalinux下Patch u-boot源碼

    在軟件開發過程中我們經常遇到用 Patch 來傳遞和更新代碼的場景。本文以一個端到端的例子來演示在 Petalinux 使用過程中,如何給 u-boot 的源碼生成 Patch 并在 Petalinux 中編譯。
    的頭像 發表于 12-04 16:26 ?1146次閱讀
    如<b class='flag-5'>何在</b>Petalinux下Patch u-boot源碼

    步進電機如何在加減速過程中控制技術?

    步進電機是一種將電脈沖信號轉換為角位移或線位移的電機,廣泛應用于各種自動化控制系統中。在加減速過程中,步進電機的控制技術至關重要,以確保系統的穩定性和精確性。 加減速控制原理 步進電機的加減速控制
    的頭像 發表于 10-23 10:02 ?474次閱讀

    自己做的TAS5825板子軟件開發過程中怎么接到PPC3上去調試呢?

    我們打算做一個TAS5825的板子,PPC3軟件已經申請下來了,有個問題是我們自己做的TAS5825板子軟件開發過程中怎么接到PPC3上去調試呢?
    發表于 10-15 08:15

    如何正確提高電能質量

    電能質量不僅關系到電力系統本身的穩定運行,更影響到廣大用戶的日常生活和產業發展。因此,采取有效措施提高電能質量,是確保電力供應安全、可靠且高效的重要環節。下面,我們將詳細探討幾種
    的頭像 發表于 08-30 10:11 ?518次閱讀

    華為云軟件質量保障方案構筑企業值得信賴的護城河

    質量是產品的生命線,質量問題不僅會導致企業財產損失,還可能引發業務中斷、客戶滿意度下降、企業品牌聲譽受損等負面影響。如何在軟件開發過程中全方位構建產品
    的頭像 發表于 08-28 09:35 ?522次閱讀

    OPA657在使用過程中如何降噪,如何提高信噪比?

    OPA657在使用過程中如何降噪,如何提高信噪比?有沒有通用的一些技巧?謝謝
    發表于 08-26 07:13

    三菱plc常開指令是什么

    三菱PLC(Programmable Logic Controller,可編程邏輯控制器)是一種廣泛應用于工業自動化領域的控制設備。它通過編程實現對機械設備的控制,以滿足生產過程中的各種需求。在三
    的頭像 發表于 06-20 10:44 ?1722次閱讀

    連焊如何在SMT加工過程中發生的?

    問題的嚴重性還是比較清楚的,也積極尋求解決方案。那么,連焊是如何在SMT加工過程中發生的呢?首先,我們要關注到焊接溫度和時間的影響。這兩個參數在SMT加工中起到至關重要的作
    的頭像 發表于 05-14 16:20 ?349次閱讀
    連焊如<b class='flag-5'>何在</b>SMT加工<b class='flag-5'>過程中</b>發生的?

    FPGA開發過程中配置全局時鐘需要注意哪些問題

    的正確性和穩定性。通過仿真可以檢查時序是否滿足要求,及時發現和解決問題。 綜上所述,配置全局時鐘是FPGA開發過程中的一個重要環節,需要仔細考慮和規劃。通過選擇合適的時鐘源、優化時鐘分配、減小時鐘歪斜、使用時鐘管理單元以及進行仿真和驗證等措施,可以確保全局時鐘的穩定性和可靠性,
    發表于 04-28 09:43

    代碼開發平臺的崛起:優勢、特點與應用

    代碼開發平臺是近年來迅速崛起的一種創新型軟件開發工具,以其高效、靈活的開發模式正顛覆著傳統的開發方式。不再需要編寫大量繁雜的
    的頭像 發表于 04-18 10:43 ?411次閱讀
    低<b class='flag-5'>代碼</b><b class='flag-5'>開發</b>平臺的崛起:優勢、特點與應用

    STM32G431RB在使用軟件生成代碼過程中報錯怎么解決?

    在使用軟件生成代碼過程中報錯,使用但是STM32G431RB 的開發
    發表于 03-06 06:15

    Stages—研發過程可視化建模和管理平臺

    Stages是美國UL Solutions旗下UL Method Park GmbH的產品,用于幫助企業定義、管理、發布、控制、優化其研發過程,同時使其研發過程符合CMMI、ASPICE
    的頭像 發表于 02-05 14:36 ?423次閱讀
    Stages—研<b class='flag-5'>發過程</b>可視化建模和管理平臺

    如何利用ITM實現更快的跟蹤?如何在代碼中使用ITM呢?

    在大多數固件開發過程中,需要有某種形式的診斷日志/跟蹤。
    的頭像 發表于 01-26 11:27 ?1771次閱讀
    如何利用ITM實現更快的跟蹤?如<b class='flag-5'>何在</b><b class='flag-5'>代碼</b>中使用ITM呢?
    主站蜘蛛池模板: 精品淑女少妇AV久久免费| 伊人香蕉在线播放视频免费| 日韩精品AV一区二区三区| 中文字幕免费在线视频| 6080yy 久久 亚洲 日本| 广东95后小情侣酒店自拍流出| 国家产午夜精品无人区| 麻豆官网md.pub| 亚洲国产成人综合| 成人毛片大全| 精品无码三级在线观看视频| 人人射人人插| 337p啪啪人体大胆| 国产真实女人一级毛片| 好大太快了快插穿子宫了| 国产久久re6免费热在线| 麻美ゆま夫の目の前で犯| 亚洲黄色在线播放| 国产精品99精品无码视亚| 任你躁精品一区二区三区| 97人妻碰视频在线观看| 花蝴蝶高清观看免费| 小小水蜜桃视频高清在线观看免费 | 在教室轮流被澡高H林萌| 成片在线看一区二区草莓| 秘密教学93话恩爱久等了免费| 一本之道加勒比在线观看| 国产精品资源网站在线观看| 日韩男明星| 97色色极品av影院| 久久精品亚洲热综合一本奇米| 欧美の无码国产の无码影院| 在线观看免费av网站| 国产一区私人高清影院| 婷婷亚洲五月色综合久久| 日本68xxxxxxxxx老师| 一个人在线观看视频免费| 果冻传媒2021一二三区| 亚洲高清视频免费| 国内精品久久久久影院亚洲| 特级淫片大乳女子高清视频|