【问题标题】:Code Coverage not populated after sonar analysis声纳分析后未填充代码覆盖率
【发布时间】:2018-04-13 04:52:04
【问题描述】:

我正在使用 sonarqube5.6.1。

我有一个多模块项目,我正在使用以下命令对其进行声纳分析。

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:sonar -Dsonar.host.url=http://bamboo.in.XXX.com:8085 -Dsonar.analysis.mode=publish -Dsonar.issuesReport.html.enable=true -Dsonar.dynamicAnalysis=false

但代码覆盖率根本没有得到填充。

有人可以帮忙吗?我可以看到以下警告,不知道是不是这个原因。

[INFO] Process project properties
[WARNING] /!\ A multi-module project can't have source folders, so '/ssdd5/sameenud/dev/trunk/AAAA/BBBB/CCCC/DDDD/src/main/java' won't be used for the analysis. If you want to analyse files of this folder, you should create another sub-module and move them inside it.

我们的文件夹结构如下,

AAAA
   --BBBB
       pom.xml
       ---CCCC
          pom.xml
          ---DDDD
             pom.xml

我尝试手动编译它,但没有运气,同样的问题。

【问题讨论】:

    标签: sonarqube code-coverage sonarqube5.6


    【解决方案1】:

    我遇到了类似的问题,0.0% 的覆盖率和没有单元测试计数在 SonarQube 6.7.2 的 Sonar 仪表板上: Maven:3.5.2, 爪哇:1.8, Jacoco:与 7.0/7.9/8.0 合作, 操作系统:Windows

    经过大量努力寻找正确的解决方案,解决了这个配置的问题,我的父 pom 看起来像:

     <properties>
                <!--Sonar -->
                <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
                <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
            <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
                <sonar.language>java</sonar.language>
    
            </properties>
    
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <configuration>
                                <source>1.5</source>
                                <target>1.5</target>
                            </configuration>
                        </plugin>
    
                        <plugin>
                            <groupId>org.sonarsource.scanner.maven</groupId>
                            <artifactId>sonar-maven-plugin</artifactId>
                            <version>3.4.0.905</version>
                        </plugin>
    
                        <plugin>
                            <groupId>org.jacoco</groupId>
                            <artifactId>jacoco-maven-plugin</artifactId>
                            <version>0.7.9</version>
                            <configuration>
                                <destFile>${sonar.jacoco.reportPath}</destFile>
                                <append>true</append>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>agent</id>
                                    <goals>
                                        <goal>prepare-agent</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
    
                    </plugins>
                </pluginManagement>
            </build>
    

    我尝试了一些其他选项,例如 jacoco-aggregate 甚至通过将其包含在父 pom 中来创建一个子模块,但没有真正奏效,这很简单。我在日志中看到 &lt;sonar.jacoco.reportPath&gt; 已弃用,但仍按原样工作,并且似乎在执行时自动替换,或者可以手动更新为 &lt;sonar.jacoco.reportPaths&gt; 或最新版本。完成设置后,在 cmd 中以 mvn clean install 然后 mvn org.jacoco:jacoco-maven-plugin:prepare-agent install 然后执行 mvn sonar :sonar ,这是我尝试过的,如果有其他最好的解决方案可用,请告诉我。希望这会有所帮助!如果不是,请发布您的问题..

    【讨论】:

    • 为我工作。我只删除了&lt;sonar.language&gt;java&lt;/sonar.language&gt;,因为它已被弃用并产生不必要的警告......
    • 酷,我相信这可以是可选的,而且其他一些标签似乎已被弃用,但现在很好用!!如果我发现新的东西,我可以更新我的答案!
    【解决方案2】:

    SonarQube(更具体地说是 SonarJava 分析器)不计算覆盖率。您必须提供覆盖率报告,以便分析将其结果导入 SonarQube UI 并显示覆盖率。

    有关如何实现此目的的更多信息,请参阅documentation

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 2013-11-21
      • 2012-10-05
      • 1970-01-01
      • 2018-08-22
      • 2016-04-08
      • 2016-10-19
      • 2019-11-23
      • 2011-08-10
      相关资源
      最近更新 更多