TscanCode介绍

TscanCode 是腾讯研发的静态代码扫描工具,最早的版本是基于 cppcheck 二次开发。之后又重新自研,不仅支持 C++,还支持 C#,Lua 语言,在发掘 C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。TScanCode 比较适用于游戏开发代码扫描,有着不错的准确率和效率,其性能测试可以见:https://blog.csdn.net/wetest_tencent/article/details/51516347。
TscanCode 主要能够发现的问题如下:
1、自动变量检查: 返回自动变量(局部变量)指针;
2、越界检查:数组越界返回自动变量(局部变量)指针;
3、类检查:构造函数初始化;
4、内存泄露检查;
5、空指针检查;
6、废弃函数检查;

下载TscanCode

TscanCode 已经在 Github 上开源,地址是:https://github.com/Tencent/TscanCode。
其中项目文件夹对应的如下:

release  ->编译后的二进制文件,分别有Linux、Mac、Windows平台
samples ->测试的代码样例,分别有C++、C#、Lua语言
trunk       ->TscanCode源代码

为了方便起见,下载对应平台的二进制可执行文件便可以运行,其中 Win 平台是有 GUI 图形界面,Linux 中要使用命令和手动配置规则,下面介绍一下在 Win 和 Linux 平台使用 TscanCode。

Win下使用TscanCode

安装 TscanCode 后,双击打开后,主界面上选择:扫描文件夹,然后打开代码的文件夹,点击:开始扫描。

扫描完成后会出现结果:

双击可以查看代码中存在的错误,比如:

对于扫描后的结果,可以保存为 xml 配置文件,方便下一次直接在主界上直接打开:结果查看,选中该文件即可。
还可以在设置中选择扫描规则,每个规则都有对应的代码实例可供参考。

Linux下使用TscanCode

我们将 Linux 版本二进制压缩包解压,然后进入 TscanCodeV2.14.2395.linux 目录,有一个 cfg 文件夹和一个 tscancode 二进制文件,需要使用 chmod +x tscancode 对其加上可执行权限。
在 Linux 下可通过 cfg/cfg.xml 对扫描的规则进行配置,其中通过设置 value=0 则禁用,value=1 则启用,或直接使用默认的扫描规则。
需要注意的是:扫描的路径中不能包含 root 文件夹,TscanCode特殊性。
然后再执行如下命令对 samples/cpp/下的所有 C++ 文件代码进行扫描:

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

执行后,就会看到在该目录下生成了 scan_result.xml 文件,文件中就是扫描的结果,如果我们需要扫描结果重定向到文件中,最好加上 -q 参数,否则会将扫描的进度信息也重定向到文件中,这些信息仅在终端中显示进度有用。
注意:如果不熟悉后面的参数,可以使用 ./tscancode -h 查看帮助文档。

$ ./tscancode -h
TscanCode - A tool for static C/C++ code analysisSyntax:tscancode [OPTIONS] [files or paths]If a directory is given instead of a filename, *.cpp, *.cxx, *.cc, *.c++, *.c,
*.tpp, and *.txx files are checked recursively from the given directory.Options:-D<ID>               Define preprocessor symbol. Unless --max-configs or--force is used, TscanCode will only check the givenconfiguration when -D is used.Example: '-DDEBUG=1 -D__cplusplus'.-U<ID>               Undefine preprocessor symbol. Use -U to explicitlyhide certain #ifdef <ID> code paths from checking.Example: '-UDEBUG'--enable=<id>        Enable additional checks. The available ids are:* allEnable all checks. It is recommended to onlyuse --enable=all when the whole program isscanned, because this enables unusedFunction.* warningEnable warning messages* styleEnable all coding style checks. All messageswith the severities 'style', 'performance' and'portability' are enabled.* performanceEnable performance messages* portabilityEnable portability messages* informationEnable information messages* unusedFunctionCheck for unused functions. It is recommendto only enable this when the whole program isscanned.* missingIncludeWarn if there are missing includes. Fordetailed information, use '--check-config'.Several ids can be given if you separate them withcommas. See also --std-h, --help           Print this help.-I <dir>             Give path to search for include files. Give several -Iparameters to give several paths. First given path issearched for contained header files first. If paths arerelative to source files, this is not needed.-j <jobs>            Start [jobs] threads to do the checking simultaneously.-q, --quiet          Do not show progress reports.--xml                Write results in xml format to error stream (stderr).Example usage:# Recursively check the current folder. Print the progress on the screen and# write errors to a file:tscancode . 2> err.txt# Recursively check ../myproject/ and don't print progress:tscancode --quiet ../myproject/# Check test.cpp, enable all checks:tscancode --enable=all test.cpp# Check f.cpp and search include files from inc1/ and inc2/:tscancode -I inc1/ -I inc2/ f.cpp

最后得到的 scan_result.xml 结果文件,可以下载下来使用 Excel 工具打开 XML 报告(为了处理更直观),在左侧插入一列处理情况。
开发人员根据报告对代码上下文进行分析,判断是否为工具误报。
对于确认为问题的代码,由开发人员处理后重新进行代码安全静态扫描,直到问题关闭。

