欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Cppcheck 使用教程:本地 + CMake + GitHub Actions 自动分析实战

Cppcheck 使用教程:本地 + CMake + GitHub Actions 自动分析实战

2025/6/23 9:17:45 来源:https://blog.csdn.net/u014358031/article/details/148794601  浏览:    关键词:Cppcheck 使用教程:本地 + CMake + GitHub Actions 自动分析实战

Cppcheck 是一款强大的 C/C++ 静态分析工具,专注于发现内存泄漏、未初始化变量、死代码、未使用函数等问题。它不依赖编译器,适合在持续集成和本地开发中快速定位潜在 Bug。

本文将手把手教你如何:

  • 安装 Cppcheck

  • 在命令行中使用

  • 集成到 CMake 构建系统

  • 使用 .cppcheck-suppress 管理误报

  • 配置 GitHub Actions 自动执行静态分析

  • 生成 HTML 报告进行可视化展示

目录

📚 一、Cppcheck 安装方式

🔍 二、命令行使用示例

🔧 三、CMake 构建系统集成 Cppcheck

🧾 四、.cppcheck-suppress 文件使用

🤖 五、GitHub Actions 自动运行 Cppcheck

📊 六、生成 HTML 图形化报告(可选)

✅ 七、总结建议

📎 附:Cppcheck 官方资料


📚 一、Cppcheck 安装方式

✅ Ubuntu / Debian

sudo apt update
sudo 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使用外部 suppress 文件屏蔽特定警告
-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(cppcheckCOMMAND ${CPPCHECK_FULL_COMMAND} 2>&1 | tee ${CPPCHECK_OUTPUT_FILE}COMMENT "Running Cppcheck..."WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}VERBATIM
)

运行方式

cmake -B build
cmake --build build --target cppcheck

🧾 四、.cppcheck-suppress 文件使用

用于集中屏蔽误报项,防止报告中充斥无效告警。

示例内容:

unreadVariable:src/utils/logger.cpp
unusedFunction:src/core/debug.cpp
missingIncludeSystem

支持模糊路径和通配符,可结合版本控制管理误报。

🤖 五、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-lateststeps:- name: Checkout codeuses: actions/checkout@v4- name: Install cppcheckrun: sudo apt-get update && sudo apt-get install -y cppcheck- name: Run cppcheckrun: |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 reportuses: actions/upload-artifact@v4with:name: cppcheck-reportpath: 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 即可查看报告页面。


✅ 七、总结建议

场景推荐做法
本地检查命令行或 CMake 构建后手动运行
忽略误报.cppcheck-suppress 配合版本控制管理
持续集成GitHub Actions / GitLab CI 自动化执行
项目交付使用 HTML 图形化报告提升可读性


📎 附:Cppcheck 官方资料

  • 官网:https://cppcheck.sourceforge.io/

  • GitHub:https://github.com/danmar/cppcheck


如果你觉得这篇文章对你有帮助,欢迎点赞 👍 收藏 ⭐ 关注我获取更多 C/C++ 工程化实战技巧!

如需扩展:GitLab CI / Jenkins / SonarQube 的 Cppcheck 集成方案,欢迎留言或私信我继续更新~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词