15.2.  Using Quality Gates in the Continuous Integration (CI) Build

Sonargraph-Build can be used to enforce quality gates. All that is needed is a failSet configuration including the issue type "QualityGateIssue". The example below shows the XML configuration file for the shell integration of Sonargraph-Build. The same options exist for the other integrations (Ant, Maven, Gradle):

<sonargraphBuild
...            
	<failSet>
	    <failOnEmptyWorkspace>false</failOnEmptyWorkspace>
	    <includes>
	        <include>
	            <issueType>QualityGateIssue</issueType>
	        </include>                                            
	    </includes>                                                            
	</failSet>
</sonargraphBuild>

The result of the quality gate check is printed to the console (slightly formatted here):

...
Checking active quality gate(s)...
[Failed] Quality Gate 'No_Additional_CycleGroups'
    [Failed] Baseline Conditions:
        [Failed] Condition "Change of metric value for 'Core:System:CyclicComponents' must be 
            <= 1,00 (absolute)" [0 -> 2 (+2)]
        [Failed] Condition "Change of metric value for 'Java:System:CyclicityPackages' must be 
            <= 1,00 (absolute)" [0 -> 4 (+4)]

[Failed] Quality Gate 'No_Threshold_Violations'
    [Failed] Current System Conditions:
        [Failed] Condition "<= 0 threshold violations for metric 'Core:Type:SourceElementCount' 
            with severity 'Any' and resolution 'None'" [5 issues matched (0 excluded)]
        [Passed] Condition "<= 0 issues of type 'ThresholdViolation' 
            with severity 'Error' and resolution 'None'" [0 issues matched (0 excluded)]
    [Passed] Baseline Conditions:
        [Passed] Condition "No additional or worsened threshold violations for metric 
            'Core:Type:SourceElementCount' with severity 'Any' and resolution 'None'" 
            [0 issues matched (0 excluded, 0 tolerated)]
Check of quality gates failed.
Quality Gate Summary: 2 of 2 failed.
...