代码扫描工具TScanCode
引入开源工具TscanCode对源代码进行静态扫描,开发人员对工具扫描的问题进行有针对性的分析及处理。
一、TScanCode安装
代码仓库为:https://github.com/Tencent/TscanCode, 我们可以自己下载下来编译,
也可以使用腾讯预编译好的可执行文件(代码仓库的 release 目录)。简单起见,我们直接使用预编译好的文件就行。
第一种:
$ 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
第二种,建议使用:
cd trunk/
make
修改cfg/cfg.xml #cfg.xml 配置不当,可能导致检测结果为空,建议value="0"的再开启一些
二、扫描规则与配置
2.1 检测问题列表
代码安全静态扫描工具TscanCode主要能够发现的问题如下:
1、自动变量检查: 返回自动变量(局部变量)指针;
2、越界检查:数组越界返回自动变量(局部变量)指针;
3、类检查:构造函数初始化;
4、内存泄露检查;
5、空指针检查;
6、废弃函数检查;
2.2 扫描规则配置
代码安全静态扫描工具TscanCode支持多平台运行,包括Linux、Windows版本,在Linux下可通过cfg/cfg.xml对扫描的规则进行配置,
其中通过设置value=0则禁用,value=1则启用。
三、 静态扫描过程
3.1 配置扫描规则
根据需要定制扫描规则,编辑2.2 所述的规则配置文件cfg/cfg.xml,或直接使用默认的扫描规则。
3.2 准备扫描对象
将源代码放到指定路径下${SRC_CODE}(路径中不能包含root文件夹,TscanCode特殊性)。
如,export SRC_CODE=~/rpmbuild/kylin-scanner/
3.3 执行代码扫描
进到tscancode安装目录,这里为./trunk/目录。
执行./tscancode --xml --enable=all -q ${SRC_CODE} >scan_result.xml 2>&1
;
TscanCode会将结果按照固定的XML格式写入文件中。
3.4 分析扫描结果
选择Excel工具打开XML报告(为了处理更直观),在左侧插入一列处理情况。
开发人员根据报告对代码上下文进行分析,判断是否为工具误报。
对于确认为问题的代码,由开发人员处理后重新进行代码安全静态扫描,直到问题关闭。
参考:
-------------------------------------------
Wish you all the best and good health in 2021.