Hello, we’r using azure devops CI and are experiencing some problems with the code coverage being send to sonarcloud. Our application is divided into
project.api.applicatie,
project.api.data,
project.api.domain
When we run our code coverage as shown below we in return get a complete code coverage in azure devops itself. However if we check sonarcloud we see that only the .api.domain
The difference in code codecoverage is about 40-45%
Azure devops (contains all expected projects, …data, .domain, .application and their code coverage)
The coverage in sonarcloud is shown as ~20% with only domain showing.
Yaml
task: DotNetCoreCLI@2
displayName: 'Dotnet restore'
inputs:
command: 'restore'
projects: '$(projectName)/Booking.Correspondence/Booking.Correspondence.csproj'
feedsToUse: 'config'
nugetConfigPath: '$(projectName)/.nuget/NuGet.Config'
- task: SonarCloudPrepare@1
displayName: 'Prepare analysis on SonarCloud'
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest'))
inputs:
SonarCloud: Sonarcloud
organization: 'organization'
projectKey: 'projectkey'
projectName: 'projectkey'
extraProperties: sonar.coverageReportPaths=$(Pipeline.Workspace)/coverage/SonarQube.xml
- task: DotNetCoreCLI@2
displayName: 'Dotnet build $(buildConfiguration)'
inputs:
command: 'build'
projects: '$(projectName)/Booking.Correspondence/Booking.Correspondence.csproj'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Dotnet unit test'
inputs:
command: test
projects: |
$(projectName)/tests/**/*.Tests.csproj
arguments: '--configuration $(buildConfiguration) -s $(projectName)/tests/Booking.Correspondence.Tests/coverlet.runsettings'
publishTestResults: true
- task: reportgenerator@5
displayName: 'generate test reports'
inputs:
reports: $(Agent.TempDirectory)/**/coverage.cobertura.xml
targetdir: $(Pipeline.Workspace)/coverage
disable.coverage.autogenerate: 'true'
reporttypes: SonarQube;Cobertura
verbosity: 'Info'
- task: PublishCodeCoverageResults@1
displayName: 'Publish cobertura code coverage report'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Pipeline.Workspace)/coverage/Cobertura.xml'
- task: DotNetCoreCLI@2
displayName: 'Dotnet publish'
inputs:
command: publish
projects: '$(projectName)/Booking.Correspondence/Booking.Correspondence.csproj'
publishWebProjects: False
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: False
- task: SonarCloudAnalyze@1
displayName: 'Run Code Analysis'
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest'))
- task: SonarCloudPublish@1
displayName: 'Publish Quality Gate Result'
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest'))