See https://docs.sonarqube.org/display/SONAR/Documentation for current functionality
Being able to monitor how quality evolves is a good start (see Historical Information).
The next step would be to manage your technical debt on your current development in order to keep it under control.
To deal with that, a Differential Services is provided on measures, issues and coverage by unit tests on new code.
Differential Views on Measures
To activate this service, pick the desired period in the Time changes... drop down list:
When a period is selected, the differential values will appear next to the project measures:
Differential Views on Issues
When clicking on the "Added:" link available on the "Issues and Technical Debt" widget (see previous screenshot), this will take you to the Issues page with the appropriate "New Issues" period selected. Note that in the issues page you're not limited to selecting issues by the defined differential periods, but can choose freely by date as well.
To determine the creation date of an issue, during each analysis, the following algorithm is executed to determine if an issue is new or existed previously. For each issue, three of four criteria (rule; line number; line content or "hash"; and message) must match for a detected issue to be matched up with an existing one:
- on the same rule, with the same line number and with the same hash (but not necessarily with the same message) > MATCH
- on the same rule, with the same message and with the same hash (but not necessarily with the same line) > MATCH
- on the same rule, with the same message and with the same line number (but not necessarily with the same hash) > MATCH
In any other case, the issue is a new one.
I am not getting the expected new issues in the Issues drilldown service when a differential view is selected?
Three reasons can explain this:
- This Issues Drilldown service only shows added issues, not fixed ones. Therefore the number you see in this service can be different from the one displayed on a dashboard through the Rules Compliance widget (that displays added issues - fixed issues).
- The algorithm detecting new issues is very good but still perfectible. Therefore new issues can sometimes appear only because SonarQube did not recognize it already existed.
- You are looking at a period of X days which goes beyond the first analysis made after migration to version 2.5. In this case there can be a discrepancy due to the fact that prior to 2.5, data to build this service were not collected. This issue will disappear as soon as period does not go beyond first analysis.
Code Coverage on New/Changed Code
You will be able to separate coverage by unit tests of new code from old (based upon a given cut-off date) in order to track the new code which does not have any/enough unit tests.
A live example is available on Nemo.
Differential Views Settings
Three periods can be configured globally and will be available and common to all projects. Go to Settings > General Settings > General > Differential Views to set these properties.
Two additional periods can be configured and be specific to the current project. Select your project and go to Settings > General > Differential Views to set these properties