靜態代碼掃描工具簡介


介紹一些常用的靜態代碼掃描工具,由於我也是才使用,可能了解的不全面。另外,以下我說明的代碼是使用C語言編寫的。

1 Flawfinder

簡介:在源代碼中查找潛在的安全缺陷的軟件。

下載地址:Flawfinder Home Page (dwheeler.com)

image-20210427112623331

1)運行環境:Linux,如果要在Windows下使用需要使用Cygwin,Cygwin官網:https://cygwin.com/index.html。

2)使用方式:這里給出最簡單的使用方式,其余參數請參考說明文檔。

下載之后,直接解壓,然后直接運行:

./flawfinder 代碼所在目錄

image-20210427113628884

也可以使用重定向符將結果輸出到一個log中。

$ ./flawfinder ~/My_Cli/ >check.log

3)輸出結果

在輸出結果中,有檢查的統計:

image-20210427114427222

總共檢查了3771行代碼,用時0.07秒,代碼缺陷一共分為6個等級,0最低,5最高。

Hits@level: 表示各個缺陷等級檢測出的問題個數。

image-20210427133154935

每個缺陷都有一個含義說明,以及對應的編碼,編碼的含義可以在幫助文檔中查看。

image-20210427133345538

image-20210427133434099

4)注釋不檢測

如果有些代碼缺陷是Flawfinder誤報的,我們希望不檢查這個缺陷,可使用以下兩種方式在代碼中注釋,注釋之后將不會檢查這個缺陷。

image-20210427133736832

2 cppcheck

  1. 簡介

Cppcheck是一種代碼缺陷靜態檢查工具。不同於編譯器以及其它分析工具,cppcheck只檢查編譯器檢

查不出來的bug,不檢查語法錯誤。Cppcheck將軟件缺陷從靜態源代碼的角度划分為12個檢查類,分別

給予檢測和定位,並賦予8種不同的級別,分別為none,error,warning,style,performance,

portability,information,debug。

下載地址:Cppcheck - A tool for static C/C++ code analysis

2)異常說明

各種異常的說明:

img:當代碼被執行時,會有一些錯誤的行為(如:未定義行為、泄露);

img:當代碼執行時,可能會有未定義的行為;

img:可能的錯誤,建議改為更健壯的寫法,例如:未使用的代碼/變量/函數、總是為真/假、運算符優先級。

img:使代碼運行更快的建議。這些建議僅基於一些通用知識。通過修復這些差異,不確定會得到明顯的速度提升。

img:可移植性警告。例如,定義的方式,64位的可移植性等。

img:配置問題,如果你想得到這樣的輸出,那就沒問題,但需要更改cppcheck的配置。

3)使用方式

打開軟件,點擊”Analyze“,然后點擊"目錄",選擇我們需要檢查的代碼目錄即可。

image-20210427134031898

可以通過勾選下圖中的圖標進行查看error、warning、style等消息類型

img

4)查看結果

點擊“查看”,選擇“統計”,可看到統計結果。點擊“全部展開”,可看到每個文件的掃描結果。

image-20210427134445237

也可選擇“文件”,然后選擇“保存結果到文件”,支持3種文件格式類型,我比較喜歡使用csv格式,方便查看。

image-20210427134710324

3 TscanCode

  1. 簡介

TscanCode是騰訊自研的一款靜態代碼掃描工具,支持C++語言,C#,Lua語言,在發掘C++空指針,

越界、未初始化,C#空引用,Lua變量未初始化等比較有效。

下載地址:Tencent/TscanCode: A static code analyzer for C++, C#, Lua (github.com)

2)使用方式

打開軟件,選擇“掃描文件夾”即可。

image-20210427135709917

掃描完成后,會直接輸出彈出一個掃描結果的窗口,可以保存結果,僅支持xml格式。

image-20210427135616706

也可以直接雙擊結果,查看報錯的位置的代碼。

image-20210427140024174

4)規格選擇

點擊“設置”,可查看代碼掃描的規則,以及選擇規則。

image-20210427140227315


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM