良许Linux教程网 干货合集 一款不错嵌入式静态代码扫描工具

一款不错嵌入式静态代码扫描工具

之前我分享了一篇关于嵌入式开发常用的代码静态分析工具的文章,例如:PC-lint、LDRA、VectorCAST等。

今天,我想再向大家推荐一款优秀的嵌入式静态代码扫描工具。

什么是静态代码扫描?

静态代码扫描是指通过词法分析、语法分析、控制流分析、数据流分析等技术而无需运行被测代码,对程序代码进行扫描,以发现代码中隐藏的错误和缺陷,例如参数不匹配、嵌套语句的歧义、错误的递归、非法计算以及潜在的空指针引用等。

除了静态代码扫描工具外,还有一些运行时诊断工具,例如Valgrind等。

往期博文: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

image-20231021202329446
image-20231021202329446

TscanCode 可编译、运行于多个平台:Windows/Linux/Mac。

TscanCode 主要能够发现的问题如下:

  • 自动变量检查:返回自动变量(局部变量)指针;
  • 越界检查:数组越界返回自动变量(局部变量)指针;
  • 类检查:构造函数初始化;
  • 内存泄露检查;
  • 空指针检查;
  • 废弃函数检查;

下载得到:

image-20231021202333161
image-20231021202333161

各文件夹的内容:

  • release文件夹:存放编译后的二进制文件,包含有Linux、Mac、Windows平台。
  • samples文件夹:存放一些代码示例,分别有C++、C#、Lua语言。
  • trunk文件夹:存放TscanCode源代码。

1、Linux下使用TscanCode

对应的Linux二进制文件存放在如下路径:

TscanCode-master/release/linux/TscanCodeV2.14.2395.linux

image-20231021202336578
image-20231021202336578

使用前需要加上执行权限:

chmod +x tscancode

例子:使用tscancode检测samples文件夹下关于cpp的一些例子。

image-20231021202341488
image-20231021202341488

在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路径下执行命令:

./tscancode –xml –enable=all -q ../../../samples/cpp/ >scan_result.xml 2>&1

得到扫描结果文件:scan_result.xml。该文件复制到Windows下使用表格工具打开可比较清晰地看到扫描结果:

image-20231021202346196
image-20231021202346196
image-20231021202349550
image-20231021202349550

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

结果:

image-20231021202352993
image-20231021202352993

2、Windows下使用TscanCode

最新版本的release下已经去掉windows下的可执行文件。可使用V2.14.24版本的TscanCodeV2.14.24.windows.exe。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部