with one click
cpp-check
Cppcheck静态分析技能:使用Cppcheck进行C/C++代码质量分析,检测缺陷、未定义行为、安全漏洞和代码风格问题
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Cppcheck静态分析技能:使用Cppcheck进行C/C++代码质量分析,检测缺陷、未定义行为、安全漏洞和代码风格问题
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
AI记忆持久化系统。使用memrec存储、检索、管理跨会话记忆。支持项目隔离、混合检索(KNN+BM25)、MMR重排、中文搜索。触发场景:(1)重要决策需记录,(2)关键知识需保存,(3)项目上下文需跨会话保持,(4)用户偏好需记忆,(5)检索历史知识辅助当前任务。
Rust 性能分析技能:通过 cargo flamegraph 生成火焰图(SVG),定位 CPU 热点函数并量化占比。适用于 Rust 项目性能瓶颈定位、热点分析、优化验证。触发场景:(1)分析 Rust 代码性能瓶颈,(2)定位 CPU 热点函数,(3)量化函数调用占比,(4)优化前后对比验证,(5)bench/unittest 性能不达预期时根因分析。
读取所有源代码,解构为设计图、设计文档、数据库设计; 没有执行文件,请按流程执行
项目问题侦测技能:综合分析设计、性能、安全问题,评分并提出重构或重建方案
局部代码修改技能:最小化修改完成功能,确保无蝴蝶效应,支持独立测试验证和全量关联检查
该skill没有执行文件,为操作指引:如何重构
| name | cpp-check |
| description | Cppcheck静态分析技能:使用Cppcheck进行C/C++代码质量分析,检测缺陷、未定义行为、安全漏洞和代码风格问题 |
Cppcheck是C/C++静态分析工具,无需编译即可检测代码中的:
CPPCHECK=/usr/bin/cppcheck
# 版本: Cppcheck 2.17.1
SRC_DIR=src # 根据项目结构调整
# 基础检查(默认级别)
$CPPCHECK --enable=warning $SRC_DIR
# 完整检查(含风格、性能、可移植性)
$CPPCHECK --enable=all $SRC_DIR 2> cppcheck-full.txt
# 仅缺陷检查(不含风格)
$CPPCHECK --enable=warning,information $SRC_DIR 2> cppcheck-defects.txt
# 安全漏洞专项
$CPPCHECK --enable=warning --check-level=exhaustive $SRC_DIR 2> cppcheck-security.txt
# 文本格式(默认,输出到stderr)
$CPPCHECK --enable=all $SRC_DIR 2> cppcheck.txt
# XML格式
$CPPCHECK --enable=all --xml $SRC_DIR 2> cppcheck.xml
# XML版本2(推荐,用于CI集成)
$CPPCHECK --enable=all --xml-version=2 $SRC_DIR 2> cppcheck-v2.xml
# JSON格式
$CPPCHECK --enable=all --output-file=cppcheck.json --template=json $SRC_DIR
| 参数 | 描述 | 示例 |
|---|---|---|
--enable=<id> | 启用检查类别 | warning, style, performance, portability, information, all |
--check-level=<level> | 分析深度 | normal, exhaustive |
--std=<standard> | C/C++标准 | c11, c17, c++11, c++17, c++20 |
--platform=<type> | 目标平台 | unix32, unix64, win32, win64, native |
--language=<lang> | 强制语言 | c, c++ |
--suppress=<id> | 抑制特定警告 | unusedFunction, missingInclude |
--suppress=<id>:<file> | 抑制文件级警告 | unusedFunction:src/main.cpp |
--exit-on-suppression | 遇抑制项时退出 | 用于验证抑制列表 |
-I <dir> | 包含目录 | -I include -I /usr/include |
-D<macro> | 定义宏 | -DDEBUG -DNDEBUG |
-U<macro> | 取消宏定义 | -UDEBUG |
--output-file=<file> | 输出文件 | --output-file=report.txt |
--project=<file> | 项目文件 | --project=compile_commands.json |
--filter=<file> | 过滤文件 | --filter=cppcheck-filter.txt |
--addon=<name> | 加载插件 | --addon=misra --addon=cert |
--max-configs=<n> | 最大配置数 | --max-configs=20 |
--force | 强制检查所有配置 | 跳过配置限制 |
-j <n> | 并行检查线程数 | -j 4 |
| 检查项 | 描述 |
|---|---|
| 空指针解引用 | 解引用可能为NULL的指针 |
| 数组越界 | 数组索引超出范围 |
| 整数溢出 | 有符号整数运算溢出 |
| 未初始化变量 | 使用未初始化的变量 |
| 内存泄漏 | 动态分配的内存未释放 |
| 双重释放 | 同一内存释放两次 |
| 资源泄漏 | 文件句柄等资源未关闭 |
| 检查项 | 描述 |
|---|---|
| 冗余代码 | 永远不会执行的代码 |
| 复杂表达式 | 可简化的条件表达式 |
| 变量作用域 | 变量作用域可缩小 |
| 重复条件 | if/else分支条件重复 |
| 检查项 | 描述 |
|---|---|
| 按值传递 | 大对象按值传递应改为引用 |
| 冗余拷贝 | 不必要的对象拷贝 |
| 低效算法 | 可优化的算法模式 |
| 检查项 | 描述 |
|---|---|
| 平台依赖 | 依赖特定平台行为 |
| 类型大小 | 假设特定类型大小 |
| 未指定行为 | 依赖未指定的求值顺序 |
# 生成compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# CTest集成
add_test(NAME cppcheck
COMMAND /usr/bin/cppcheck --enable=all --xml-version=2
--project=${CMAKE_BINARY_DIR}/compile_commands.json
2>${CMAKE_BINARY_DIR}/cppcheck.xml)
cppcheck:
/usr/bin/cppcheck --enable=all --xml-version=2 \
-I include -I src \
src/ 2>cppcheck.xml
# CMake自动生成
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
# Bear工具生成(非CMake项目)
bear -- make
# 使用compile_commands.json分析
$CPPCHECK --enable=all --project=compile_commands.json 2> cppcheck.xml
// cppcheck-suppress memoryLeak
char* p = malloc(100);
$CPPCHECK --suppress=unusedFunction:src/main.cpp --enable=all $SRC_DIR
unusedFunction
memoryLeak:src/legacy.c
uninitvar:src/parser.c:100
$CPPCHECK --suppressions-list=suppressions.txt --enable=all $SRC_DIR
# MISRA C 2012检查
$CPPCHECK --addon=misra --enable=style $SRC_DIR 2> misra.txt
# MISRA C++ 2008检查
$CPPCHECK --addon=misra-cpp2008 --enable=style $SRC_DIR 2> misra-cpp.txt
grep -oP '\[(\w+)\]' cppcheck.txt | sort | uniq -c | sort -nr
grep -E '(error|warning):' cppcheck.txt
echo "=== Cppcheck分析报告 ==="
echo "总问题数: $(grep -c '\[' cppcheck.txt)"
echo "错误: $(grep -c '(error)' cppcheck.txt)"
echo "警告: $(grep -c '(warning)' cppcheck.txt)"
echo "风格: $(grep -c '(style)' cppcheck.txt)"
-j参数加速技能版本: 1.0.0 工具版本: Cppcheck 2.17.1 适用项目: C/C++项目 输出位置: 当前目录下的cppcheck-*.txt文件