日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

如何在日常開發(fā)過程中提高代碼質(zhì)量

IAR愛亞系統(tǒng) ? 來源:IAR愛亞系統(tǒng) ? 2025-01-23 09:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著技術(shù)的不斷進(jìn)步,客戶期望越來越高,嵌入式設(shè)備變得越來越智能,對(duì)應(yīng)的嵌入式系統(tǒng)和軟件也變得越來越復(fù)雜,同時(shí)產(chǎn)品的開發(fā)周期變得越來越短。如何在短時(shí)間內(nèi)開發(fā)出高質(zhì)量的軟件對(duì)產(chǎn)品的成功起著決定性的作用。提高代碼質(zhì)量是一個(gè)系統(tǒng)工程,本文主要介紹開發(fā)人員如何在日常開發(fā)過程中提高代碼質(zhì)量。

01

什么是代碼質(zhì)量?

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

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

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

可測(cè)試性(Testability):“好”代碼應(yīng)該易于測(cè)試。

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

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

可擴(kuò)展性(Extensibility):“好”代碼應(yīng)該易于擴(kuò)展。

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

02

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

提高代碼質(zhì)量不是一項(xiàng)一次性任務(wù),而是一項(xiàng)需要長(zhǎng)期堅(jiān)持的實(shí)踐。下面是目前常用的一些提高代碼質(zhì)量的實(shí)踐:

遵循編碼標(biāo)準(zhǔn):編碼標(biāo)準(zhǔn)是前輩總結(jié)的一些編碼最佳實(shí)踐和經(jīng)驗(yàn)教訓(xùn)。編碼標(biāo)準(zhǔn)一般分為公司內(nèi)部編碼標(biāo)準(zhǔn)(比如代碼風(fēng)格和命名規(guī)則等)和行業(yè)編碼標(biāo)準(zhǔn)(比如MISRA, CERT和CWE等)。

靜態(tài)代碼分析:靜態(tài)代碼分析可以幫助檢查代碼是否遵循相關(guān)編碼標(biāo)準(zhǔn)。

單元測(cè)試:?jiǎn)卧獪y(cè)試主要是功能測(cè)試,可以幫助測(cè)試代碼是否符合對(duì)應(yīng)的設(shè)計(jì),確保代碼功能的正確性。

代碼審查:代碼審查可以加強(qiáng)開發(fā)者之間的協(xié)作,幫助檢查代碼中潛在的邏輯問題。

使用版本控制:使用版本控制可以管理代碼變更歷史,同時(shí)方便團(tuán)隊(duì)協(xié)作。

CI/CD:CI/CD可以實(shí)現(xiàn)自動(dòng)化構(gòu)建、靜態(tài)代碼分析和單元測(cè)試。

03

為什么需要在日常開發(fā)過程中提高代碼質(zhì)量?

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

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

Bug發(fā)現(xiàn)的越早,越容易修復(fù),修復(fù)成本越低;反之Bug發(fā)現(xiàn)的越晚,越難修復(fù),修復(fù)成本越高。

在日常開發(fā)編碼階段過程中提高代碼質(zhì)量,可以盡早發(fā)現(xiàn)代碼中的Bug,盡快修復(fù)代碼中的Bug,大大降低修復(fù)Bug的成本。

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

04

如何在日常開發(fā)過程中提高代碼質(zhì)量?

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

構(gòu)建0 Error和0 Warning

在構(gòu)建的時(shí)候,開發(fā)人員會(huì)做到0 Error (因?yàn)镋rror會(huì)導(dǎo)致構(gòu)建失敗)。但是很多時(shí)候沒有做到0 Warning (因?yàn)閃arning不會(huì)導(dǎo)致構(gòu)建失敗)。但是Waring有可能是潛在的隱藏的Bug。

下面是一個(gè)經(jīng)典的編譯器Warning:提示應(yīng)該使用比較運(yùn)算符==而不是賦值符=:

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

修改之后重新構(gòu)建:0 Error和0 Warning:

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

靜態(tài)代碼分析

構(gòu)建0 Error和0 Warning之后,建議先做靜態(tài)代碼分析,因?yàn)殪o態(tài)代碼分析不需要運(yùn)行代碼,分析起來比較方便快捷,而且靜態(tài)代碼分析能檢測(cè)出一些常見的代碼錯(cuò)誤。

在IAR Embedded Workbench當(dāng)中,只需要先勾選對(duì)應(yīng)的C-STAT靜態(tài)代碼檢查規(guī)則:

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

就可以使用C-STAT對(duì)整個(gè)工程進(jìn)行靜態(tài)代碼分析:

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

