静态代码扫描工具—— TScanCode

article/2025/10/24 12:35:03

一、简介


TscanCode支持以下类型规则扫描:

  1. 空指针检查,包含可疑的空指针;
  2. 数据越界;
  3. 内存泄漏,分配和释放不匹配;
  4. 逻辑错误,重复的代码分支,bool类型和INT进行比较,表达式永远True或者false等共18类检查;
  5. 可疑代码检查,if判断中含有可疑的=号;
  6. 运算错误,判断无符号数小于0,对bool类型进行++自增等,共计11类检查。

二、安装


(linux环境)进入代码仓库:https://github.com/Tencent/TscanCode, 克隆到本地(或者到码云镜像https://gitee.com/tyq123/TscanCode)

$ git clone https://github.com/Tencent/TscanCode

1、直接使用编译好的执行文件,在release目录下:

       $ cd ./TscanCode-t/release/linux
              $ cd ./TscanCodeV2.14.24.linux/TscanCodeV2.14.2395.linux
              $ chmod a+x tscancode 

2、源码编译
              $ cd trunk/ 
              $ make 
              修改cfg/cfg.xml #cfg.xml 配置不当,可能导致检测结果为空,建议value="0"的再开启一些

代码安全静态扫描工具TscanCode支持多平台运行,包括Linux、Windows和mac版本,在Linux下可通过cfg/cfg.xml对扫描的规则进行配置,
其中通过设置value=0则禁用,value=1则启用。windows下是GUI,交互比较友好。

三、扫描过程


$ ./tscancode --xml --enable=all -q ${CODE_DIR} >scan_result.xml 2>&1

执行./tscancode 或 ./tscancode -h 可获得帮助信息

一些参数:

--enable=<id> all:检查所有    warning:检查warning级别的项目    unusedFunction:检查未使用函数 等

-I <dir> 指示头文件目录

-j <jobs> [jobs]个线程同时扫描

-q 静默模式

--xml 输出xml格式的扫描报告

示例:

$ export CODE_DIR=/data/your/code/dir/

