Polyspace介紹及入門操作

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。[https://editor.csdn.net/md?articleId=103352448](https://editor.csdn.net/md?articleId=103352448)

另外,部分摘抄自:博主:huior,鏈接地址:http://www.51testing.com/html/51/10851-73049.html;部分摘抄自:嵌入式軟件動態運行時錯誤的檢測,鏈接地址:https://wenku.baidu.com/view/2e151ef10242a8956bece444.html

0前言

PolySpace測試技術始於1996年,當時歐洲亞麗安娜501火箭由於飛行計算機軟件運行錯誤而導致主/輔計算機全部停機並在飛行升空後爆炸,爲此,法國國家計算機與控制研究所、歐洲航天局組織專門的力量研製以抽象解釋技術(Abstract Interpretation techniques)爲理論基礎的新一代軟件驗證/測試工具—PolySpace,並在亞麗安娜502上得到成功的應用。1999年由法國國家計算機與控制研究所、歐洲航天局共同成立PolySpace Technology公司,將PolySpace產品正式商業化,並且在國內外軍用項目上得到廣泛應用。PolySpace是世界上首家自動檢測嵌入式軟件運行錯誤的工業化工具,是新一代的軟件測試工具。
  2007年4月25日,PolySpace正式宣佈被Mathworks收購,成爲MathWorks產品家族的一員, 其作用原理:簡單來說,Polyspace是基於抽象解釋原理的代碼級靜態分析和驗證工具。Polyspace由Bug Finder和Code Prover組成。Bug Finder使用語義分析的方法查找代碼中的運行時錯誤、併發問題、安全漏洞和其他缺陷。Polyspace Code Prover使用抽象解釋法證明源代碼中不存在溢出、被零除、數組訪問越界等運行時錯誤。

在這裏插入圖片描述
圖1

1解決的問題

PolySpace解決的是Run-time Errors(運行時錯誤),其實就是幫忙發現代碼自身存在的錯誤。具體到C語言來說,檢測的錯誤主要是:
在這裏插入圖片描述
圖2
  從技術上來講,只要是C代碼和C++代碼,PolySpace都可以拿來用。但根據經驗和PolySpace的特點,用在以下類型的代碼上效果發揮最佳:嵌入式C代碼、算法類型的,即運算多,典型的如TI DSP平臺上的程序、Vxworks平臺的控制類程序等;在通訊類、界面類的代碼上效果則一般。

2入門操作

首先,申明一下,本文只是講Polyspace Bug Finder的入門操作,Code Prover類似。並且,通過SIMULLINK建模自動生成代碼,然後靜態分析C代碼。

2.1 建模

在這裏插入圖片描述
圖3

2.2 生成代碼參數配置

在這裏插入圖片描述
圖4
在這裏插入圖片描述
圖5

生成代碼文件夾:
在這裏插入圖片描述
圖6

備註: 基於模型設計—自定義目標系統配置指南鏈接:https://pan.baidu.com/s/1ym_OkoRet_bMrQIO6uokYA 提取碼:f4y6)

2.3 建立Polyspace工程代入C語言

File——>New Project(Ctrol+N)——>
在這裏插入圖片描述
圖7

2.4 導入.h和.c文件,C語言規範以及配置分析參數

在這裏插入圖片描述
圖8

2.5 根據錯誤提示查找Help,修改模型重新Polyspace靜態分析

經Polyspace分析後的代碼結果以不同顏色表:

綠色: 代表爲安全代碼,無需花過多精力審查;

紅色: 代碼問題代碼,需要立刻解決;

灰色: 代表不可達代碼,需要審查是設計錯誤還是有意爲之;

橙色: 代表有風險代碼,需要重點審查。

另外還可以設定編碼規範(如MISRA)和自定義代碼風格,違反之處以紫色顯示;同時可以看到代碼變量隨控制流的數據範圍變化情況,快速查找和定位問題原因。

3 Polyspace靜態分析的侷限性

PolySpace最大的侷限性在於:分析速度慢。通常情況下,在配置比較高(CPU:3G Memory: >1G)的PC上,完整的分析1000行代碼,平均需要15分鐘。根據多年來和客戶打交道的經驗,客戶普遍抱怨分析速度太慢。

4 Polyspace靜態分析的建議

(1) 每個工具都有自身的優缺點。我們使用工具,和交朋友一樣,要看的是其有什麼優點,以及如何避開其不足,而不是緊盯其一個小缺點。

(2) PolySpace本身面向的就是高可靠性的市場,所以PolySpace對代碼要求比較嚴格。在使用之前,如果代碼不太規範,可能要對代碼做一點修改,但都是通過配置的方式,不是直接去代碼文件中修改。

(3) 建議程序員去使用PolySpace,因爲它不僅可以幫助你發現錯誤,更重要的是,長期使用,會提高你的編程能力,讓你明白什麼樣的寫法是安全可靠的,什麼樣的寫法是危險的,受益匪淺啊。

5 Polyspace在汽車行業應用

以汽車行業爲例,已發生的多次召回事件經分析是因爲軟件缺陷尤其是運行時錯誤(run-time error)造成的。所謂的運行時錯誤,是指在通常的調試過程中需要程序運行起來之後纔可能顯現的錯誤,如指針越界、數據溢出等。換句話說,如果測試用例沒有覆蓋到特定的輸入條件時,這些問題可能就沒有機會被發現。

5.2 Windows平臺下調試運行時錯誤發生的案例

在這裏插入圖片描述
  除汽車行業以外,航空航天、鐵路、醫療等所謂高完整性系統行業,嵌入式軟件往往承載着系統大部分重要功能的實現,一旦發生問題會帶來異常嚴重的後果。軟件的靜態分析作爲動態功能測試的重要補充,在這些行業應用非常廣泛。
  Polyspace所採用的靜態分析方法是抽象解釋,是軟件形式化驗證方法(Formal Verification)的一種,它在處理複雜的計算問題或模型的過程中通過對問題進行近似抽象,取出其中的關鍵部分進行分析,從而減少問題的複雜程度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章