SonarQube 依赖外部工具生成编译信息与分析报告,需先用 CMake 等生成 compile_commands.json,再通过 sonar-scanner 配置 sonar.cfamily.compileCommands 等参数上传分析结果;推荐集成 clang-tidy 或 cppcheck 提升检测能力,并在 SonarQube 界面查看质量指标。
SonarQube 本身不直接编译或解析 C++ 源码,它依赖外部构建和静态分析工具(如 clang++、gcc、CMake)生成编译信息(compile_commands.json)和分析报告(如 clang-tidy、cppcheck 输出),再通过 SonarScanner 或 SonarScanner for MSBuild 将结果上传到 SonarQube 服务器进行展示与质量评估。
C++ 项目必须提供准确的编译上下文,SonarQube 才能正确理解头文件路径、宏定义、模板实例化等。推荐使用 CMake 生成 compile_commands.json:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. && make(Linux/macOS)或 cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. && cmake --build .(Windows)compile_commands.json,且路径无乱码、权限正常下载并解压 SonarScanner CLI,在项目根目录创建 s:
onar-project.properties
sonar.projectKey=my-cpp-project sonar.projectName=My C++ Project sonar.projectVersion=1.0 sonar.sources=src sonar.cfamily.buildWrapperOutput=.buildwrapper sonar.cfamily.gcc.reportPath=build/gcc-report.json sonar.cfamily.cppcheck.reportPath=build/cppcheck-report.xml sonar.exclusions=**/third_party/**,**/test/**
注意:官方推荐使用 BuildWrapper(仅 Linux/macOS)或 Clang Compilation Database 方式。若用 compile_commands.json,可省略 buildWrapperOutput 行,改用:
立即学习“C++免费学习笔记(深入)”;
sonar.cfamily.compileCommands=build/compile_commands.jsonbuild/ 同级目录执行(路径是相对于 scanner 工作目录的)SonarQube 自带的 C++ 规则有限(约 100+ 条),需结合主流 linter 增强检测能力:
clang-tidy 生成 SARIF 或 JSON 报告:run-clang-tidy -p build/ -export-fixes=clang-tidy-fixes.yaml -format=sarif > clang-tidy.sarif
clang-tidy.sarif 路径写入 sonar.cfamily.sarifReportPaths=clang-tidy.sarif
cppcheck --xml --xml-version=2 --enable=all src/ 2> cppcheck-report.xml,再通过 sonar.cfamily.cppcheck.reportPath 引入确保 SonarQube 服务已运行(默认 http://localhost:9000),凭 token 执行:
sonar-scanner \ -Dsonar.host.url=http://localhost:9000 \ -Dsonar.token=your_sonarqube_token \ -Dsonar.login=your_sonarqube_token # 新版本推荐用 token
扫描完成后,浏览器打开项目主页,即可看到:代码重复率、bug / 漏洞 / 代码异味数量、单元测试覆盖率(需额外配置 gcovr 或 lcov)、技术债务估算等。点击具体问题还能跳转到源码行并显示修复建议。
# linux
# js
# json
# windows
# 浏览器
# app
# 工具
# mac
# c++
# macos
# 解压
# win
# cos
# for
# format
# xml
# Token
# database
# 数据库
# http
# bug
# 推荐使用
# 分析报告
# 成了
# 还能
# 并在
# 或其他
# 自带
# 相对于
# 先用
# 新版本
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Windows执行文件被SmartScreen拦截原因_安全提示与绕过方式
Win11怎么关闭定位服务 Win11禁止应用获取位置信息【隐私】
如何使用Golang实现容器安全扫描_Golang Docker镜像漏洞检测方法
Golang如何测试HTTP中间件_Golang HTTP中间件功能测试实践
Win11蓝牙开关不见了怎么办_Win11蓝牙驱动丢失修复教程【方法】
Win11开机速度慢怎么优化_Win11系统启动加速设置指南【方法】
如何使用Golang template生成文本模板_动态生成HTML或文本
MAC怎么在照片中添加水印_MAC自带编辑工具文字水印叠加【方法】
Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据
Win11怎么开启空间音效_Windows11耳机杜比音效与Sonic设置
Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】
XAMPP 启动失败(Apache 突然停止)的终极排查与修复指南
如何用::实现单例模式_php静态方法与作用域操作符应用【技巧】
Windows10如何更改鼠标图标_Win10鼠标属性指针浏览
Python如何创建带属性的XML节点
VSC怎么创建PHP项目_从零开始搭建项目的步骤【操作】
如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法
英国搜索:多数英国人认为语言搜索是未来搜索
Win11任务栏怎么调到左边_Win11开始菜单居左设置教程【步骤】
Windows10怎样设置家长控制_Windows10家长控制设置方法【指南】
Mac的“预览”如何合并多个PDF_Mac文件处理技巧【效率】
php修改数据怎么批量改状态_批量更新status字段值技巧【操作】
Windows如何设置登录时的欢迎屏幕背景?(锁屏界面)
如何在 Pandas 中按元素交集合并两列字符串
c++ unordered_map怎么用 c++哈希表用法【教程】
C#怎么使用委托和事件 C# delegate与event编程方法
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践
Go 中实现 Python urllib.quote() 功能的等效方法
如何在 Go 中创建包含映射(map)的切片(slice)结构
微信企业付款回调PHP怎么接收_处理企业付款异步通知数据教程【教程】
Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】
Python深度学习实战教程_神经网络模型构建与训练
如何优化Golang内存分配与GC调度_Golang垃圾回收优化示例
Windows电脑如何截屏?(四种快捷方法)
如何使用Golang log设置日志输出格式_Golang log日志格式示例
c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
VSC怎么配置PHP的Xdebug_远程调试设置步骤【详解】
如何在 Go 中比较自定义的数组类型(如 [20]byte)
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何在Golang中实现CI/CD流水线自动化测试_Golang持续集成测试执行方法
Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】
Win11怎么关闭OneDrive同步_Win11取消自动备份文件【教程】
c++如何判断文件是否存在_c++ filesystem库用法
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
Python函数接口稳定性_版本演进解析【指导】
Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值
c++ reinterpret_cast怎么用 c++最危险的类型转换【详解】
How to Properly Use NumPy in VS Code
2026-01-05
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。