声纳分析后未填充代码覆盖率

时间:2016-12-14 15:26:26

标签: sonarqube code-coverage sonarqube5.6

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

我尝试编写手册,但没有运气,同样的问题。

2 个答案:

答案 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