1. 程式人生 > >程式碼靜態分析--試用SpecChecker

程式碼靜態分析--試用SpecChecker

將整個程式碼工程檔案匯入SpecChecker後,其提供如下分析功能:

  1. 安全規則檢查。依據制定的程式設計規則(MISRA C、企業自定程式設計規範等)對程式碼進行規則檢查。違背規則的語句會在結果中給出,並指出違背的規則項。
  2. 軟體質量度量。軟體質量度量的分析依賴安全規則檢查和程式碼度量分析。衡量的指標有:可靠性、可維護性、可移植性、效率性。試用版本上無軟體質量度量功能。自動生成的報告中雖有質量度量的描述,但質量度量的分析圖不可見
  3. 程式碼結構分析與視覺化。對程式碼結構進行分析,並將控制流程圖和函式呼叫關係圖以圖形化形式顯示。其中控制流程圖針對單個函式,可清晰地瞭解函式的分支、跳轉和迴圈結構;函式呼叫關係圖針對一組函式,呈現函式間的呼叫與被呼叫關係。在查詢軟體bug以及詳細設計文件編寫中,利用此功能可提供極大方便。
  4. 程式碼度量分析。程式碼規模類、預處理類和程式碼邏輯複雜度類三大類度量從函式、檔案和工程三個層次給出度量分析結果。其中檔案度量結果是本檔案中所有函式度量結果的總結,工程度量結果中的圈複雜度是該工程檔案中所有函式圈複雜度的總和。程式碼度量分析用來評價軟體在開發和測試階段的內部質量表現。SpecChecker共提供了三大類程式碼度量項:程式碼規模類、預處理類和程式碼邏輯複雜度類,細分項包含50種程式碼度量項。
  5. 共享變數與資料競爭分析。共享變數分析檢查出每個全域性變數的讀/寫函式,方便查詢軟體bug;資料競爭分析檢查變數入口函式與中斷函式是否存在資料競爭關係,幫助開發人員避免寫出的程式碼因資料競爭造成軟體故障。

注:1)、5)二項的分析結果需要經過開發人員確認,排除工具誤報。3)項作為輔助用,不作為靜態分析報告給開發人員。2)項與4)項有定義上的不清晰,目前的定義是:軟體質量度量根據編碼規則檢查、程式碼度量、共享變數分析、執行時缺陷檢測(將來版本中新增)這四個來綜合評判。也即,程式碼度量分析是軟體質量度量的一個指標。4)項的分析結果需要人工根據報告得出結論。

Questions(待解決):

  1. 軟體質量度量的結果如何解讀,開發人員如何利用該結果?
  2. 軟體質量度量與程式碼度量概念有何區別?
  3. 程式碼度量分析的各子專案中,哪些指標是ISO26262認證需要用到的?