也可以使用C-STAT對(duì)單個(gè)文件進(jìn)行靜態(tài)代碼分析:

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

分析完成后,對(duì)應(yīng)C-STAT Messages窗口會(huì)顯示對(duì)應(yīng)檢查結(jié)果,雙擊對(duì)應(yīng)信息可以定位到源代碼位置:

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

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

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

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

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

使用IAR C-STAT可以非常方便地進(jìn)行靜態(tài)代碼分析并且迅速得到反饋,以確保代碼符合相應(yīng)的編碼標(biāo)準(zhǔn)。

單元測(cè)試

在靜態(tài)代碼分析之后,建議做單元測(cè)試。因?yàn)殪o態(tài)代碼分析只能檢查代碼是否遵循相關(guān)編碼標(biāo)準(zhǔn),代碼的功能測(cè)試還需要單元測(cè)試。IAR本身沒有提供單元測(cè)試工具,IAR有很多提供單元測(cè)試工具的合作伙伴。同時(shí)IAR里面的C-RUN動(dòng)態(tài)代碼分析可以幫助在單元測(cè)試時(shí)發(fā)現(xiàn)一些潛在的問題。

在IAR Embedded Workbench當(dāng)中,只需要勾選對(duì)應(yīng)的C-RUN動(dòng)態(tài)代碼檢查規(guī)則:

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

重新構(gòu)建,編譯器會(huì)在有可能出現(xiàn)違反的地方自動(dòng)插入對(duì)應(yīng)的測(cè)試代碼。

在運(yùn)行的時(shí)候C-RUN會(huì)檢測(cè)是否有對(duì)應(yīng)的違反,比如下面C-RUN Messages提示訪問越界:

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

分析發(fā)現(xiàn)對(duì)應(yīng)數(shù)組的大小是4,但是錯(cuò)誤地引用了[4]( [4]是數(shù)組的第5個(gè)元素),導(dǎo)致訪問越界。修改代碼之后重新測(cè)試OK (C-RUN Messages窗口沒有對(duì)應(yīng)違反):

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

代碼審查 在單元測(cè)試完成之后,建議邀請(qǐng)同伴做代碼審查(為了提高代碼審查的效率,建議在構(gòu)建、靜態(tài)代碼分析和單元測(cè)試完成之后再做代碼審查)。

CI/CD

在代碼審查完成之后,建議上傳代碼到服務(wù)器進(jìn)行自動(dòng)化工作流。

IAR提供了對(duì)應(yīng)的自動(dòng)化工具IAR Build Tools可以通過命令行的方式進(jìn)行自動(dòng)化構(gòu)建、靜態(tài)代碼分析和下載調(diào)試(用于單元測(cè)試):

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

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

05

總結(jié)

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

有些公司居然沒有對(duì)代碼進(jìn)行靜態(tài)代碼分析、單元測(cè)試和代碼審查,代碼的正確性和質(zhì)量完全依靠最后的產(chǎn)品測(cè)試。

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

有些公司還沒有部署自動(dòng)化工作流(開發(fā)人員的時(shí)間非常寶貴,要盡量對(duì)代碼進(jìn)行自動(dòng)化構(gòu)建、靜態(tài)代碼分析和單元測(cè)試,這樣開發(fā)人員就可以盡快收到反饋,提高代碼質(zhì)量的同時(shí)也提升研發(fā)效率)。

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

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

選擇對(duì)應(yīng)的工具很重要,但是更重要的是:開發(fā)人員需要在日常開發(fā)過程中充分利用好對(duì)應(yīng)的工具來提高代碼質(zhì)量。因?yàn)榻^大部分Bug是在日常開發(fā)編碼階段引入的,Bug發(fā)現(xiàn)的越早,越容易修復(fù),修復(fù)成本越低;反之Bug發(fā)現(xiàn)的越晚,越難修復(fù),修復(fù)成本越高。

更多關(guān)于IAR Embedded Workbench和Build Tools(包含C-STAT靜態(tài)代碼分析和C-RUN動(dòng)態(tài)代碼分析)的信息,可以參考:

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

