Nox-Lumen AutoNox-Lumen Auto

C / C++ 静态分析

C / C++ 栈的 L1 静态分析由 两个 skill 协同,与 MISRA / AUTOSAR / CERT 等汽车和嵌入式规范紧密配合。

Skill维度一句话描述
clang-tidy规则 + 现代化覆盖 bugprone / performance / modernize / cert / security 检查
cppcheckBug内存泄漏 / 空指针 / 数组越界 / 未定义行为(无需编译

clang-tidy

用途:基于 LLVM 的 C/C++ 静态分析,规则集极其丰富

规则分组覆盖内容
bugprone-*典型 Bug 模式
performance-*性能反模式(不必要拷贝、低效容器)
modernize-*C++11/14/17/20 现代化建议
cert-*CERT C/C++ 安全编码规范
cppcoreguidelines-*C++ Core Guidelines
clang-analyzer-*Clang 静态分析器
misra-*(第三方插件)MISRA C:2012

依赖:需要 compile_commands.json(CMake 一键生成)。

触发:"C++ 现代化"、"clang-tidy 跑一下"、"MISRA 检查"

cppcheck

用途无需编译的 C/C++ Bug 检测器(只需源码)。

检测项示例
内存泄漏malloc 后未 free、异常路径泄漏
空指针解引用if (p == NULL) return; *p = 1;(条件后误用)
数组越界int a[5]; a[5] = 1;
未定义行为整数溢出、未初始化变量使用
资源泄漏文件句柄、Socket、Mutex 未释放
API 误用memcpy 重叠、printf 格式不匹配参数

优势

  • 不依赖编译环境(没有 compile_commands.json 也能跑)
  • 适合扫描第三方代码旧项目
  • 与 clang-tidy 互补(clang-tidy 规则更细但环境要求高)

触发:"C++ 内存泄漏检查"、"cppcheck 扫描"、"数组越界"

组合使用建议

cppcheck     → 快速 Bug 检测(必跑,环境依赖小)
clang-tidy   → 深度规则 + 现代化(必跑,需 compile_commands.json)

两者输出有重叠也有互补,建议同时启用。

汽车行业用法

对于 MISRA C / ISO 26262 / AUTOSAR 项目:

  1. standards-converter 把"企业 MISRA 剪裁清单"转成 clang-tidy .clang-tidy 配置
  2. clang-tidy + cppcheck 做 L1 扫描
  3. code-review 做 L2 语义评审,对照 ISO 26262 相关需求
  4. 审核结果通过 gerrit-integration 回帖评分

On this page