2

我正在使用 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

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

4

2 回答 2

3

我遇到了类似的问题,使用 SonarQube 6.7.2 对 Sonar 仪表板进行 0.0% 的覆盖率和没有单元测试:Maven:3.5.2,Java: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 中来创建子模块,但没有任何效果,这很简单。我在日志中看到<sonar.jacoco.reportPath>已弃用,但仍按原样工作,并且似乎在执行时自动替换,或者可以手动更新<sonar.jacoco.reportPaths>或最新。完成设置后,在 cmd 中以mvn clean install开始,然后mvn org.jacoco:jacoco-maven-plugin:prepare-agent install & 然后执行mvn sonar:sonar,这是我尝试过的,如果有其他的请告诉我最好的解决方案。希望这会有所帮助!如果没有,请发布您的问题..

于 2018-04-12T20:41:57.893 回答
0

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

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

于 2016-12-14T15:52:12.677 回答