轉(zhuǎn)自| 嵌入式大雜燴
之前給大家分享過嵌入式開發(fā)常用的代碼靜態(tài)分析工具,比如:PC-lint、LDRA、VectorCAST等。
今天再給大家分享一款不錯的嵌入式靜態(tài)代碼掃描工具。
靜態(tài)代碼掃描?
靜態(tài)代碼掃描是指無需運行被測代碼,通過詞法分析、語法分析、控制流、數(shù)據(jù)流分析等技術對程序代碼進行掃描,找出代碼隱藏的錯誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現(xiàn)的空指針引用等等。
同樣的,也有運行時診斷的工具,如Valgrind等。
往期博文:Valgrind仿真調(diào)試工具的使用
靜態(tài)代碼掃描工具有很多,主流如:
cppcheck。免費,開源,更新較慢,可自己拓展開發(fā)。
clang。免費,開源,更新較慢,可自己拓展開發(fā)。
TscanCode 。免費,有專人維護,定期根據(jù)用戶需求擴展規(guī)則或新增功能特性。
pclint。付費,商業(yè)軟件,難以進行功能擴展。
coverity。付費,商業(yè)軟件,難以進行功能擴展。
關于這幾個工具各個指標的詳細對比可參考文章:
本篇博文我們來介紹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 可編譯、運行于多個平臺:Windows/Linux/Mac。
TscanCode 主要能夠發(fā)現(xiàn)的問題如下:
自動變量檢查:返回自動變量(局部變量)指針;
越界檢查:數(shù)組越界返回自動變量(局部變量)指針;
類檢查:構造函數(shù)初始化;
內(nèi)存泄露檢查;
空指針檢查;
廢棄函數(shù)檢查;
下載得到:

各文件夾的內(nèi)容:
release文件夾:存放編譯后的二進制文件,包含有Linux、Mac、Windows平臺。
samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語言。
trunk文件夾:存放TscanCode源代碼。
1、Linux下使用TscanCode
對應的Linux二進制文件存放在如下路徑:
TscanCode-master/release/linux/TscanCodeV2.14.2395.linux

使用前需要加上執(zhí)行權限:
chmod +x tscancode
例子:使用tscancode檢測samples文件夾下關于cpp的一些例子。

在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下執(zhí)行命令:
./tscancode --xml --enable=all -q ../../../samples/cpp/ >scan_result.xml 2>&1
得到掃描結果文件:scan_result.xml。該文件復制到Windows下使用表格工具打開可比較清晰地看到掃描結果:


例子:使用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
結果:

2、Windows下使用TscanCode
最新版本的release下已經(jīng)去掉windows下的可執(zhí)行文件。可使用V2.14.24版本的TscanCodeV2.14.24.windows.exe。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5198文章
20442瀏覽量
333976 -
開源
+關注
關注
3文章
4203瀏覽量
46125 -
C++
+關注
關注
22文章
2123瀏覽量
77110 -
代碼
+關注
關注
30文章
4967瀏覽量
73954
原文標題:一款不錯嵌入式靜態(tài)代碼掃描工具
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
一款適合嵌入式工程師使用的在線工具
求一款基于Murphypinyin的嵌入式鍵盤設計
怎么設計一款ARM嵌入式汽車節(jié)能控制系統(tǒng)?
分享一款不錯的基于嵌入式Web Server的無線數(shù)據(jù)采集系統(tǒng)
如何從零開始開發(fā)一款嵌入式產(chǎn)品
介紹一下一款簡單易用的嵌入式AI方案
怎樣挑選一款MCU平臺進行嵌入式系統(tǒng)開發(fā)
如何快速上手一款新的嵌入式CPU芯片
嵌入式系統(tǒng)開發(fā)中的靜態(tài)分析
一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具
推薦一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具
分享一款不錯的嵌入式靜態(tài)代碼掃描工具
評論