我正在使用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
我尝试编写手册,但没有运气,同样的问题。
答案 0 :(得分:2)
我有类似的问题,0.0%覆盖范围&使用SonarQube 6.7.2的Sonar仪表板上没有任何单元测试: Maven:3.5.2, Java:1.8, Jacoco:使用7.0 / 7.9 / 8.0, 操作系统:Windows
经过很多努力寻找正确的解决方案,解决了这个配置的问题,我的父pom看起来像:
SQL> create table employees
2 (employee_id number,
3 first_name varchar2(20),
4 last_name varchar2(20),
5 commision_pct number,
6 salary number
7 );
Table created.
SQL> select employee_id,
2 first_name,
3 last_name,
4 case when commision_pct > 0 and commision_pct <= 0.15 then salary * 20 / 100
5 when commision_pct < 0.15 then salary * 25 / 100
6 else 0
7 end incentive_amt
8 from employees
9 order by employee_id;
no rows selected
SQL>
我尝试过其他一些选项,例如 jacoco-aggregate &amp;甚至创建一个子模块,通过将其包含在父pom中,但没有真正起作用的&amp;这很简单。我在日志中看到 <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>
已被弃用,但仍然按原样运行,似乎在执行时自动替换,或者可以手动更新为<sonar.jacoco.reportPath>
或最新。完成设置之后,在cmd中以 mvn clean install 开始,然后 mvn org.jacoco:jacoco-maven-plugin:prepare-agent install &amp;然后做 mvn声纳:声纳,这就是我试过的,请告诉我是否有其他最好的可用解决方案。希望这有帮助!!如果没有,请发表您的问题..
答案 1 :(得分:0)
SonarQube(更具体地说是SonarJava分析仪)不计算覆盖范围。您必须提供覆盖率报告,以便分析在SonarQube UI中导入其结果并显示覆盖率。
有关如何实现此目的的更多信息,请参阅documentation。