当前位置: 首页 > 知识库问答 >
问题:

Sonarqube:为多模块导入Jacoco xml报告

夏和雅
2023-03-14

我有一个多模块Maven项目,其中覆盖报告位于覆盖Java类之外的另一个模块中。将非空xml覆盖报告(带有覆盖信息)导入Sonarqube是成功的,但显示覆盖范围为0。

复制步骤:

  1. 签出以下github项目,并使用mvn清洁验证构建它。之后,存在一个聚合的xml报告,该报告位于覆盖率/目标/站点/Jacoco-group-all/jacoco.xml中。您可以在其中以及相应的html-Report中看到覆盖率数据。

docker run -d -p 9000:9000 sonarqube

编辑:插件“JaCoco xml report importer”已经安装在这个映像中。

mvn sonar:sonar -X -Dsonar.projectKey=example -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco-aggregate-all/jacoco.xml

## Log output contains
...
 10:54:28.519 Reading report '<project-path>\maven-multimodule-coverage\coverage\target\site\jacoco-aggregate-all\jacoco.xml'
...

我做错了什么?

共有2个答案

邢博文
2023-03-14

请在sonarqube实例上安装< code > JaCoco XML report importer 插件(您可以在marketplace下找到它,只需在那里搜索< code>jacoco)。这个插件将获取你的代码覆盖率,并将其导入sonarqube。所以安装插件后,请使用相同的命令来查看sonarqube上的结果

mvn 声纳:声纳 -X -德索纳尔.projectKey=example -德索.xml纳尔.host.url=

颜霖
2023-03-14

事实证明,如果我对xml报告文件使用绝对路径,它就可以工作。所以我补充道

<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/../coverage/target/site/jacoco-aggregate-all/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>

位于maven pom的顶部,因此每个模块都指向相同的报告文件。要深入嵌套模块目录,必须引入属性<code>main。basedir或类似的东西。

主要的理解是,您不向声纳提供映射到模块类的覆盖报告,而是提供映射到覆盖报告的模块类。

 类似资料:
  • 问题内容: 我有一个由几个模块组成的项目。 我正在尝试使用SonarQube进行分析。 我在每个模块中都包含了Sonar Maven插件作为依赖项: 然后我使用以下命令运行Maven: mvn clean验证声纳:声纳 Maven成功完成,并且可以看到Sonar分析,但是当我打开Sonar UI时,模块在项目中不可见。 然而… 如果我从单个模块目录运行Maven命令,则在项目中可见。 感觉我缺少一

  • threeJS中找不到BoxBufferGeometry类 版本"three": "^0.160.0" vite+vue环境 将BoxBufferGeometry改为BufferGeometry之后没有报错,但是图形出不来 three源代码中也找不到相关的类

  • 我有一个多模块项目,我似乎无法在Sonarqube上获得准确的单元测试代码覆盖率报告。我使用buildr和JaCoCo生成测试覆盖率。文件继承类似于下面。 项目--module1----reports----Jacoco------Jacoco.cov(jacoco执行文件,以前用作.exec)--module2--reports----Jacoco(生成的HTML、CSV和XML报表文件)---

  • 语境 在一个使用karma和jasmine进行单元测试的Angular5项目中,我使用karma-sonarqube-unit-reporter为我的单元测试生成这个报告文件。 但是当我将它导入到Sonarqube(V6.7)(通过Jenkins)中时,我会得到以下结果 (此属性重要吗?)

  • 问题内容: 我一直想知道这一点:是否可以保证多次导入模块都是安全的?当然,如果模块执行操作系统之类的操作,例如写入文件之类的东西,则可能不会,但是对于大多数简单模块而言,简单地随意执行导入是否安全?是否有规范模块全局状态的约定? 问题答案: 是的,无论它是什么模块,您都可以在一个Python程序中进行任意多次。在第一个之后的每个后续访问访问缓存的模块,而不是重新评估它。

  • 我注意到一些看似奇怪的行为,当试图以不同的方式导入名为rmod2的python模块时。如果我从rmod2.py文件所在的目录启动python,它可以正常工作。但是,如果我将文件移动到其他模块所在的另一个文件夹,它不再按预期工作。模块/包文件夹 /usr/lib/pymodules/python2.7,它也包含在sys.path.中,所以我创建了文件夹 /usr/lib/pymodules/pyth