轉(zhuǎn)自| 嵌入式大雜燴
之前給大家分享過(guò)嵌入式開發(fā)常用的代碼靜態(tài)分析工具,比如:PC-lint、LDRA、VectorCAST等。
今天再給大家分享一款不錯(cuò)的嵌入式靜態(tài)代碼掃描工具。
靜態(tài)代碼掃描?
靜態(tài)代碼掃描是指無(wú)需運(yùn)行被測(cè)代碼,通過(guò)詞法分析、語(yǔ)法分析、控制流、數(shù)據(jù)流分析等技術(shù)對(duì)程序代碼進(jìn)行掃描,找出代碼隱藏的錯(cuò)誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語(yǔ)句,錯(cuò)誤的遞歸,非法計(jì)算,可能出現(xiàn)的空指針引用等等。
同樣的,也有運(yùn)行時(shí)診斷的工具,如Valgrind等。
往期博文:Valgrind仿真調(diào)試工具的使用
靜態(tài)代碼掃描工具有很多,主流如:
cppcheck。免費(fèi),開源,更新較慢,可自己拓展開發(fā)。
clang。免費(fèi),開源,更新較慢,可自己拓展開發(fā)。
TscanCode 。免費(fèi),有專人維護(hù),定期根據(jù)用戶需求擴(kuò)展規(guī)則或新增功能特性。
pclint。付費(fèi),商業(yè)軟件,難以進(jìn)行功能擴(kuò)展。
coverity。付費(fèi),商業(yè)軟件,難以進(jìn)行功能擴(kuò)展。
關(guān)于這幾個(gè)工具各個(gè)指標(biāo)的詳細(xì)對(duì)比可參考文章:
本篇博文我們來(lái)介紹TscanCode。
TscanCode
TscanCode是騰訊研發(fā)的靜態(tài)代碼掃描工具,最早的版本是基于 cppcheck 二次開發(fā)。之后又重新自研,不僅支持 C/C++,還支持 C#,Lua 語(yǔ)言,在發(fā)掘 C/C++ 空指針、越界、未初始化、C#空引用、Lua變量未初始化等比較有效。
TscanCode 的 Github鏈接:
https://github.com/Tencent/TscanCode
TscanCode 可編譯、運(yùn)行于多個(gè)平臺(tái):Windows/Linux/Mac。
TscanCode 主要能夠發(fā)現(xiàn)的問(wèn)題如下:
自動(dòng)變量檢查:返回自動(dòng)變量(局部變量)指針;
越界檢查:數(shù)組越界返回自動(dòng)變量(局部變量)指針;
類檢查:構(gòu)造函數(shù)初始化;
內(nèi)存泄露檢查;
空指針檢查;
廢棄函數(shù)檢查;
下載得到:
各文件夾的內(nèi)容:
release文件夾:存放編譯后的二進(jìn)制文件,包含有Linux、Mac、Windows平臺(tái)。
samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語(yǔ)言。
trunk文件夾:存放TscanCode源代碼。
1、Linux下使用TscanCode
對(duì)應(yīng)的Linux二進(jìn)制文件存放在如下路徑:
TscanCode-master/release/linux/TscanCodeV2.14.2395.linux
使用前需要加上執(zhí)行權(quán)限:
chmod +x tscancode
例子:使用tscancode檢測(cè)samples文件夾下關(guān)于cpp的一些例子。
在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下執(zhí)行命令:
./tscancode --xml --enable=all -q ../../../samples/cpp/ >scan_result.xml 2>&1
得到掃描結(jié)果文件:scan_result.xml。該文件復(fù)制到Windows下使用表格工具打開可比較清晰地看到掃描結(jié)果:
例子:使用tscancode檢測(cè)C語(yǔ)言例子。
在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下新建一個(gè)文件:
test.c:
#includevoidtest(void) { charbuf[5]={0}; for(size_ti=0;i10;?i++) ????{ ????????buf[i]?=?1; ????} } int?main(int?argc,?char?**argv) { ????test(); ????return?0; }
掃描:
./tscancode --xml --enable=all -q ./test.c >scan_result.xml 2>&1
結(jié)果:
2、Windows下使用TscanCode
最新版本的release下已經(jīng)去掉windows下的可執(zhí)行文件??墒褂肰2.14.24版本的TscanCodeV2.14.24.windows.exe。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5045文章
18816瀏覽量
298445 -
開源
+關(guān)注
關(guān)注
3文章
3125瀏覽量
42067 -
C++
+關(guān)注
關(guān)注
21文章
2085瀏覽量
73301 -
代碼
+關(guān)注
關(guān)注
30文章
4670瀏覽量
67761
原文標(biāo)題:一款不錯(cuò)嵌入式靜態(tài)代碼掃描工具
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論