参考:
https://github.com/Tencent/TscanCode
静态代码检查
C++代码质量扫描主流工具深度比较
代码扫描工具TScanCode

TscanCode代码扫描工具相关推荐

  1. [C++]TscanCode代码扫描工具

    TscanCode介绍 TscanCode 是腾讯研发的静态代码扫描工具,最早的版本是基于 cppcheck 二次开发.之后又重新自研,不仅支持 C++,还支持 C#,Lua 语言,在发掘 C++ 空 ...

  2. 静态代码扫描工具(多种)简要入门介绍-SonarQube社区版-免费、TscanCode工具、PMD工具、flake8工具

    SonarQube社区版-免费 适用语言:Java, C#, JavaScript, TypeScript, CloudFormation, Terraform, Kotlin, Ruby, Go, ...

  3. 静态代码扫描工具汇总

    一.概述 在软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷.传统的代码评审.同事复审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情.而静态代码扫描工具能够在代码构建过程中帮助开 ...

  4. 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研

    想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...

  5. java 静态扫描_静态代码扫描工具 – (八)- 扫描Java项目

    静态代码扫描工具 – (八)- 扫描Java项目 1.准备好Java项目代码 只要是java语言实现的项目均可. 比如,自动化测试的代码,测试平台等均可以. 本次案例,使用java语言实现的测试平台来 ...

  6. Java学习之代码扫描工具的使用方法

    有些刚进行Java学习的小伙伴对Java代码扫描工具还不是很了解,不知道该如何使用,下面千锋重庆的小编就来告诉大家使用方法. 1.插件的安装 由于使用的mac所有以Mac下idea插件安装流程为例,首 ...

  7. Android Studio 工具:Lint 代码扫描工具(含自定义lint)

    什么是 Lint Android Lint 是 SDK Tools 16(ADT 16)开始引入的一个代码扫描工具,通过对代码进行静态分析,可以帮助开发者发现代码质量问题和提出一些改进建议.除了检查 ...

  8. Android和iOS静态代码扫描工具

    Android 名称 来源 功能特点 检查SQL注入 检查NullPointException 支持IDE情况 Android Lint Android SDK 针对Android,检查范围广 否 是 ...

  9. java代码扫描工具比较_代码扫描工具的选型和Sonar最佳实践

    目标 在编码阶段发现NNE空指针异常.IO流未正确关闭等致命性bug,杜绝此类"零容忍"线上异常的发生. 技术选型 关于代码扫描工具,比较主流的有Sonar.FindBugs.Al ...

  10. coverity代码检测工具介绍_Coverity代码扫描工具

    1.说明:Coverity代码扫描工具可以扫描java,C/C++等语言,可以和jenkins联动,不过就是要收钱,jenkins上的插件可以用,免费的,适用于小的java项目 2.这是Coverit ...

最新文章

  1. XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件
  2. 【Spring实战】注入非Spring Bean对象
  3. 查看oracle连接数的消耗情况
  4. 每天一道LeetCode-----找到给定数组的连续子数组,使这个子数组的和最大,要求复杂度为O(n)
  5. arguments.callee 指向正在执行的函数的指针
  6. oracle regexp_instr,Oracle REGEXP_INSTR 用法
  7. Linux 服务器网卡驱动安装及故障排除
  8. excel多个窗口独立显示_收藏!Excel快捷键
  9. python pip 查看一个package的所有版本
  10. OSI七层网络模型 TCP五层网络模型
  11. 教你巧用后视镜判断车距
  12. Python核心编程(一)
  13. 五个月“蒸发” 1150 亿美元,马斯克、贝索斯和比尔·盖茨,三大富豪谁更“惨”?...
  14. 【渝粤教育】电大中专电子商务网站建设与维护 (15)作业 题库
  15. 学计算机必备18个网站!!!
  16. 中国互联网大厂布局元宇宙现状如何?
  17. 代码随想录day9|实现strStr()、重复的子字符串
  18. 无人机遥感测绘服务:主要应用于航空摄影测量、国土测绘等
  19. 卡牌集换式交易系统(玩家)
  20. OpenStack(一)——OpenStack的相关概念

热门文章

  1. 最全空降Golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt
  2. sdcc 存储类型关键字
  3. linux格式化叫大硬盘命令,Linux_format命令 参数说明,格式化 格式化指定卷中的磁盘 - phpStudy...
  4. aix7.1重装6.1_优化AIX 6.1性能调整
  5. 学习W5500的OTA平台的SDK
  6. 画象棋棋盘c语言程序设计,绘制中国象棋棋盘(c语言).docx
  7. ndows 资源管理器,windows资源管理器已停止工作怎么解决
  8. 饭后Android 第二餐-复选框CheckBox+开关按钮Switch+单选按钮RadioButton
  9. 使用Windows平台的VS2022来调试AKStream
  10. A woman without arms