推荐一个好用的嵌入式静态代码扫描工具!

共 3117字,需浏览 7分钟

 ·

2023-11-08 08:35




           
















静态代码扫描?


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


同样的,也有运行时诊断的工具,如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 <stdio.h>

void test(void)
{
    char buf[5] = {0};

    for (size_t i = 0; i < 10; 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。


可参照文章:



https://blog.csdn.net/m0_53168002/article/details/126596565










最近很多小伙伴找我要一些程序员必备资料,于是我翻出了压箱底的宝藏,免费分享给大家!




扫描海报二维码免费获取。









浏览 1090
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报