通常採用以下一些方法進行源程式的靜態分析。
① 生成各種引用表
直接從表中查出說明/使用錯誤等。如,迴圈層次表、變數交叉引用表、標號交叉引用表等。
為使用者提供輔助資訊。如,子程式(巨集、函式)引用表、等價(變數、標號)表、常數表等。
用來做錯誤**和程式複雜度計算。如,操作符和運算元的統計表等。
② 靜態錯誤分析
靜態錯誤分析主要用於確定在源程式中是否有某類錯誤或「危險」結構。
型別和單位分析:為了強化對源程式中資料型別的檢查,發現在資料型別上的錯誤和單位上的不一致性,在程式語言中擴充了一些結構。如單位分析要求使用一種預處理器,它能夠通過使用一般的組合/消去規則,確定表示式的單位。
引用分析:最廣泛使用的靜態錯誤分析方法就是發現引用異常。如果沿著程式的控制路徑,變數在賦值以前被引用,或變數在賦值以後未被引用,這時就發生了引用異常。為了檢測引用異常,需要檢查通過程式的每一條路徑。也可以建立引用異常的探測工具。
表示式分析:對表示式進行分析,以發現和糾正在表示式中出現的錯誤。包括:在表示式中不正確地使用了括號造成錯誤。陣列下標越界造成錯誤。除式為零造成錯誤。對負數開平方,或對π求正切值造成錯誤。以及對浮點數計算的誤差進行檢查。
介面分析:關於介面的靜態錯誤分析主要檢查過程、函式過程之間介面的一致性。因此要檢查形參與實參在型別、數量、維數、順序、使用上的一致性; 檢查全域性變數和公共資料區在使用上的一致性。
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 ...