How do i import code coverage in my github action

Template for a good new topic, formatted with Markdown:

  • ALM used GitHub
  • CI system used Github Action
  • Scanner command used when applicable (private details masked)
  • Languages of the repository: c#
  • Only if the SonarCloud project is public, the URL
name: CI-CD
on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened]
jobs:
  build:
    name: CI-CD
    runs-on: windows-latest
    steps:
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 1.11
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: Cache SonarCloud packages
        uses: actions/cache@v1
        with:
          path: ~\sonar\cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Cache SonarCloud scanner
        id: cache-sonar-scanner
        uses: actions/cache@v1
        with:
          path: .\.sonar\scanner
          key: ${{ runner.os }}-sonar-scanner
          restore-keys: ${{ runner.os }}-sonar-scanner
      - name: Install SonarCloud scanner
        if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
        shell: powershell
        run: |
          New-Item -Path .\.sonar\scanner -ItemType Directory
          dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner
      - name: Build and analyze
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        shell: powershell
        run: |
          .\.sonar\scanner\dotnet-sonarscanner begin /k:"CityDiscoverTourist_CityDiscoverTouristServer" /o:"citydiscovertourist" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.dotcover.reportsPaths=dotCover.Output.html /d:"sonar.cs.dotcover.reportsPaths=**/*.html"
          dotnet build CityDiscoverTourist.sln 
          dotnet dotcover test --dcReportType=HTML
          
          .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"

I’m used dotCover to generate code coverage file and I want to import it to Sonarcloud but seems like my import command is not correct. Or what command should I put between ‘begin’ and ‘end’.
Tks for your time

Hello @dat0609 and welcome to the community!

Did you have a look at these guidelines? They should help you solve your problem

All the best,
Čaba

Hi Čaba Šagi, tks for your reply, I have tried

run: |
          dotnet tool install --global dotnet-coverage
          .\.sonar\scanner\dotnet-sonarscanner begin /k:"CityDiscoverTourist_CityDiscoverTouristServer" /o:"citydiscovertourist" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" -d:"sonar.cs.vscoveragexml.reportsPaths=*/TestResults/*/*"
          dotnet build CityDiscoverTourist.sln 
          dotnet test --no-build --collect:"XPlat Code Coverage" reportgenerator "-reports:*\TestResults\*\coverage.cobertura.xml" "-targetdir:sonarqubecoverage" "-reporttypes:SonarQube"
          .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"

but the logs said

Parsing the Visual Studio coverage XML report D:\a\CityDiscoverTouristServer\CityDiscoverTouristServer.\CityDiscoverTourist.Test\TestResults\cf120fb8-067e-4fcc-a401-64d5a9f6b584\coverage.cobertura.xml

623WARN: Could not import coverage report ‘.\CityDiscoverTourist.Test\TestResults\cf120fb8-067e-4fcc-a401-64d5a9f6b584\coverage.cobertura.xml’ because ‘Missing root element in D:\a\CityDiscoverTouristServer\CityDiscoverTouristServer.\CityDiscoverTourist.Test\TestResults\cf120fb8-067e-4fcc-a401-64d5a9f6b584\coverage.cobertura.xml at line 2’.

Hi @dat0609

If you are using the dotnet-coverage tool, there is now a code sample showing how to set it up here.

Hope that helps

Tom