$ ./tscancode --xml --enable=all -I $CODE_DIR/include $CODE_DIR/*.cpp 2>result.xml

处理过程:

 

分析过程:

 

检查过程:

 

普通文本格式扫描结果:

查看下具体代码:

上图的给指针pp直接置空有问题,内存泄漏了。然后关闭释放资源pp也有问题,因为pp为空指针了。

上图411行,对data2这个指针求长度,被认为是异常的,应该是求变量的长度。

等等...

 

一般开发时使用可能只需要知道行号即可,也可以用xml格式输出,查看问题代码上下文。

四、规则扩展


开源代码,可根据情况修改。

五、其他代码检查工具调研


1、cppcheck

Cppcheck是 用于C / C ++代码的静态分析工具。它提供独特的代码分析以检测错误,并专注于检测未定义的行为和危险的代码构造。目标是极少出现误报。

也有windows和linux版本,windows版为图形界面。

可通过sourceforge下载安装:wget https://master.dl.sourceforge.net/project/cppcheck/cppcheck/1.75/cppcheck-1.75.tar.gz

编译同样很简单:$ make

使用和tscancode很相似:$ ./cppcheck --enable=all /home/your/code/dir/*.cpp

但是得出的结论是,准确率没有比tscancode高,而且会有较多误报:不同函数里定义的同名变量,被认为是重复定义。

 

还有其他几款代码检查工具:pclint、coverity、clang等

以下来自网上技术文章中的对比信息:

https://blog.csdn.net/bandaoyu/article/details/108114456

准确率规则也分空指针、越界、变量为初始化、内存/资源泄漏、逻辑错误等规则,以上对比是综合评分。


http://chatgpt.dhexx.cn/article/6VvSMcgP.shtml

相关文章

揭秘代码的安全漏洞是如何被发现的:代码扫描工具fortify的详细介绍

前言 在许多对安全性有所关注的公司中&#xff0c;代码安全扫描已成为一项关键的实践。但是&#xff0c;面对频繁出现的安全漏洞升级&#xff0c;大家可能会感到困惑和头疼。那么&#xff0c;这些令人不安的漏洞究竟是如何被发现的呢&#xff1f;今天我们将为大家揭示安全漏洞发…

全面剖析PMD静态代码扫描工具

这是个人原创的一篇全面介绍PMD静态代码扫描工具的文档&#xff0c;最近部门需要调研静态代码扫描工具以提高代码的质量&#xff0c;经过对比几十款工具&#xff0c;剔除了商用和多年没有更新的&#xff0c;最终锁定的有PMD、SanorQube以及Facebook infer。 PMD是使用JavaCC生…

php代码 扫描,PHP代码安全扫描工具(AutoPHPCheck)

PHP代码安全扫描工具(AutoPHPCheck)是一款好用的安全扫描工具&#xff0c;该软件能够帮助用户自动完成检测服务器主要参数、PHP主要参数、PHP安全选项以及服务器性能等功能&#xff0c;当你编辑完一段PHP代码后&#xff0c;就可以将其导入到这个软件里&#xff0c;有兴趣的小伙…

sonarQube(代码扫描工具)安装配置

sonarqube使用介绍[TOC]sonarqube使用介绍 sonarQube使用介绍 本文不讲解 什么是sonarQube&#xff0c;请自行了解 sonarQube安装 sonarQube分为2个 部分 sonarQube 展示扫描结果&#xff1b;sonarScanner 扫描工具&#xff1b; 环境 jdk11&#xff1b;sonarQube的运行需…

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

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

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

SonarQube社区版-免费 适用语言&#xff1a;Java, C#, JavaScript, TypeScript, CloudFormation, Terraform, Kotlin, Ruby, Go, Scala, Flex, Python, PHP, HTML, CSS, XML and VB.NET 下载安装 由于实际操作中&#xff0c;JDK版本的限制&#xff0c;8及以下&#xff0c;进入…

《Python代码审计》(1)一款超好用的代码扫描工具

1.前言 从本文开始&#xff0c;我将开始介绍Python源代码审计&#xff0c;代码审计是检查源代码中的安全缺陷&#xff0c;检查源代码是否存在安全隐患&#xff0c;或者编码不规范的地方。通常使用自动化工具或者人工审查的方式&#xff0c;自动化工具效率高&#xff0c;但是误…

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

静态代码扫描工具 – (八)- 扫描Java项目 1、准备好Java项目代码 只要是java语言实现的项目均可。 比如&#xff0c;自动化测试的代码&#xff0c;测试平台等均可以。 本次案例&#xff0c;使用java语言实现的测试平台来做为扫描对象。 2、了解java项目代码的结构。 为什么要了…

Android和iOS静态代码扫描工具

Android 名称 来源 功能特点 检查SQL注入 检查NullPointException 支持IDE情况 Android Lint Android SDK 针对Android&#xff0c;检查范围广 否 是 Eclipse、Android Studio FindBugs 国外 针对Java程序&#xff0c;失去对Android特性的检查 否 是 Eclipse、…

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

TscanCode介绍 TscanCode 是腾讯研发的静态代码扫描工具&#xff0c;最早的版本是基于 cppcheck 二次开发。之后又重新自研&#xff0c;不仅支持 C&#xff0c;还支持 C#&#xff0c;Lua 语言&#xff0c;在发掘 C 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有…

源代码扫描工具

1. DMSCA-企业级静态源代码扫描分析服务平台 系统架构 客户可以通过Internet或者局域网络 从浏览器、Eclipse、Visual Studio 、命令行 、甚至 Web 服务访问DMSCA 服务平台&#xff0c;上传扫描代码&#xff0c;选择扫描策略&#xff0c;自动化扫描&#xff0c; 并利用平台可视…

Fortify代码扫描工具

一、Fortify介绍 Fortify是一款强大的静态代码扫描分析工具&#xff0c;其发现代码漏洞缺陷的能力十分强悍&#xff0c;主要是将代码经过编译&#xff0c;依托于其强大的内置规则库来发现漏洞的。其次fortify SCA团队在开发此商业工具时&#xff0c;也提供了自定义规则的…

四款优秀的源代码扫描工具简介

转载于&#xff1a;https://www.cnblogs.com/xiaominggong/archive/2019/05/06/10821005.html 一、DMSCA-企业级静态源代码扫描分析服务平台 端玛企业级静态源代码扫描分析服务平台&#xff08;英文简称&#xff1a;DMSCA&#xff09;是一个独特的源代码安全漏洞、质量缺陷和逻…

SonarQube代码扫描工具

SonarQube(社区版) SonarQube是一个用于代码质量管理的开放平台,通过插件机制,SonarQube可以集成不同的测试工具,代码分析工具,以及持续集成工具,例如Hudson/Jenkins等。 sonarqube的七个维度检测代码质量: 复杂度分布:代码复杂度过高将难以理解重复代码:程序中包含…

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

目标 在编码阶段发现NNE空指针异常、IO流未正确关闭等致命性bug,杜绝此类“零容忍”线上异常的发生。 技术选型 关于代码扫描工具,比较主流的有Sonar、FindBugs、Alibaba Java Coding Guidelines、CheckStyle。 Alibaba Java Coding Guidelines最大的优点是全中文的提示,对国…

静态代码扫描工具汇总

一、概述 在软件开发过程中&#xff0c;开发团队往往要花费大量的时间和精力发现并修改代码缺陷。传统的代码评审、同事复审&#xff0c;通过人工方式来检查缺陷仍然是一件耗时耗力的事情。而静态代码扫描工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时…

用户行为序列推荐模型

导读&#xff1a;今天我们谈谈用户行为序列上的推荐模型。首先我们对序列推荐问题做一个定义和描述&#xff0c;然后主要讲述可以用在序列推荐任务中的 NN 模型&#xff0c;最后给出一点个人看法以及文中相关的参考文献供参阅。 用户行为大多数情况下都是存在时间上的先后关系…

用户兴趣模型分类以及推荐系统技术调研

用户兴趣模型分类 根据用户之前在相关网站的行为数据记录分析出用户的兴趣和偏好&#xff0c;然后根据不同用户兴趣和偏好不同为其推荐不同的内容&#xff0c;这种新的信息获取方式被称为个性化推荐技术。 个性化新闻推荐系统中常用的几种用户兴趣建模方法&#xff1a; &…

用户生命周期模型

本文转载自&#xff1a; https://blog.csdn.net/l18930738887/article/details/50818878 一、为什么要定义用户生命周期&#xff1f; 用户生命周期是为了定位每个用户在哪个阶段&#xff0c;对于某个阶段的用户进行不同的营销策略。比如初期用户&#xff1a;还没有养成使用习…

Django重写User模型修改明文密码加密方法

由于继承Django的User列表会导致创建新用户的密码为明文,导致无法正常登陆,因此需要修改adminx中的部分配置实现原始的用户密码记录功能。 从这样的界面进入注册用户的密码就是加密的密码效果了,否则是显示明文密码非加密状态。 文章目录 实现步骤实现步骤 需要在项目的m…