sonarqubesonarqube-5.0sonarqube5.3sonarqube-web

New code coverage metrics not returning values from SonarQube 5.3 API


I need to fetch unit test coverage data for new code changes via the api. The metrics. I can see the data in SonarQubeDashboard but the api is not returning any values for the metrics like:

  1. new_coverage
  2. new_line_coverage (etc)

I am invoking the api :

https:///api/resources?format=json&metrics=ncloc,line_coverage,new_line_coverage

Even the Public Nemo Instance does not return these metric values:

https://nemo.sonarqube.org/api/resources?format=json&metrics=ncloc,line_coverage,new_line_coverage,new_coverage

The above API is returning only ncloc and line_coverage for each and every project.

Please dont tell me to check if these metrics are not available in the version. They are, if you invoke the API:

https://nemo.sonarqube.org/api/metrics/search


Solution

  • The modern way (api/measures/component)

    SonarQube's api/resources Web API is deprecated, you should use api/measures/component instead (since 5.4).

    Using this project as an example:

    https://nemo.sonarqube.org/api/measures/component?componentKey=org.sonarsource.php%3Aphp&metricKeys=ncloc,line_coverage,new_line_coverage,new_coverage&additionalFields=metrics,periods

    The old way (api/resources)

    If you're really stuck with api/resources (e.g. old SonarQube version), then keep in mind that for new metrics there is a notion of time delta (new since when ?), so you have to add includetrends=true to your request. Let's do that with your example:

    https://nemo.sonarqube.org/api/resources?format=json&metrics=ncloc,line_coverage,new_line_coverage,new_coverage&includetrends=true

    This gives you new_coverage and new_line_coverage (for the projects which do have coverage and SCM information available).