聲明:本文內(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

    文章

    3831

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74420

原文標(biāo)題:在日常開發(fā)過程中提高代碼質(zhì)量

文章出處:【微信號(hào):IAR愛亞系統(tǒng),微信公眾號(hào):IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32N6 在 PSRAM 上運(yùn)行代碼的調(diào)試

    開發(fā)其產(chǎn)品過程中,使用了 STM32N657X0H3Q??蛻舻?b class='flag-5'>代碼很大,不能放在SRAM 上運(yùn)行,想放在 PSRAM 上去運(yùn)行,并咨詢?nèi)?b class='flag-5'>何在 STM32CubeIDE 上進(jìn)行調(diào)試。2.
    發(fā)表于 04-15 16:02 ?0次下載

    LAT1621_STM32N6 在 PSRAM 上運(yùn)行代碼的調(diào)試

    STM32N6 項(xiàng)目中,用戶代碼可能會(huì)比較大,此時(shí)僅用內(nèi)部 SRAM 并不能滿足用代碼運(yùn)行需求。那么,將代碼放置到 PSRAM 上運(yùn)行也是個(gè)不錯(cuò)的選擇。?客戶在開發(fā)其產(chǎn)品
    發(fā)表于 03-11 10:44 ?0次下載

    開發(fā)過程中如何利用CW32L083系列微控制器的官方固件庫進(jìn)行程序編寫和調(diào)試?

    開發(fā)過程中,如何利用CW32L083系列微控制器的官方固件庫進(jìn)行程序編寫和調(diào)試?
    發(fā)表于 12-15 07:23

    電子工程師硬件設(shè)計(jì)開發(fā)指南

    電子工程師硬件設(shè)計(jì)開發(fā)指南 作為電子工程師,在硬件設(shè)計(jì)開發(fā)過程中,規(guī)范的文檔和清晰的設(shè)計(jì)思路至關(guān)重要。以下為大家詳細(xì)介紹硬件設(shè)計(jì)開發(fā)的相關(guān)要點(diǎn)。 文件下載: Amphenol Aerospace
    的頭像 發(fā)表于 12-10 15:05 ?738次閱讀

    電能質(zhì)量在線監(jiān)測(cè)裝置如何捕捉充電樁充電過程中的電流畸變特征?

    電能質(zhì)量在線監(jiān)測(cè)裝置通過 **“硬件精準(zhǔn)采集 - 信號(hào)預(yù)處理 - 定制化算法解析 - 工況自適應(yīng)識(shí)別 - 全周期數(shù)據(jù)追溯”** 的完整閉環(huán),捕捉充電樁充電過程中非線性電力電子負(fù)載特有的電流畸變特征
    的頭像 發(fā)表于 12-10 10:26 ?655次閱讀
    電能<b class='flag-5'>質(zhì)量</b>在線監(jiān)測(cè)裝置如何捕捉充電樁充電<b class='flag-5'>過程中</b>的電流畸變特征?

    開發(fā)指南】全志系列核心板開發(fā)過程中的常見問題及排查策略

    在長(zhǎng)期提供技術(shù)支持服務(wù)的過程中,飛凌嵌入式總結(jié)了用戶開發(fā)全志系列產(chǎn)品時(shí)常見的問題及排查方法。本文中,小編將為大家梳理這些經(jīng)驗(yàn),助力開發(fā)者快速定位問題,提升開發(fā)效率。
    的頭像 發(fā)表于 10-15 08:04 ?7071次閱讀
    【<b class='flag-5'>開發(fā)</b>指南】全志系列核心板<b class='flag-5'>開發(fā)過程中</b>的常見問題及排查策略

    芯片研發(fā)過程中的兩種流片方式

    芯片在研發(fā)過程中一般包含4個(gè)階段:芯片設(shè)計(jì)、生產(chǎn)樣片、測(cè)試驗(yàn)證和大規(guī)模量產(chǎn)。在完成芯片設(shè)計(jì)后,工程師們需要先拿到一些芯片樣片,用它們進(jìn)行測(cè)試和驗(yàn)證,來判斷新研發(fā)的芯片在功能和性能上是否符合設(shè)計(jì)要求
    的頭像 發(fā)表于 09-09 15:04 ?2568次閱讀
    芯片研<b class='flag-5'>發(fā)過程中</b>的兩種流片方式

    請(qǐng)問如何在Keil開發(fā)環(huán)境中查看代碼大小和SRAM使用情況?

    何在Keil開發(fā)環(huán)境中查看代碼大小和SRAM使用情況?
    發(fā)表于 08-20 06:38

    波峰焊機(jī)日常開啟及注意事項(xiàng)

    波峰焊機(jī)作為電子制造行業(yè)的關(guān)鍵設(shè)備,其穩(wěn)定運(yùn)行直接影響產(chǎn)品質(zhì)量和生產(chǎn)效率。掌握科學(xué)的日常開啟流程和操作注意事項(xiàng),是保障設(shè)備性能和生產(chǎn)安全的基礎(chǔ)。以下從開機(jī)準(zhǔn)備、開機(jī)流程、運(yùn)行監(jiān)控、關(guān)機(jī)操作及日常維護(hù)五個(gè)方面詳細(xì)說明。
    的頭像 發(fā)表于 07-18 16:52 ?4349次閱讀

    HarmonyOS實(shí)戰(zhàn):Tab頂部滑動(dòng)懸停功能實(shí)現(xiàn)

    日常開發(fā)過程中,遇到這種 Scroll 嵌套 List 列表滑動(dòng)頂部懸停的場(chǎng)景十分常見,在鴻蒙開發(fā)時(shí)也正好實(shí)現(xiàn)了這個(gè)功能,本篇文章將帶你一步步實(shí)現(xiàn) Tab 頂部懸停的效果,建議點(diǎn)贊收藏!
    的頭像 發(fā)表于 06-24 17:07 ?595次閱讀

    HarmonyOS實(shí)戰(zhàn): 城市選擇功能的快速實(shí)現(xiàn)

    最近在日常開發(fā)過程中,需要實(shí)現(xiàn)城市選擇功能,同時(shí)支持模糊搜索。看似簡(jiǎn)單的功能動(dòng)手實(shí)現(xiàn)起來卻有很多難點(diǎn)。本篇文章詳細(xì)記錄開發(fā)過程中遇到的問題和對(duì)應(yīng)的解決方法,希望能夠幫助你,建議點(diǎn)贊收藏!
    的頭像 發(fā)表于 06-24 17:07 ?592次閱讀

    超聲波清洗機(jī)如何在清洗過程中減少廢液和對(duì)環(huán)境的影響?

    超聲波清洗機(jī)如何在清洗過程中減少廢液和對(duì)環(huán)境的影響隨著環(huán)保意識(shí)的增強(qiáng),清洗過程中的廢液處理和環(huán)境保護(hù)變得越來越重要。超聲波清洗機(jī)作為一種高效的清洗技術(shù),也在不斷發(fā)展以減少廢液生成和對(duì)環(huán)境的影響。本文
    的頭像 發(fā)表于 06-16 17:01 ?839次閱讀
    超聲波清洗機(jī)如<b class='flag-5'>何在</b>清洗<b class='flag-5'>過程中</b>減少廢液和對(duì)環(huán)境的影響?

    HarmonyOS實(shí)戰(zhàn):高德地圖自定義定位圖標(biāo)展示

    前言 地圖定位功能基本上已經(jīng)成了日常應(yīng)用程序的必備功能之一,在日常開發(fā)地圖定位的功能的時(shí)候難免會(huì)遇到很多意想不到的問題,本篇文章記錄日常開發(fā)過程中的細(xì)節(jié)與完整的流程,幫助更多的開發(fā)者避
    的頭像 發(fā)表于 06-09 14:59 ?875次閱讀
    HarmonyOS實(shí)戰(zhàn):高德地圖自定義定位圖標(biāo)展示

    使用CY7C65213開發(fā)過程中,應(yīng)該用哪個(gè)interface進(jìn)行uart通信?

    在使用CY7C65213開發(fā)過程中,我想用CyUartRead讀數(shù)據(jù),但是好像沒有接口的deviceType是CY_TYPE_UART,想請(qǐng)問我應(yīng)該用哪個(gè)interface進(jìn)行uart通信? 是否有相關(guān)指導(dǎo)文件,或描述符指導(dǎo)?
    發(fā)表于 06-03 07:04

    提高鍵合晶圓 TTV 質(zhì)量的方法

    關(guān)鍵詞:鍵合晶圓;TTV 質(zhì)量;晶圓預(yù)處理;鍵合工藝;檢測(cè)機(jī)制 一、引言 在半導(dǎo)體制造領(lǐng)域,鍵合晶圓技術(shù)廣泛應(yīng)用于三維集成、傳感器制造等領(lǐng)域。然而,鍵合過程中諸多因素會(huì)導(dǎo)致晶圓總厚度偏差(TTV
    的頭像 發(fā)表于 05-26 09:24 ?1414次閱讀
    <b class='flag-5'>提高</b>鍵合晶圓 TTV <b class='flag-5'>質(zhì)量</b>的方法
    河北省| 崇义县| 雷州市| 甘肃省| 武胜县| 岚皋县| 墨脱县| 登封市| 广丰县| 蕲春县| 达拉特旗| 金坛市| 余庆县| 乐亭县| 红桥区| 广水市| 大英县| 张掖市| 涿鹿县| 阿拉善右旗| 莱阳市| 贡觉县| 江孜县| 米林县| 井研县| 安仁县| 广丰县| 慈溪市| 洮南市| 车险| 天峻县| 嘉禾县| 南汇区| 浦江县| 敦煌市| 潮安县| 游戏| 鄂州市| 佳木斯市| 保德县| 朝阳县|