0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

strongerHuang 来源:嵌入式大杂烩 2023-10-16 15:39 次阅读

转自| 嵌入式大杂烩

之前给大家分享过嵌入式开发常用的代码静态分析工具,比如: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

b6d91d4a-6742-11ee-939d-92fbcf53809c.png

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

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

自动变量检查:返回自动变量(局部变量)指针;

越界检查:数组越界返回自动变量(局部变量)指针;

类检查:构造函数初始化;

内存泄露检查;

空指针检查;

废弃函数检查;

下载得到:

b6e290f0-6742-11ee-939d-92fbcf53809c.png

各文件夹的内容:

release文件夹:存放编译后的二进制文件,包含有Linux、Mac、Windows平台。

samples文件夹:存放一些代码示例,分别有C++、C#、Lua语言。

trunk文件夹:存放TscanCode源代码。

1、Linux下使用TscanCode

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

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

b6ec4c30-6742-11ee-939d-92fbcf53809c.png

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

chmod +x tscancode

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

b6fd0566-6742-11ee-939d-92fbcf53809c.png

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

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

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

b707e36e-6742-11ee-939d-92fbcf53809c.pngb716f782-6742-11ee-939d-92fbcf53809c.png

例子:使用tscancode检测C语言例子。

在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路径下新建一个文件:

test.c:

#include

voidtest(void)
{
charbuf[5]={0};

for(size_ti=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

结果:

b71ae7e8-6742-11ee-939d-92fbcf53809c.png

2、Windows下使用TscanCode

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288509
  • 开源
    +关注

    关注

    3

    文章

    2989

    浏览量

    41721
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784

原文标题:一款不错嵌入式静态代码扫描工具

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一款适合嵌入式工程师使用的在线工具

    一款适合嵌入式工程师使用的在线工具工具有如下功能,如下图所示: 1. 报文校验功能,如下图所示 2. UDP服务端测试工具:该UD
    发表于 04-09 22:20

    如何从零开始开发一款嵌入式产品

    如何从零开始开发一款嵌入式产品
    发表于 08-01 00:32

    如何从零开始开发一款嵌入式产品(20年的嵌入式经验)

    本帖最后由 浪子zigbee 于 2014-2-27 15:50 编辑 如题,如何从零开始开发一款嵌入式产品
    发表于 02-27 15:37

    请问怎样去设计一款低能耗嵌入式系统?

    怎样去选择合适的硅芯片?怎样去设计一款低能耗嵌入式系统?
    发表于 04-19 09:41

    一款基于Murphypinyin的嵌入式键盘设计

    本文根据手持终端的特点,设计出一款矩阵键盘,并在Linux平台下开发出键盘的驱动程序。采用Qt/Embedded构建图形界面,通过对Qt/Embedded自带输入法的分析,结合Murphpinyin中文输入法软件包,构建了一款可输入数字、中/英文的
    发表于 04-28 06:50

    怎么设计一款ARM嵌入式汽车节能控制系统?

    ARM嵌入式汽车节能控制系统的工作原理是什么?怎么设计一款ARM嵌入式汽车节能控制系统?
    发表于 05-17 06:40

    分享一款不错的基于nRF24E1的嵌入式2.4GHz无线接入系统

    分享一款不错的基于nRF24E1的嵌入式2.4GHz无线接入系统
    发表于 05-27 06:06

    分享一款不错的基于嵌入式Web Server的无线数据采集系统

    分享一款不错的基于嵌入式Web Server的无线数据采集系统
    发表于 05-28 06:58

    如何从零开始开发一款嵌入式产品

    源:如何从零开始开发一款嵌入式产品原文地址:【转】如何从零开始开发一款嵌入式产品作者:rainpad(20年的嵌入式经验分享学习,来自STM
    发表于 08-09 08:09

    介绍一下一款简单易用的嵌入式AI方案

    公司玩了大半年的嵌入式AI平台,现在产品进入量产模式,也接触了很多嵌入式方案,有了些心得体会,本人不才,在这里介绍一下一款简单易用的嵌入式
    发表于 10-27 06:02

    怎样挑选一款MCU平台进行嵌入式系统开发

    如今,嵌入式系统开发往往基于平台模式。MCU平台包括MCU及其相关器件(外延器件、配套器件等),集成开发环境(开发板、开发工具、中间件等),以及操作系统等。半导体厂商在推出一款MCU新产品时,
    发表于 11-03 08:42

    推荐一款比较好的嵌入式开发板

    学习嵌入式,必不可少的工具就是块开发板。对新手而言,学嵌入式用哪个开发板好,下面为大家推荐一款比较好的
    发表于 11-08 06:38

    Tessy嵌入式软件单元测试/ 集成测试工具的相关资料分享

    、应用技巧、基本知识点总结和需要注意事项,具有定的参考价值,需要的朋友可以参考下。Tessy 源自戴姆勒- 奔驰公司的软件技术实验室,由德国Hitex 公司负责全球销售及技术支持服务,是一款专门针对
    发表于 12-21 07:11

    如何快速上手一款新的嵌入式CPU芯片

    如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)最新要开发个蓝牙的氛围灯,网上找了好久,都没找到合适的芯片。要么是TI或者nordic的纯BLE,不带播放音乐。要么是带音频又带数据
    发表于 12-23 07:45

    怎样去设计一款RK3399Pro嵌入式主机呢

    怎样去设计一款RK3399Pro嵌入式主机呢?RK3399Pro嵌入式主机有哪些性能呢?
    发表于 02-10 07:00