引入開源工具TscanCode對源代碼進行靜態掃描,開發人員對工具掃描的問題進行有針對性的分析及處理。
一、TScanCode安裝
代碼倉庫為:https://github.com/Tencent/TscanCode, 我們可以自己下載下來編譯,
也可以使用騰訊預編譯好的可執行文件(代碼倉庫的 release 目錄)。簡單起見,我們直接使用預編譯好的文件就行。
第一種:
$ git clone https://github.com/Tencent/TscanCode.git
$ cd TscanCode/release/linux/
$ unzip TscanCodeV2.14.24.linux.zip
$ cd TscanCodeV2.14.24.linux/TscanCodeV2.14.2395.linux
$ chmod a+x tscancode
$ echo "PATH=$PATH:$(pwd)" >> ~/.bashrc
$ source ~/.bashrc
第二種,建議使用:
cd trunk/
make
修改cfg/cfg.xml #cfg.xml 配置不當,可能導致檢測結果為空,建議value="0"的再開啟一些
二、掃描規則與配置
2.1 檢測問題列表
代碼安全靜態掃描工具TscanCode主要能夠發現的問題如下:
1、自動變量檢查: 返回自動變量(局部變量)指針;
2、越界檢查:數組越界返回自動變量(局部變量)指針;
3、類檢查:構造函數初始化;
4、內存泄露檢查;
5、空指針檢查;
6、廢棄函數檢查;
2.2 掃描規則配置
代碼安全靜態掃描工具TscanCode支持多平台運行,包括Linux、Windows版本,在Linux下可通過cfg/cfg.xml對掃描的規則進行配置,
其中通過設置value=0則禁用,value=1則啟用。
三、 靜態掃描過程
3.1 配置掃描規則
根據需要定制掃描規則,編輯2.2 所述的規則配置文件cfg/cfg.xml,或直接使用默認的掃描規則。
3.2 准備掃描對象
將源代碼放到指定路徑下${SRC_CODE}(路徑中不能包含root文件夾,TscanCode特殊性)。
如,export SRC_CODE=~/rpmbuild/kylin-scanner/
3.3 執行代碼掃描
進到tscancode安裝目錄,這里為./trunk/目錄。
執行./tscancode --xml --enable=all -q ${SRC_CODE} >scan_result.xml 2>&1
;
TscanCode會將結果按照固定的XML格式寫入文件中。
3.4 分析掃描結果
選擇Excel工具打開XML報告(為了處理更直觀),在左側插入一列處理情況。
開發人員根據報告對代碼上下文進行分析,判斷是否為工具誤報。
對於確認為問題的代碼,由開發人員處理后重新進行代碼安全靜態掃描,直到問題關閉。
參考: