Add the following argument to the DotNetCoreCLI test task in your build pipeline. https://github.com/seanke/SonarQubeDotNetCoreCodeCoverageExample, https://sonarcloud.io/dashboard?id=seanke_SonarQubeDotNetCoreCodeCoverageExample. In addition to implementing agile techniques (like scrum), ALM and DevOps practices, he is a SharePoint/O365 architect and a Clean Code addict. build 24-Mar-2020 18:13:42 INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report Any guesses for what percentage code coverage SonarQube will report in this case? The Code Coverage does display in the TFS Build side though. We now see information about what class has been analysed, in this case the MathService. The version of SonarQube used in the project is the lts (long term support version) and the Jacoco plugin comes with the version of Gradle in the project (6.4.1). This will report on the code coverage as well as run a full scan of our code. build 24-Mar-2020 18:13:42 INFO: Analysis skipped/aborted due to missing report file SonarQube is a tool which aims to improve the quality of your code using static analysis techniques to report: The SonarQube server is a standalone service which allows you to browse reports from all the different projects which have been scanned. Thanks again for the solution BTW…, Try to create a new SonarQube connection. Code coverage is a metric that many teams use to check the quality of their tests, as it represents the percentage of production code that has been tested. If i run the same example against an external sonarqube scanner i have also 0 %. If you are using a YAML build pipeline the SonarQubePrepare task should look like the following. I use cookies to ensure that I give you the best experience on my website. I think the problem is with the latest version of Sonarqube, as specified in docker-compose.yml. In the Visual Studio Test build task, I have the Code Coverage Enabled checkbox checked , but I still do not get the code coverage details in SonarQube. This seem to be a bug with SonarQube latest scanner, since I had it … This uses the LTS version of SonarQube (currently version 7). I got it working in the end. 1. However, you are unable to get the code coverage … Have you tried the solution here: https://writeabout.net/2019/04/27/net-core-code-coverage-done-right/. Dear Tom, Now that we’ve got our test code coverage data being generated by Jacoco, it’s time to hook all this up by running a SonarQube scan. I will try with Gradle Enterprise. build 24-Mar-2020 18:13:42 INFO: Dependency-Check HTML report does not exists. Let’s zoom in a bit: We can see that SonarQube is telling us that: That makes 2 out of 3, hence the 66.7% being reported by SonarQube. build 24-Mar-2020 18:13:42 INFO: Process Dependency-Check report (done) | time=4ms .Net, DevOps, Scrum, ALM, Clean Code, SharePoint, IoT, PowerShell. In the test task you have to add –collect:”Code Coverage” for the task to add a logger for code coverage. https://stackoverflow.com/questions/50906497/sonarqube-v-4-3-0-vsts-task-publish-analysis-result-throw-error-could-not-fet, Possible.. I’m searching google and stumbled across some references to the SSL. You can generate it with the following line: If you don’t want to analyse your test projects you just don’t add the attribute there. Just add the following docker-compose.yml file to your project: This will use the lts (long term support) version of the SonarQube Docker image, which is currently SonarQube version 7 (for version 8 instructions see the later section). I’m adding my response here in case it’s useful for anyone. s. Hi Stefan. build 24-Mar-2020 18:13:42 INFO: ———————————————————————— That was successful, but we can double check everything is OK by seeing what Docker processes are running: Here we can see SonarQube is running on localhost:9000. I found a better solution that uses Opencover. To convert the file you have to call CodeCoverage.exe with the (undocumented) parameter /analyse. Could SonarQube, Jacoco or any other tool would automatically run tests whenever I push to my repository, providing me with information if tests passed and code coverage information without running it on the local machine. Fortunately with the Gradle Jacoco plugin this is straightforward, and can be achieved with this small configuration in build.gradle: Now when we run ./gradlew test we’ll get an xml report at build/reports/jacoco/test/jacocoTestReport.xml: And./gradlew sonarqube can be run as normal against a SonarQube 8 server. Change ), You are commenting using your Facebook account. Post was not sent - check your email addresses! build 24-Mar-2020 18:13:42 INFO: EXECUTION SUCCESS ✅ Access to video tutorials Notice we have a file jacoco/test.exec output in our build directory. build 24-Mar-2020 18:13:42 INFO: Analysis report uploaded in 28ms build 24-Mar-2020 18:13:42 INFO: Total time: 13.805s So there’s definitely room for improvement! Thx! This is a local process that analyses your code then sends reports to the SonarQube server. build 24-Mar-2020 18:13:42 INFO: More about the report processing at https://webgate.ec.europa.eu/CITnet/sonarqube/api/ce/task?id=AXENiSBOgY0MYh9regFH It had to do with the java that I was using. I know that SonarQube has integration with version control system such as GitLab (see docs). But SonarQube needs a .coveragexml and does not understand the .coverage file format. Thanks for providing this tutorial. See .NET Core Code Coverage Done Right for more. With SonarQube 8 the jacoco.exec file is no longer compatible, and instead we have to create a report in xml format. build 24-Mar-2020 18:13:42 INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=3ms It might take a minute to fully start up, but eventually we’ll see this screen: This is correctly reporting we currently have 0 projects analysed. It’s in binary format, so unfortunately we can’t take a look inside. ✅ All of my latest articles for the month Another option might be to use the Web API to get the information you need then format it into a report. build 24-Mar-2020 18:13:42 INFO: Sensor JaCoCoSensor [java] (done) | time=1ms Save my name, email, and website in this browser for the next time I comment. build 24-Mar-2020 18:13:42 INFO: ———————————————————————— I’d love to hear from you at tom@tomgregory.com. These steps assume that you are using .NET Core 3.x and that you have already have a Azure DevOps Build Pipeline integrated with SonarQube/SonarCloud. The code coverage shows up now (awesome, thanks). An official Docker image exists for SonarQube, making this really easy to get up and running using Docker Compose. Add the task to your pipeline and configure your endpoint. This is the logging: build 24-Mar-2020 18:13:42 INFO: parsing [/ec/local/citnet/bamboo-agent-home/xml-data/build-dir/EACDEVOPS-EACDEVOPSPLAN1-CHEC/sonarqube-jacoco-code-coverage/build/test-results/test] The YAML build pipeline task looks like this. simple 24-Mar-2020 18:13:42 Finished task ‘sonarqube source scanning’ with result: Success build 24-Mar-2020 18:13:42 INFO: Sensor JaCoCoSensor [java] build 24-Mar-2020 18:13:42 INFO: ANALYSIS SUCCESSFUL, you can browse https://webgate.ec.europa.eu/CITnet/sonarqube/dashboard?id=EACDEVOPS-SRCKEY build 24-Mar-2020 18:13:42 INFO: Sensor HTML [web] (done) | time=26ms For some reason it’s not generating the code coverage stats correctly. Click on the link to see even more details: We can now see the class itself, where green highlights code that is properly tested and red code that isn’t. SonarQube does not understand this type of file. Hi Erandika. I have updated the GitHub repository and blog post to specify the version of lts (long term support) instead of latest. Enter your email address to follow this blog and receive notifications of new posts by email. Was looking for ‘natural’ options or parameters to be included in-line. Discover how to apply the Gradle Jacoco plugin to your project and run a SonarQube scan to generate a code coverage report. I’ve created a PowerShell script for that. build 24-Mar-2020 18:13:42 INFO: Sensor JaCoCo XML Report Importer [jacoco] build 24-Mar-2020 18:13:42 INFO: Sensor SurefireSensor [java] (done) | time=31ms Subscribe for monthly updates. Non-disruptive code quality analysis overlays your workflow so you can intelligently promote only clean builds. build 24-Mar-2020 18:13:42 INFO: SCM Publisher is disabled The default configuration for SonarQube way flags the code as failed if: the coverage on new code is less than 80%; percentage of duplicated lines on new code is greater than 3 This should do the trick! Thank you mike it makes easer to understand the combination Sonar with .Net Core. Code may have a high code coverage percentage, but it might be brittle and difficult to maintain. Thanks for the feedback. Change ), You are commenting using your Google account. He works as a Vice President – Consulting Services for CGI. For an example of this setup, check out the sonarqube-8 branch on GitHub. I am using sonarqube version 5.4 and jacoco version 0.7.9 , jenkins version is 1.611.With upgraded plugin on git and github. code coverage; bugs; code smells; security vulnerabilities; The SonarQube server is a standalone service which allows you to browse reports from all the different projects which have been scanned.To scan a specific codebase you run the SonarQube scanner. Fill in your details below or click an icon to log in: You are commenting using your WordPress.com account. . Could it be related to this: Great find on the Analyse parameter! Use JaCoCo’s xml report and sonar-jacoco plugin. Keeping the SonarQube and all plugins up to date is a pain. Also bear in mind that the features mentioned above are only available in paid version of SonarQube. It is just kind of weird in that I did not get this when I ran build prior to implementing the fix for code coverage… The 404 not found is kind of odd.. build 24-Mar-2020 18:13:42 INFO: Final Memory: 33M/349M build 24-Mar-2020 18:13:42 INFO: ———————————————————————— Everything running on localhost. build 24-Mar-2020 18:13:42 INFO: CPD calculation finished Thank you for running through it again and verifying though! However i get 0% coverage, 100% unit test build 24-Mar-2020 18:13:42 INFO: Sensor Dependency-Check [dependencycheck] Click on the 66.7% link. For the code coverage to work you have to add the following attribute under Advanced: In the test task you have to add –collect:”Code Coverage” for the task to add a logger for code coverage.