SonarQube 6.7如何在同一仪表盘展示Coverity与C++代码覆盖率报告?
解决SonarQube 6.7中同时展示Coverity与代码覆盖率报告的问题
我之前维护老版本SonarQube的时候也碰到过一模一样的问题——sonar.language的限制确实头疼,6.7版本里一次扫描只能指定一种语言类型,直接导致Coverity和覆盖率分析没法在同一次扫描里完成。不过有两种可行的方案,能让你在同一个仪表盘上同时看到两类报告:
方案一:分两次独立扫描,共享项目标识
这是当前6.7版本下最实用的临时解决办法,核心是通过两次扫描把两类数据合并到同一个项目中:
- 第一次扫描:上传Coverity结果
配置扫描参数时指定sonar.language=cov-cpp,同时带上Coverity相关配置(比如sonar.coverity.reportPath指向你的Coverity报告文件),关键是要固定好sonar.projectKey、sonar.projectName这些项目标识参数,确保和后续扫描完全一致。执行扫描后,Coverity的结果就会出现在Sonar仪表盘上。 - 第二次扫描:上传代码覆盖率数据
这次把sonar.language改成c++,配置好你的覆盖率工具参数(比如Gcov的报告路径、覆盖率工具的相关配置),同样使用和第一次完全相同的sonar.projectKey和项目名称。执行扫描后,SonarQube会自动把覆盖率数据合并到同一个项目的仪表盘里,不会覆盖之前的Coverity结果。
注意:两次扫描的
sonar.sources路径必须一致,确保Sonar能识别到是同一批.c/.cpp文件的分析数据。
方案二:升级SonarQube版本(如果条件允许)
SonarQube 6.7是比较老旧的版本了,后续的LTS版本(比如7.9及以上)已经移除了sonar.language这个强制参数,支持多语言同时扫描。升级后你只需要一次扫描,就能同时上传Coverity和覆盖率数据,不用再纠结语言参数的冲突。不过升级前要确认你的sonar-coverity插件是否兼容新版本,避免出现兼容性问题。
实际操作下来,方案一在不升级的情况下就能快速解决问题,我当时就是用这个方法搞定的,亲测有效。
内容的提问来源于stack exchange,提问作者Ure Ramya
相关产品推荐
相关产品推荐

