1 前言

Cooddy 是华为开源的源代码分析的工具项目,环境搭建参考:

【安全工具】华为 C/C++ 静态代码分析工具 Cooddy 环境搭建

2 测试准备

官方文档中,通过如下命令启动 Cooddy 进行代码分析:

cd cooddy
./cooddy --scope=<path_to_scope> --reporter=<format for output report> --results-path=<path to where store results>
  1. –scope:指定要分析的代码范围,可以是一个文件或者一个目录。如果指定的是目录,需要确保该目录下有compile_commands.json文件。
  2. –reporter:指定输出报告的格式,例如csv-html、json等,默认生成 cooddy_result.log 文件。
  3. –results-path:指定分析结果的存储路径。

2.1 下载测试项目代码

git clone https://github.com/leethomason/tinyxml2.git
cd tinyxml2

2.2 生成 compile_commands.json文件

# 创建构建目录
mkdir build && cd build

# 生成编译数据库(关键步骤)
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..

3 使用 Cooddy 进行测试

3.1 运行测试

./cooddy --scope=/xxx/tinyxml2/ --results-path=/xxx/ --reporter=csv-html

在这里插入图片描述
在 --results-path 指定的路径下生成报告文件:cooddy_result.csv、html_traces 目录。

3.2 查看结果

导出文件可以查看详细内容:过滤掉测试文件。
CSV 报告如下:点击 Trace 列的地址,可以直接打开对应 html_traces 目录中的 HTML 报告。
csv报告
html_traces 中 HTML 报告如下:例如字符数组溢出风险。
html报告

4 总结

Cooddy 通过静态分析高效检测 C/C++ 代码中的内存安全漏洞,其核心优势在于:

  • 多维度检测:覆盖数组越界、空指针、内存泄漏等 20 + 类安全问题。
  • 精准定位:HTML 报告提供漏洞代码上下文及调用链,便于修复。
  • 性能优化:采用 Z3 求解器加速复杂条件判断,1322 行代码分析耗时约 12.3 秒。

实际应用中,建议将 Cooddy 集成到 CI/CD 流程,配合单元测试实现漏洞早发现早修复,尤其适用于物联网、嵌入式等对内存安全要求高的场景。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