轉自| 嵌入式大雜燴
之前給大家分享過嵌入式開發常用的代碼靜態分析工具,比如:PC-lint、LDRA、VectorCAST等。
今天再給大家分享一款不錯的嵌入式靜態代碼掃描工具。
靜態代碼掃描?
靜態代碼掃描是指無需運行被測代碼,通過詞法分析、語法分析、控制流、數據流分析等技術對程序代碼進行掃描,找出代碼隱藏的錯誤和缺陷,如參數不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現的空指針引用等等。
同樣的,也有運行時診斷的工具,如Valgrind等。
往期博文:Valgrind仿真調試工具的使用
靜態代碼掃描工具有很多,主流如:
cppcheck。免費,開源,更新較慢,可自己拓展開發。
clang。免費,開源,更新較慢,可自己拓展開發。
TscanCode 。免費,有專人維護,定期根據用戶需求擴展規則或新增功能特性。
pclint。付費,商業軟件,難以進行功能擴展。
coverity。付費,商業軟件,難以進行功能擴展。
關于這幾個工具各個指標的詳細對比可參考文章:
本篇博文我們來介紹TscanCode。
TscanCode
TscanCode是騰訊研發的靜態代碼掃描工具,最早的版本是基于 cppcheck 二次開發。之后又重新自研,不僅支持 C/C++,還支持 C#,Lua 語言,在發掘 C/C++ 空指針、越界、未初始化、C#空引用、Lua變量未初始化等比較有效。
TscanCode 的 Github鏈接:
https://github.com/Tencent/TscanCode
TscanCode 可編譯、運行于多個平臺:Windows/Linux/Mac。
TscanCode 主要能夠發現的問題如下:
自動變量檢查:返回自動變量(局部變量)指針;
越界檢查:數組越界返回自動變量(局部變量)指針;
類檢查:構造函數初始化;
內存泄露檢查;
空指針檢查;
廢棄函數檢查;
下載得到:
各文件夾的內容:
release文件夾:存放編譯后的二進制文件,包含有Linux、Mac、Windows平臺。
samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語言。
trunk文件夾:存放TscanCode源代碼。
1、Linux下使用TscanCode
對應的Linux二進制文件存放在如下路徑:
TscanCode-master/release/linux/TscanCodeV2.14.2395.linux
使用前需要加上執行權限:
chmod +x tscancode
例子:使用tscancode檢測samples文件夾下關于cpp的一些例子。
在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下執行命令:
./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下已經去掉windows下的可執行文件。可使用V2.14.24版本的TscanCodeV2.14.24.windows.exe。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5138文章
19524瀏覽量
314697 -
開源
+關注
關注
3文章
3582瀏覽量
43452 -
C++
+關注
關注
22文章
2117瀏覽量
74765 -
代碼
+關注
關注
30文章
4886瀏覽量
70232
原文標題:一款不錯嵌入式靜態代碼掃描工具
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
一款適合嵌入式工程師使用的在線工具
求一款基于Murphypinyin的嵌入式鍵盤設計
如何從零開始開發一款嵌入式產品
介紹一下一款簡單易用的嵌入式AI方案
怎樣挑選一款MCU平臺進行嵌入式系統開發
如何快速上手一款新的嵌入式CPU芯片
嵌入式系統開發中的靜態分析
一款專業且全面的嵌入式開發調試工具
推薦一款專業且全面的嵌入式開發調試工具

評論