1. gzyueqian
      13352868059

      嵌入式開發:嵌入式系統開發中的靜態分析

      更新時間: 2023-01-19 14:10:37來源: 粵嵌教育瀏覽量:2980


      由于嵌入式系統行業的快速發展,嵌入式設備的代碼質量成為首要關注的問題之一。考慮到嵌入式系統開發的特殊性(調試困難、出錯成本高等)嵌入式開發者需要使用專門的工具來增強自己的代碼質量。

       

      態代碼分析器就是這些工具之一本文描述了靜態分析及其在嵌入式系統中的優勢。

       

      靜態代碼分析

      首先,讓我們弄清楚什么是靜態代碼分析器,它們可以執行什么功能。

      靜態代碼分析器是分析程序而不實際執行它的軟件靜態分析工具比編譯器對源代碼進行更深入的檢查。通常,編譯器只會發現語法錯誤。

       

      靜態分析工具如何工作

      分析器的輸入數據是源代碼(最好是可編譯的)

      分析器將源代碼轉換為一個特殊的模型以供進一步分析(AST、語義模型等);

      分析器通過將一組診斷規則應用于模型來搜索缺陷,診斷規則基于各種方法;

      分析儀以你方便的格式保存所有發出的警告;

      開發人員只需研究報告并修復所有缺陷;

       

      靜態分析儀可以執行各種任務。讓我們介紹一下分析儀最常見的任務:

      程序代碼中的錯誤檢測。在這種情況下,靜態分析極大地補充了代碼審查。它可以讓嵌入式開發人員在代碼審查之前發現并解決一些問題;

      廣義的代碼質量增強。代碼質量可以包括可讀性、可維護性、代碼復雜性、內聚程度,以及可以直接或間接影響錯誤數量的其他方面。因此,靜態分析器有助于遵循編碼標準(公司內部接受和普遍接受);

      代碼分析是CI/CD中質量關機制的一部分。分析器不僅警告代碼中的潛在錯誤,而且還起到保護機制的作用。如果代碼質量水平不符合規定要求,他們將停止連續交付。如果這些代碼分析器檢測到不符合標準的錯誤或代碼片段,則會擴展編譯器行為并阻止構建;

      收集項目度量、統計數據收集、反映項目“總體健康狀況”的圖表結構。




      實施的好處

      靜態分析器已被證明對嵌入式軟件非常有用,讓我們來看看靜態分析最明顯的積極方面。

       

      1.首先,靜態分析的使用減少了昂貴的可能性。

      嵌入式系統軟件中的錯誤非常麻煩。問題在于,一旦開始大規模生產,這些錯誤就不可能或幾乎不可能糾正。比方說,一家公司已經生產了數千臺洗衣機,并交付給商店。然而,事實證明,機器在某種模式下無法正常工作。公司應該做什么?

       

      所以,嵌入式設備的代碼應該盡可能徹底地測試尤其是在錯誤可能導致人員傷亡或巨大經濟損失的情況下。

      靜態代碼分析是檢測錯誤的過程,但它不保證能找到代碼中的所有錯誤。然而,嵌入式開發人員應該利用任何機會額外檢查代碼的正確性。靜態分析器可以指出各種錯誤,這些錯誤甚至在幾次代碼審查之后仍然存在。

      如果靜態分析可以幫助減少設備代碼中的錯誤數量,那就太棒了。也許這些特殊錯誤的發現會阻止生命的損失。或者,這些公司不會浪費很多錢,也不會因為客戶投訴而失去好名聲。

       

      2.靜態代碼分析器大大降低了軟件測試和調試過程的成本。

      靜態分析允許在編碼期間或者在夜間構建期間就已經找到bug。因此,搜索和修復大多數錯誤的成本會低得多。

       

      大概每個開發者都有過不成功的刷新設備的嘗試。例如,在這個過程中,設備沒有設置合適的電壓或者完全燒毀。發生了什么,你從哪里尋找問題?畢竟,問題的根源不僅僅是軟件錯誤。這也可能是硬件本身的錯誤或低質量的布局。因此,查找錯誤的過程可能需要很長時間。




      3.靜態分析的使用保證了沒有太多經驗的開發人員。

      程序錯誤可以形象地分為兩種類型。開發者知道第一種類型的錯誤。由于疏忽,這些錯誤意外地出現在代碼中。第二種錯誤出現在嵌入式開發人員不知道不可能用這種方式編寫代碼的情況下。換句話說,他們可以盡可能多地檢查這樣的代碼,但仍然不會發現錯誤。

       

      靜態分析器包含關于各種代碼模式的知識庫。在某些條件下,這些模式會導致錯誤。因此,他們可以指出開發人員自己不會發現的錯誤。一個例子是使用32time_t類型,這可能導致2038年后設備工作不正確。

       

      另一個例子是程序的未定義行為,這是由于不正確使用移位運算符<</>>而發生的。這些運算符在微控制器的代碼中被廣泛使用。不幸的是,開發人員經常非常粗心地使用這些運算符。這使得程序不可靠,并且依賴于編譯器的特定版本和設置。同時,程序可以運行,但這不是因為代碼編寫正確,而是因為開發人員很幸運。

       

      使用靜態分析器,嵌入式開發人員可以避免許多這種不愉快的情況。此外,你可以使用分析器來控制總體代碼質量。當項目團隊正在成長或變化時,這一點很重要。換句話說,分析器幫助跟蹤初學者是否開始編寫錯誤代碼。

       

      4.現代靜態分析器不僅發現代碼錯誤和漏洞,而且支持嵌入式系統的編碼標準。這些標準提高了程序的安全性、可移植性和可靠性。

      CC++是嵌入式系統的流行編程語言。MISRA CMISRA C++AUTOSAR C++等標準是為這些語言開發的。每個標準都有大量的規則和建議(MISRA C:143MISRA C++228AUTOSAR C++:超過350)。在沒有靜態代碼分析器的情況下進行編碼時,根本不可能遵守這么多規則和建議。這些規則是開發人員需要避免的編碼模式,從而降低出錯的可能性。目前,靜態分析的所有主要參與者(CoverityKlockworkPVS Studio等)都努力盡可能增加標準的覆蓋范圍。

       

      結論

      在嵌入式開發中,使用靜態分析器對于任何嵌入式項目都是非常有用的,是否需要靜態分析由你決定!


      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日本成本线在观看 | 亚洲综合网一区二区三区 | 亚洲欧美日本大码在线 | 色就是色亚洲欧洲视频 | 在线亚洲中文精品第1页视频 | 五月丁香综合缴情在线观看 |