2016-09-08 22 views
2

我正在使用Bamboo,SonarQube和Maven插件在SonarQube中生成Jacoco報告。它生成jacoco.exec文件,但是如何在SonarQube中顯示報告?繼插件我使用 「沒有JaCoCo對項目覆蓋的分析,因爲沒有類文件

<plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>0.7.7.201606060606</version> 
       <executions> 
        <execution> 
         <id>pre-unit-test</id> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
         <configuration> 
          <!-- Sets the path to the file which contains the execution data. --> 
          <destFile>${project.build.directory}/jacoco.exec</destFile> 
          <!-- Sets the name of the property containing the settings for JaCoCo 
           runtime agent. --> 
          <propertyName>surefireArgLine</propertyName> 
         </configuration> 
        </execution> 
        <!-- Ensures that the code coverage report for unit tests is created 
         after unit tests have been run. --> 
        <execution> 
         <id>post-unit-test</id> 
         <phase>test</phase> 
         <goals> 
          <goal>report</goal> 
         </goals> 
         <configuration> 
          <!-- Sets the path to the file which contains the execution data. --> 
          <dataFile>${project.build.directory}/jacoco.exec</dataFile> 
          <!-- Sets the output directory for the code coverage report. --> 
          <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.15</version> 
       <configuration> 
        <!-- Sets the VM argument line used when unit tests are run. --> 
        <argLine>${surefireArgLine}</argLine> 
        <!-- Skips unit tests if the value of skip.unit.tests property is true --> 
        <skipTests>${skip.unit.tests}</skipTests> 
        <!-- Excludes integration tests when unit tests are run. --> 
        <excludes> 
         <exclude>**/IT*.java</exclude> 
        </excludes> 
       </configuration> 
      </plugin>' 

我得到以下異常

build 08-Sep-2016 15:33:06 INFO: Sensor JaCoCoSensor 
build 08-Sep-2016 15:33:06 INFO: No JaCoCo analysis of project coverage can be done since there is no class files. 
build 08-Sep-2016 15:33:06 INFO: Sensor JaCoCoSensor (done) | time=72ms 
build 08-Sep-2016 15:33:06 INFO: Sensor JaCoCoOverallSensor 
build 08-Sep-2016 15:33:06 INFO: Analysing /opt/shared/atlassian/bamboo/xml-data/build-dir/EV-LEV362-JOB1/enterprise/projects/target/jacoco.exec 
build 08-Sep-2016 15:33:06 INFO: No JaCoCo analysis of project coverage can be done since there is no class files. 
build 08-Sep-2016 15:33:06 INFO: Sensor JaCoCoOverallSensor (done) | time=100ms 
build 08-Sep-2016 15:33:06 INFO: Sensor XmlFileSensor 
+0

如果你遇到這個答案和你」重新使用Gradle而不是Maven,跳過這裏:http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle它可以簡化很多事情。 – hangtwenty

回答

8

構建08月-2016 15時33分06秒INFO:項目覆蓋的任何JaCoCo分析可以做到因爲沒有類文件。

就像它在日誌中說的那樣;檢查是否已指定以下內容:

sonar.java.binaries=classes directory, most likely target/classes 

作品更好,如果你還可以指定(它那麼不應該抱怨沒有被人發現一些類):

sonar.java.libraries=libraries directory, likely target/project/WEB-INF/lib