轉(zhuǎn)自| 嵌入式大雜燴
之前給大家分享過嵌入式開發(fā)常用的代碼靜態(tài)分析工具,比如:PC-lint、LDRA、VectorCAST等。
今天再給大家分享一款不錯的嵌入式靜態(tài)代碼掃描工具。
靜態(tài)代碼掃描?
靜態(tài)代碼掃描是指無需運(yùn)行被測代碼,通過詞法分析、語法分析、控制流、數(shù)據(jù)流分析等技術(shù)對程序代碼進(jìn)行掃描,找出代碼隱藏的錯誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現(xiàn)的空指針引用等等。
同樣的,也有運(yùn)行時診斷的工具,如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)于這幾個工具各個指標(biāo)的詳細(xì)對比可參考文章:
本篇博文我們來介紹TscanCode。
TscanCode
TscanCode是騰訊研發(fā)的靜態(tài)代碼掃描工具,最早的版本是基于 cppcheck 二次開發(fā)。之后又重新自研,不僅支持 C/C++,還支持 C#,Lua 語言,在發(fā)掘 C/C++ 空指針、越界、未初始化、C#空引用、Lua變量未初始化等比較有效。
TscanCode 的 Github鏈接:
https://github.com/Tencent/TscanCode
TscanCode 可編譯、運(yùn)行于多個平臺:Windows/Linux/Mac。
TscanCode 主要能夠發(fā)現(xiàn)的問題如下:
自動變量檢查:返回自動變量(局部變量)指針;
越界檢查:數(shù)組越界返回自動變量(局部變量)指針;
類檢查:構(gòu)造函數(shù)初始化;
內(nèi)存泄露檢查;
空指針檢查;
廢棄函數(shù)檢查;
下載得到:
各文件夾的內(nèi)容:
release文件夾:存放編譯后的二進(jìn)制文件,包含有Linux、Mac、Windows平臺。
samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語言。
trunk文件夾:存放TscanCode源代碼。
1、Linux下使用TscanCode
對應(yīng)的Linux二進(jìn)制文件存放在如下路徑:
TscanCode-master/release/linux/TscanCodeV2.14.2395.linux
使用前需要加上執(zhí)行權(quán)限:
chmod +x tscancode
例子:使用tscancode檢測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語言例子。
在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下新建一個文件:
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)注
5125文章
19438瀏覽量
313071 -
開源
+關(guān)注
關(guān)注
3文章
3533瀏覽量
43292 -
C++
+關(guān)注
關(guān)注
22文章
2116瀏覽量
74568 -
代碼
+關(guān)注
關(guān)注
30文章
4880瀏覽量
69998
原文標(biāo)題:一款不錯嵌入式靜態(tài)代碼掃描工具
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
一款適合嵌入式工程師使用的在線工具
求一款基于Murphypinyin的嵌入式鍵盤設(shè)計
怎么設(shè)計一款ARM嵌入式汽車節(jié)能控制系統(tǒng)?
分享一款不錯的基于嵌入式Web Server的無線數(shù)據(jù)采集系統(tǒng)
如何從零開始開發(fā)一款嵌入式產(chǎn)品
介紹一下一款簡單易用的嵌入式AI方案
怎樣挑選一款MCU平臺進(jìn)行嵌入式系統(tǒng)開發(fā)
推薦一款比較好的嵌入式開發(fā)板
如何快速上手一款新的嵌入式CPU芯片
怎樣去設(shè)計一款RK3399Pro嵌入式主機(jī)呢
嵌入式系統(tǒng)開發(fā)中的靜態(tài)分析
一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具
推薦一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具

評論