【问题标题】:SonarQube. Can't display code coverage声纳曲。无法显示代码覆盖率
【发布时间】:2017-09-26 05:51:20
【问题描述】:

我想设置我的 Sonar(6.1 版)来显示我的项目代码覆盖率。我设置了 JaCoCo 并且可以使用命令在我的计算机上本地生成 CodeCoverage

mvn 清洁包

但我未能将报道上传到声纳。为此,我使用以下命令:

mvn -Dsonar.login= -Dsonar.password= -Dsonar.host.url= -Dsonar.projectKey= 清理包声纳:声纳 -Psonar -Ptomcat

这是 pom.xml 中的 JaCoco 设置

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.plugin.version}</version>
  <configuration>
    <destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
    <dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
  </configuration>
  <executions>
    <execution>
      <id>jacoco-initialize</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>jacoco-site</id>
      <phase>package</phase>
      <goals>
        <goal>report</goal>
      </goals>
    </execution>
  </executions>
</plugin>

我看到以下输出:

[INFO] -------------  Scan risk
[INFO] Language is forced to java
[INFO] Base dir: F:\repo\orchestrator
[INFO] Working dir: F:\repo\orchestrator\target\sonar
[INFO] Source encoding: UTF-8, default locale: ru_RU
[INFO] Quality profile for java: Sonar way
[INFO] Sensor Lines Sensor
[INFO] Sensor Lines Sensor (done) | time=0ms
[INFO] Sensor SCM Sensor
[INFO] Sensor SCM Sensor (done) | time=0ms
[INFO] Sensor Embedded CSS Analyzer Sensor
[INFO] 0 source files to be analyzed
[INFO] Sensor Embedded CSS Analyzer Sensor (done) | time=1ms
[INFO] Sensor Coverage Report Import
[INFO] Sensor Coverage Report Import (done) | time=0ms
[INFO] Sensor Coverage Report Import
[INFO] Sensor Coverage Report Import (done) | time=0ms
[INFO] Sensor Unit Test Results Import
[INFO] Sensor Unit Test Results Import (done) | time=0ms
[INFO] Sensor XmlFileSensor
[INFO] Sensor XmlFileSensor (done) | time=0ms
[INFO] Sensor Zero Coverage Sensor
[INFO] Sensor Zero Coverage Sensor (done) | time=0ms
[INFO] Sensor Code Colorizer Sensor
[INFO] Sensor Code Colorizer Sensor (done) | time=0ms
[INFO] Sensor CPD Block Indexer
[INFO] JavaCpdBlockIndexer is used for java
[INFO] 0/0 source files have been analyzed
[INFO] Sensor CPD Block Indexer (done) | time=0ms
[INFO] Calculating CPD for 592 files
[INFO] CPD calculation finished
[INFO] Analysis report generated in 20712ms, dir size=5 MB
[INFO] Analysis reports compressed in 2506ms, zip size=3 MB
[INFO] Analysis report uploaded in 2704ms
[INFO] ANALYSIS SUCCESSFUL, you can browse http://URL/dashboard/index/<ProductId>:parent
[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[INFO] More about the report processing at http://URL/api/ce/task?id=AV68su2eddnYVrlQ9oP-
[INFO] Task total time: 1:36.284 s

很高兴收到更多关于将代码覆盖发布到 Sonar 的信息。任何建议/提示将不胜感激。 谢谢!

【问题讨论】:

  • 尝试上传报告时是否出现错误?
  • 你知道,我的 pom.xml 中的配置似乎有问题。我要更新我的问题

标签: java unit-testing sonarqube integration-testing code-coverage


【解决方案1】:

这里可能出错的几件事。看起来可疑的第一件事是 Sonar 报告了 0 个要分析的文件。它不会上传它没有分析的文件的覆盖率。

这可能是由于您错误定义的个人资料造成的。 mvn -P 选项接受逗号分隔的列表。您的第二个 -Ptomcat 可能会覆盖第一个 -Psonar。最好使用-Psonar,tomcat

还要确保在项目根目录(pom.xml 应该位于的位置)中运行命令,并且您的 Sonar 服务器已安装并正确配置了 Java 和 Coverage 插件。例如,服务器上的代码覆盖率设置不得排除 java 文件。

我也会使用validate 而不是package,这样您的集成测试(故障安全插件)也会运行。


吹毛求疵:

如果您使用 Maven,则不需要-Dsonar.projectKey=&lt; productKey &gt;,除非您想覆盖 pom.xml 中的默认项目名称。

【讨论】:

  • 谢谢!好一击!问题是从我的命令行传递的配置文件名称不佳
猜你喜欢
  • 2013-11-21
  • 2011-11-20
  • 2016-10-19
  • 2012-07-18
  • 2018-08-22
  • 2021-09-10
  • 2019-11-23
  • 2011-08-10
  • 2012-03-08
相关资源
最近更新 更多