Cppcheck 使用教程:本地 + CMake + GitHub Actions 自动分析实战_cppcheck使用详解
Cppcheck 是一款强大的 C/C++ 静态分析工具,专注于发现内存泄漏、未初始化变量、死代码、未使用函数等问题。它不依赖编译器,适合在持续集成和本地开发中快速定位潜在 Bug。
本文将手把手教你如何:
目录
📚 一、Cppcheck 安装方式
🔍 二、命令行使用示例
🔧 三、CMake 构建系统集成 Cppcheck
🧾 四、.cppcheck-suppress 文件使用
🤖 五、GitHub Actions 自动运行 Cppcheck
📊 六、生成 HTML 图形化报告(可选)
✅ 七、总结建议
📎 附:Cppcheck 官方资料
📚 一、Cppcheck 安装方式
✅ Ubuntu / Debian
sudo apt updatesudo apt install cppcheck
🍎 macOS(Homebrew)
brew install cppcheck
🪟 Windows
前往官方下载地址:https://cppcheck.sourceforge.io/ 下载 GUI 或 CLI 版本。
🔍 二、命令行使用示例
下面是一条完整的 cppcheck 命令,可对 src/
目录进行全面检查,并输出报告:
cppcheck \\ --enable=all \\ --inconclusive \\ --std=c++17 \\ --inline-suppr \\ --force \\ -j4 \\ --suppressions-list=.cppcheck-suppress \\ -I include -I src \\ src 2> cppcheck_report.txt
参数说明:
--enable=all
--inconclusive
--inline-suppr
--force
--suppressions-list
-j4
-I
🔧 三、CMake 构建系统集成 Cppcheck
示例 CMakeLists.txt
添加如下内容:
set(CPPCHECK_COMMAND cppcheck)set(CPPCHECK_OPTIONS --enable=all --inconclusive --std=c++17 --inline-suppr --force -j4 --suppressions-list=${CMAKE_SOURCE_DIR}/.cppcheck-suppress)set(CPPCHECK_OUTPUT_FILE ${CMAKE_BINARY_DIR}/cppcheck_report.txt)set(SOURCE_DIRS ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/include)set(CPPCHECK_FULL_COMMAND ${CPPCHECK_COMMAND} ${CPPCHECK_OPTIONS})foreach(DIR ${SOURCE_DIRS}) set(CPPCHECK_FULL_COMMAND \"${CPPCHECK_FULL_COMMAND} -I ${DIR} ${DIR}\")endforeach()add_custom_target(cppcheck COMMAND ${CPPCHECK_FULL_COMMAND} 2>&1 | tee ${CPPCHECK_OUTPUT_FILE} COMMENT \"Running Cppcheck...\" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} VERBATIM)
运行方式
cmake -B buildcmake --build build --target cppcheck
🧾 四、.cppcheck-suppress 文件使用
用于集中屏蔽误报项,防止报告中充斥无效告警。
示例内容:
unreadVariable:src/utils/logger.cppunusedFunction:src/core/debug.cppmissingIncludeSystem
支持模糊路径和通配符,可结合版本控制管理误报。
🤖 五、GitHub Actions 自动运行 Cppcheck
适合团队协作项目,每次提交或 PR 自动执行静态检查,保证主干代码质量。
在 .github/workflows/cppcheck.yml
中添加:
name: Cppcheck Static Analysison: push: paths: - \'**.cpp\' - \'**.h\' pull_request: paths: - \'**.cpp\' - \'**.h\'jobs: cppcheck: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install cppcheck run: sudo apt-get update && sudo apt-get install -y cppcheck - name: Run cppcheck run: | cppcheck \\ --enable=all \\ --inconclusive \\ --std=c++17 \\ --inline-suppr \\ --force \\ -j4 \\ --suppressions-list=.cppcheck-suppress \\ -I include -I src \\ src 2> cppcheck_report.txt - name: Upload cppcheck report uses: actions/upload-artifact@v4 with: name: cppcheck-report path: cppcheck_report.txt
-
每次提交都会触发该流程
-
可在 Actions 页面下载分析报告
📊 六、生成 HTML 图形化报告(可选)
如果你希望以网页形式查看分析结果,可使用 cppcheck-htmlreport
工具:
安装
pip install cppcheck-htmlreport
生成报告
cppcheck-htmlreport \\ --file=cppcheck_report.txt \\ --report-dir=cppcheck_html \\ --source-dir=.
打开 cppcheck_html/index.html
即可查看报告页面。
✅ 七、总结建议
.cppcheck-suppress
配合版本控制管理📎 附:Cppcheck 官方资料
-
官网:https://cppcheck.sourceforge.io/
-
GitHub:https://github.com/danmar/cppcheck
如果你觉得这篇文章对你有帮助,欢迎点赞 👍 收藏 ⭐ 关注我获取更多 C/C++ 工程化实战技巧!
如需扩展:GitLab CI / Jenkins / SonarQube 的 Cppcheck 集成方案,欢迎留言或私信我继续更新~