静态代码分析?
静态代码分析是指无需运行被测试代码,利用词法分析、语法分析、控制流分析、数据流分析等技术对程序代码进行扫描,以发现其中隐藏的错误和缺陷,例如参数不匹配、歧义的嵌套语句、错误的递归、非法计算、可能的空指针引用等。
另一方面,也存在着运行时诊断工具,比如Valgrind等。
静态代码分析工具有很多,其中主要的包括:
- 
cppcheck。免费、开源,更新速度较慢,可进行自定义拓展开发。  - 
clang。免费、开源,更新速度较慢,可进行自定义拓展开发。  - 
TscanCode。免费,由专业人员维护,定期根据用户需求扩展规则或新增功能特性。 - 
pclint。付费,商业软件,难以进行功能拓展。  - 
coverity。付费,商业软件,难以进行功能拓展。  
有关这些工具各项指标的详细比较,请参考以下文章:
https://blog.csdn.net/wetest_tencent/article/details/51516347
本篇博文我们来介绍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:
#include  
void test(void)
{
    char buf[5] = {0};
    for (size_t i = 0; i 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。
可参照文章:
https://blog.csdn.net/m0_53168002/article/details/126596565
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

		
			    	微信扫一扫打赏
			    
			    	支付宝扫一扫打赏	
			    