| name | cpp-tscancode |
| description | TscanCode静态分析技能:使用TscanCode(腾讯开源)进行C/C++代码质量分析,检测缺陷、安全漏洞和代码风格问题 |
TscanCode C/C++静态分析技能
工具位置
TSCANCODE=/home/helly/app/TscanCode.linux/tscancode
执行流程
- 确定源代码路径:
SRC_DIR=src(根据项目结构调整)
- 执行分析(按需选择级别):
$TSCANCODE $SRC_DIR
$TSCANCODE --enable=all $SRC_DIR 2> tscancode-full.txt
$TSCANCODE --enable=warning $SRC_DIR 2> tscancode-warning.txt
$TSCANCODE --enable=style,performance $SRC_DIR 2> tscancode-style.txt
- 指定输出格式:
$TSCANCODE --enable=all $SRC_DIR 2> tscancode.txt
$TSCANCODE --enable=all --xml $SRC_DIR 2> tscancode.xml
$TSCANCODE --quiet --enable=all $SRC_DIR 2> tscancode.txt
- 处理结果:
grep -oP '\[.*?\]' tscancode.txt | sort | uniq -c | sort -nr
grep -E '(error|warning):' tscancode.txt
常用参数
| 参数 | 描述 | 示例 |
|---|
--enable=<id> | 启用检查类别 | warning, style, performance, portability, information, all |
-I <dir> | 包含目录 | -I include -I /usr/include |
-D<macro> | 定义宏 | -DDEBUG -DNDEBUG |
-U<macro> | 取消宏定义 | -UDEBUG |
-j <n> | 并行检查线程数 | -j 4 |
--quiet | 静默模式 | --quiet |
--xml | XML格式输出 | --xml |
检查类别
| 类别 | 关键检查项 |
|---|
| warning | 空指针解引用、数组越界、整数溢出、未初始化变量、内存泄漏、双重释放 |
| style | 冗余代码、复杂表达式、变量作用域、命名规范 |
| performance | 按值传递、冗余拷贝、低效算法 |
| portability | 平台依赖、类型大小假设 |
| information | 缺少包含、配置问题 |
| unusedFunction | 定义但未被调用的函数 |
典型场景
| 场景 | 命令 |
|---|
| 快速检查 | $TSCANCODE --enable=warning $SRC_DIR 2> tscancode-warning.txt |
| 完整检查 | $TSCANCODE --enable=all -j 4 $SRC_DIR 2> tscancode-full.txt |
| 特定目录 | $TSCANCODE --enable=all -I include src/core/ 2> tscancode-core.txt |
| CI集成 | $TSCANCODE --quiet --enable=warning --xml $SRC_DIR 2> tscancode-report.xml |
| 宏控制 | $TSCANCODE --enable=all -DDEBUG $SRC_DIR 2> tscancode-debug.txt |
构建系统集成
模板文件位于 templates/ 目录:
tscancode-check.sh - Shell脚本封装
tscancode-summary.sh - 摘要报告生成
CMakeLists-tscancode.txt - CMake集成目标
Makefile-tscancode - Makefile集成
最佳实践
- 增量检查:大型项目使用
-j 并行加速
- 分级处理:先修复 error,再处理 warning,最后优化 style
- 包含路径:确保
-I 参数包含所有必要的头文件路径
- 宏定义:正确设置
-D 参数以覆盖所有代码路径
- CI集成:将 TscanCode 纳入持续集成流程
注意事项
- TscanCode 默认输出到 stderr,需重定向
2> 捕获
--enable=all 会启用 unusedFunction,建议全项目扫描
- 确保
-I 路径正确,否则可能误报缺少包含
技能版本: 1.0.0 | 适用项目: C/C++ | 输出位置: 当前目录 tscancode-*.txt