Maven Codecoverage not reflecting in Sonarqube with Jacoco plugin. How to get code coverage in Sonarqube?

We are running sonarqube for maven project. We have used Jacoco plugin for codecoverage.
Sonarqube Version 8.3
Java 11.
But Issue is code coverage is not reflecting in Sonarserver.
In maven task we are getting like No reports found to publish
You can maven logs in the attachment
sonarmavenlogs.zip (234.2 KB)

Here in azure pipeline I can see the Codecoverage but not reflecting in Sonar server.

PIPELINE YAML CODE
resources:

repositories:

  • repository: templates
    type: git
    name: ECommDevOps/com-devops-pipelines
    containers:
  • container: redis
    image: bitnami/redis:latest
    env:
    REDIS_PASSWORD: pwd
    ports:
    • 6379:6379
      stages:
  • stage: ‘Build’
    displayName: ‘Build and test’
    jobs:
    • job: ‘Test’
      displayName: ‘Build job’
      pool:
      vmImage: ‘ubuntu-18.04’
      services:
      redis: redis
      steps:

      • task: SonarQubePrepare@4
        inputs:
        SonarQube: ‘sonarqube83_connection’
        scannerMode: ‘Other’
        extraProperties: |
        #Add properties
        sonar.projectKey=MicroService-Auth-Sonar
        sonar.projectName=MicroService-Auth-Sonar
        sonar.verbose=true
        sonar.log.level=info
        #sonar.jacoco.reportPaths=/target/jacoco-output/all-tests.exec
        #sonar.coverage.jacoco.xmlReportPaths=/home/vsts/work/1/s/target/site/jacoco-all-tests-coverage-report/jacoco.xml
        sonar.coverage.jacoco.xmlReportPaths=/home/vsts/work/1/s/target/site/jacoco-all-tests-coverage-report/jacoco.xml

      • task: Maven@2
        inputs:
        mavenPomFile: ‘pom.xml’
        goals: ‘verify -P unit-tests,component-tests -e -X’
        options: ‘-Dspring.profiles.active=ci -Dmaven.repo.local=$(Pipeline.Workspace)/.m2/repository -Dsonar.coverage.jacoco.xmlReportPaths=/home/vsts/work/1/s/target/site/jacoco-all-tests-coverage-report/jacoco.xml’
        publishJUnitResults: true
        testResultsFiles: ‘**/surefire-reports/TEST-*.xml’
        codeCoverageToolOption: ‘JaCoCo’
        codeCoverageSourceDirectories: ‘/home/vsts/work/1/s/target/site/jacoco-all-tests-coverage-report/’
        javaHomeOption: ‘JDKVersion’
        jdkVersionOption: ‘1.11’
        mavenVersionOption: ‘Default’
        mavenAuthenticateFeed: true
        sonarQubeRunAnalysis: true
        isJacocoCoverageReportXML: true
        sqMavenPluginVersionChoice: ‘latest’

      • task: CopyFiles@2
        inputs:
        SourceFolder: ‘/home/vsts/work/1/s/’
        Contents: ‘**’
        TargetFolder: ‘$(Build.ArtifactStagingDirectory)’

      • task: PublishBuildArtifacts@1
        inputs:
        PathtoPublish: ‘$(Build.ArtifactStagingDirectory)’
        ArtifactName: ‘MicroServices-BUILD-Drop’
        publishLocation: ‘Container’

      • task: SonarQubePublish@4
        inputs:
        pollingTimeoutSec: ‘300’

      • task: PublishCodeCoverageResults@1
        inputs:
        codeCoverageTool: ‘JaCoCo’
        summaryFileLocation: ‘**/target/site/jacoco-all-tests-coverage-report/jacoco.xml’
        reportDirectory: ‘/home/vsts/work/1/s/target/site/jacoco-all-tests-coverage-report/html’

Here we got report in pipeline. But not getting in Sonar server. Below are the report files.
jacoco-component-tests-coverage-report.zip (874.9 KB)

Please help in getting code coverage in sonarqube.

Hi,

What does your analysis log say?

 
Ann

We got the solution. Here we have added these properties with build.sourcesdirectory. After changing these the coverage report got reflected in sonarqube

- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    goals: 'clean verify -P unit-tests,component-tests'
    options: '-Dspring.profiles.active=ci -Dmaven.repo.local=$(Pipeline.Workspace)/.m2/repository 
    -Dsonar.java.binaries=$(build.sourcesdirectory)/**/src/test/java/ 
    -Dsonar.coverage.jacoco.xmlReportPaths=$(Build.SourcesDirectory)/target/site/jacoco-all-tests-coverage-report/jacoco.xml 
    -Dsonar.java.binaries=$(build.sourcesdirectory)/target/classes/com/dentsply/indirect/auth
    -Dsonar.working.directory=$(build.sourcesdirectory)/target/sonar '
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    codeCoverageToolOption: 'JaCoCo'
    codeCoverageClassFilesDirectories: '$(System.DefaultWorkingDirectory)/target/classes/com/dentsply/indirect/auth'
    codeCoverageSourceDirectories: '$(System.DefaultWorkingDirectory)/src/main/java/com/dentsply/indirect/auth'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.11'
    mavenVersionOption: 'Default'
    mavenAuthenticateFeed: true
    effectivePomSkip: false
    sonarQubeRunAnalysis: true
    sqMavenPluginVersionChoice: 'latest'
1 Like

Also we have to isJacocoCoverageReportXML: false. Then only it will take the report from our specified path. Else it will show no coverage found in default location

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.