C++代码审查工具Cppcheck和TscanCode

星夢妙者
发布: 2025-08-30 09:12:28
原创
906人浏览过

cppcheck 概述

cppcheck 是一款专为 C 和 C++ 代码设计的静态代码检查工具,作为编译器的补充,cppcheck 能够对源代码进行深入的逻辑检查。

它帮助开发和测试工程师从代码层面发现问题,专注于包括逻辑错误、可疑代码、运算错误、空指针、越界错误、内存泄漏等6个大类,共52个小类的问题。

与其他静态检查工具相比,cppcheck 以其简单易用、快速执行和开源的优势而著称。

cppcheck 执行的检查包括:1. 自动变量检查 2. 数组边界检查 3. 类检查 4. 过时函数和废弃函数调用检查 5. 异常内存使用和释放检查 6. 内存泄漏检查,主要通过内存引用指针 7. 操作系统资源释放检查,如中断、文件描述符等 8. 异常 STL 函数使用检查 9. 代码格式错误和性能因素检查

立即学习C++免费学习笔记(深入)”;

cppcheck 的默认使用方法:

$ cppcheck --enable=all test.cpp
$ cppcheck --enable=all ./src
登录后复制

可以通过

--output-file
登录后复制
选项将检查结果存储到
report.txt
登录后复制
中:

$ cppcheck --enable=all test.cpp --output-file=report.txt
登录后复制

也可以使用输出重定向:

$ cppcheck --enable=all test.cpp 2> report.txt
登录后复制

cppcheck 的安装可以从其官方网站(Cppcheck - A tool for static C/C++ code analysis)下载最新版本的可执行安装包(如

cppcheck-2.7-x64-Setup.msi
登录后复制
),按照安装向导进行安装。

C++代码审查工具Cppcheck和TscanCode

cppcheck 对94个例子的分析结果非常到位,但对于中文注释的代码预览可能不太友好。

C++代码审查工具Cppcheck和TscanCode

除了图形用户界面,cppcheck 还支持与多种 IDE(如 VS、Eclipse、QtCreator 等)和版本管理系统(如 Tortoise SVN、Git)集成使用。用户可以对每次分析进行配置,甚至自定义规则,并将这些配置作为项目文件保存或重新加载。

分析结果可以保存为格式化的纯文本或 XML 格式,并通过 Python pygments 将 XML 转换为 HTML。

在检测能力上,cppcheck 优于 TscanCode,但在易用性上,TscanCode 则更胜一筹。不过,cppcheck 在某些情况下可能会出现误报。

接下来介绍腾讯开源的 TscanCode。

TscanCode 概述

TscanCode 是腾讯研发的静态代码扫描工具,最初基于 cppcheck 二次开发,后续进行了自主研发,支持 C++、C# 和 Lua 语言。TscanCode 在发现 C++ 空指针、越界、未初始化、C# 空引用、Lua 变量未初始化等方面表现出色,适用于游戏开发代码扫描,具有较高的准确率和效率。

TscanCode 主要能发现以下问题:1. 自动变量检查:返回自动变量(局部变量)指针;2. 越界检查:数组越界返回自动变量(局部变量)指针;3. 类检查:构造函数初始化;4. 内存泄漏检查;5. 空指针检查;6. 废弃函数检查。

腾讯云AI代码助手
腾讯云AI代码助手

基于混元代码大模型的AI辅助编码工具

腾讯云AI代码助手 98
查看详情 腾讯云AI代码助手

TscanCode 的性能测试可以参考:https://www.php.cn/link/2ed82a7e645e45584d3aabab834eef35

TscanCode 的安装

TscanCode 已在 Github 上开源,代码仓库为:GitHub - Tencent/TscanCode: A static code analyzer for C++, C#, Lua。用户可以自行下载并编译,也可以使用腾讯预编译的可执行文件(位于代码仓库的 release 目录)。

