I'm using SonarQube 6.3.1 and I'm running jenkins to create SonarQube dashboard. So, I need to run jenkins job to create js coverage report and import to SonarQube to create UT coverage.
By setting SonarQube Scanner in Jenkins, here is properties:
sonar.projectKey=xxxxxxManagement
sonar.projectName=XXXXXX Management
sonar.projectVersion=1.0
sonar.language=js
sonar.sources=webapp
sonar.sourceEncoding=UTF-8
sonar.javascript.coveragePlugin=jacoco
sonar.javascript.lcov.reportPaths=target/jscoverage/jscoverage.xml
sonar.dynamicAnalysis=reuseReports
sonar.login=admin
sonar.password=admin
In Jenkins, here is the report path and report context:
However, SonarQube dashboard shows JS UT coverage is 0
I'm wondering if sonar.javascript.lcov.reportPaths setting is wrong, so I have tried many ways I have tried:
sonar.javascript.lcov.reportPaths=./target/jscoverage/jscoverage.xml
I also tried:
sonar.javascript.lcov.reportPaths=/target/jscoverage/jscoverage.xml
but UT coverage is always zero
Since I can see report created correctly, I doubt if import to SonarQube fail, but no error log shows in Jenkins console.
6/29 Add new updates from my investigation, From Jenkins log,
INFO: Analysing [/var/jenkins_home/sharedspace/target/jscoverage/jscoverage.xml]
INFO: Sensor JavaScript Squid Sensor [javascript] (done) | time=1611ms
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=36ms
INFO: Sensor Code Colorizer Sensor
INFO: Sensor Code Colorizer Sensor (done) | time=1ms
INFO: Sensor CPD Block Indexer
INFO: org.sonar.scanner.cpd.deprecated.DefaultCpdBlockIndexer@4644f3d4 is used for js
DEBUG: No CpdMapping for language js
INFO: Sensor CPD Block Indexer (done) | time=0ms
INFO: Calculating CPD for 16 files
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/Component.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/util.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/IncidentDetail.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/formatter.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/util/Validator.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/localService/mockserver.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/Attachments.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/models.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequestOverview.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/NotFound.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/ErrorHandler.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/CreateIncident.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/BaseController.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequestDetail.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequests.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/App.controller.js
INFO: CPD calculation finished
From log, we can see there is no error message so I added shell script in Post Steps in Jenkins Job:
cd target/jscoverage
pwd
vi jscoverage.xml
and Jenkins log shows:
<coverage files="11" line-rate="0.7357294" lines-covered="348" lines-valid="473"[3;2Htimestamp="1498722804050">
<modules>
<module name="/Component.js" filename="/Component.js" line-rate="0.84210527" lin[6;1Hes-covered="16" lines-valid="19">
<lines>
<line number="1" hits="1"/>
<line number="8" hits="1"/>
<line number="10" hits="1"/>
<line number="24" hits="1"/>
<line number="27" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="39" hits="1"/>
<line number="49" hits="1"/>
<line number="51" hits="1"/>
<line number="61" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
...
From 2 pieces of log we can see that report looks good and SonarQube reads report succuessfully, and we can see UT cover file by file in the xml report, but UT coverage is still zero.
7/3 I have added dependency
<dependency>
<groupId>fr.sii.sonar</groupId>
<artifactId>sonar-coverage-lcov</artifactId>
<version>2.1.0</version>
</dependency>
and changed
<sonar.javascript.jscoverage.reportPath>${project.build.directory}/jscoverage/jscoverage.xml</sonar.javascript.jscoverage.reportPath>
from jscoverage.xml to jscoverage.lcov but still not work
The report your are trying to import looks like an xml file. For JavaScript, SonarQube supports coverage reports in LCOV format. See documentation : https://docs.sonarqube.org/display/PLUG/JavaScript+Coverage+Results+Import
Depending on the coverage tool you are using, there might be an option to generate the report in the LCOV format.