Publish test coverage of multiple .NET Core Projects from Azure DevOps to SonarQube server

后端 未结 2 405
耶瑟儿~
耶瑟儿~ 2021-01-16 20:34

I have a .net core solution with two xunit test projects. The build runs on Azure DevOps pipeline and I want to publish the test coverage to a SonarQube (Community) server.<

相关标签:
2条回答
  • 2021-01-16 20:45

    I finally found the issue. You don't need to merge the .coveragexml files, the last version of the SonarScanner.MSBuild.exe actually finds all the .coveragexml files. I looked more closely in the logs and found multiple lines like these:

    INFO: Sensor C# Tests Coverage Report Import [csharp]
    INFO: Parsing the Visual Studio coverage XML report [...]
    INFO: Adding this code coverage report to the cache [...]
    INFO: Parsing the Visual Studio coverage XML report [...]
    INFO: Adding this code coverage report to the cache [...]
    

    So the .coveragexml files were found and published to sonar.

    The reported coverage was false because I needed to add a

    <DebugType>Full</DebugType>
    

    In a project. The odd thing is that the other projects reported some code coverage without this property set in the .csproj so I thought I didn't need it.

    So if the reported coverage seems false, try adding this property in the csproj.

    0 讨论(0)
  • 2021-01-16 21:01

    Here is a very good article about configuring your code coverage and publish it to Sonarqube server.

    https://allthingssharepoint.wordpress.com/2018/09/10/getting-coverage-reports-with-net-core/

    I am assuming that because of the param passed in dot net test task , your last test project data is overwriting the first test project. You need to ensure that all your test cases would run at one go in the same task.

    Task would be like below-

    Also while preparing analysis on SonarCloud This is either the SonarCloud task or the SonarQube task. You get them from the Marketplace. Apart from the usual Sonar properties (project, key, version) we need to provide 1 extra property under “Advanced”:

    sonar.cs.vscoveragexml.reportsPaths=$(Agent.BuildDirectory)\TestResults\TestCoverage.xml
    

    Please refer this and see if it helps.

    0 讨论(0)
提交回复
热议问题