在 Windows 平台下,截至目前,Github 的 release 目录中已不再提供 Windows 的安装包,但可以通过网络搜索下载 TscanCodeV2.14.24.windows.exe(评论区有下载链接)。

C++代码审查工具Cppcheck和TscanCode

在 Linux 平台下,TscanCode 的安装方法如下:

第一种:
$ git clone https://github.com/Tencent/TscanCode.git
$ cd TscanCode/release/linux/
$ unzip TscanCodeV2.14.24.linux.zip
$ cd TscanCodeV2.14.24.linux/TscanCodeV2.14.2395.linux
$ chmod a+x tscancode
$ echo "PATH=$PATH:$(pwd)" >> ~/.bashrc
$ source ~/.bashrc
<p>第二种,建议使用:
cd trunk/
make
修改 cfg/cfg.xml  #cfg.xml 配置不当,可能导致检测结果为空,建议启用一些 value="0" 的规则
登录后复制

TscanCode 的扫描规则与配置

TscanCode 支持在 Linux、Windows 等多平台运行。用户可以通过 cfg/cfg.xml 文件对扫描规则进行配置,设置 value=0 禁用规则,value=1 启用规则。根据需求定制扫描规则,编辑 cfg/cfg.xml 文件,或直接使用默认的扫描规则。

将源代码放置在指定路径 ${SRC_CODE}(路径中不能包含 root 文件夹,TscanCode 的特殊要求)。如,export SRC_CODE=~/myprj/mysource/

执行代码扫描:

./tscancode --xml --enable=all -q ${SRC_CODE} >scan_result.xml 2>&1
登录后复制

TscanCode 会将结果按照固定的 XML 格式写入文件中。用户可以使用 Excel 工具打开 XML 报告,在左侧插入一列处理情况。开发人员根据报告对代码上下文进行分析,判断是否为工具误报。对于确认为问题的代码,由开发人员处理后重新进行代码安全静态扫描,直到问题关闭。

其他工具介绍

Valgrind 是一款开源(GPL V2)的仿真调试工具集合,支持 Linux 操作系统,功能强大,包括:

  1. Memcheck:重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,如使用未初始化的内存、使用已释放的内存、内存访问越界等;
  2. Callgrind:检查程序中函数调用过程中出现的问题,也可用于性能调优;
  3. Cachegrind:检查程序中缓存使用出现的问题;
  4. Helgrind:检查多线程程序中出现的竞争问题;
  5. Massif:检查程序中堆栈使用中出现的问题;
  6. Extension:编写特定的内存调试工具。

推荐几个常用的在线 C++ 代码测试网站:

C++代码审查工具Cppcheck和TscanCode

C++代码审查工具Cppcheck和TscanCode

  • Online PHP/Java/C++... editor and compiler | paiza.IO

C++代码审查工具Cppcheck和TscanCode

参考文献:

  • 静态代码扫描工具汇总_while_false_的博客-CSDN博客_静态代码扫描工具
  • TscanCode C/C++静态分析开源分析工具安装与使用_lwblovezj的博客-CSDN博客_tscancode
  • SPrinter:一个基于Clang-Tidy的C++程序智能指针错误检查工具_ithiker的博客-CSDN博客
  • C++代码自动检测工具clang-format和clang-tidy_长星照耀十三州府_的博客-CSDN博客
  • TscanCode代码扫描工具_code_peak的博客-CSDN博客_tscancode
  • 代码扫描工具TScanCode - yusq77 - 博客园
  • C/C++代码静态分析工具调研
  • 研发工具,你用对了吗?
  • Windows下 Cppcheck 的使用教程_hellokandy的博客-CSDN博客_cppcheck
  • C/C++代码静态分析工具调研 - 简书
  • C++代码质量扫描主流工具深度比较 - 51Testing软件测试网-中国软件测试人的精神家园
  • C++代码静态检测 - 威海云博客 - 博客园

以上就是C++代码审查工具Cppcheck和TscanCode的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号