程式的靜態測試之源程式靜態分析

2021-04-19 23:25:19 字數 687 閱讀 4368

通常採用以下一些方法進行源程式的靜態分析。

① 生成各種引用表

直接從表中查出說明/使用錯誤等。如,迴圈層次表、變數交叉引用表、標號交叉引用表等。

為使用者提供輔助資訊。如,子程式(巨集、函式)引用表、等價(變數、標號)表、常數表等。

用來做錯誤**和程式複雜度計算。如,操作符和運算元的統計表等。

② 靜態錯誤分析

靜態錯誤分析主要用於確定在源程式中是否有某類錯誤或「危險」結構。

型別和單位分析:為了強化對源程式中資料型別的檢查,發現在資料型別上的錯誤和單位上的不一致性,在程式語言中擴充了一些結構。如單位分析要求使用一種預處理器,它能夠通過使用一般的組合/消去規則,確定表示式的單位。

引用分析:最廣泛使用的靜態錯誤分析方法就是發現引用異常。如果沿著程式的控制路徑,變數在賦值以前被引用,或變數在賦值以後未被引用,這時就發生了引用異常。為了檢測引用異常,需要檢查通過程式的每一條路徑。也可以建立引用異常的探測工具。

表示式分析:對表示式進行分析,以發現和糾正在表示式中出現的錯誤。包括:在表示式中不正確地使用了括號造成錯誤。陣列下標越界造成錯誤。除式為零造成錯誤。對負數開平方,或對π求正切值造成錯誤。以及對浮點數計算的誤差進行檢查。

介面分析:關於介面的靜態錯誤分析主要檢查過程、函式過程之間介面的一致性。因此要檢查形參與實參在型別、數量、維數、順序、使用上的一致性; 檢查全域性變數和公共資料區在使用上的一致性。

Codeviz 分析kernel源程式

codeviz是一款開源的用於自動生成c c 源程式呼叫關係圖的工具,其主頁位址為 codeviz的實現原理是通過給gcc打補丁,而且不同版本的codeviz對應的gcc的版本也不一致。本文使用的是codeviz 1.0.11版本,codeviz 1.0.11.tar.gz。解壓後的目錄中compi...

通訊錄源程式分析

1 linkmanmodels類庫 1 linkmanmodels類庫,首先建立這樣乙個類庫,包括兩個檔案,person.cs和friendgroup.cs,分別定義了類person 僅包括有關 人 的屬性 和類friendgroup 有關 組 的屬性 2 model定義業務實體,它是傳遞各種資料的...

QT靜態程式發布

準備工具 1 vs2015 2 qt版本和與之相應的qt靜態版本 網上有教程 3 libeay32.lib ssleay32.lib perl nasm openssl 編譯晚上有教程 1 配置環境變數,注意在生產vs工程的時候需要把path中的靜態庫的路徑放在第一位 生成vs 工程配置 echo ...