/*
* Coverity Sonar Plugin
* Copyright (c) 2017 Synopsys, Inc
* support@coverity.com
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*/
package org.sonar.plugins.coverity.base;
import org.sonar.api.measures.Metric;
import org.sonar.api.measures.Metrics;
import java.util.Arrays;
import java.util.List;
// This class construct the metrics that will be used by org/sonar/plugins/coverity/batch/CoveritySensor.java
// to build measures that will be used by ruby
public class CoverityPluginMetrics implements Metrics{
public static String DOMAIN = new String("Coverity");
// This metric will contain the URL to CIM.
public static final Metric<String> COVERITY_URL_CIM_METRIC = new Metric.Builder("COVERITY-URL-CIM-METRIC", "Url cim metric", Metric.ValueType.STRING)
.setDirection(Metric.DIRECTION_NONE)
.setQualitative(true)
.setDomain(DOMAIN)
.create();
// This metric will contain the name of the project.
public static final Metric<String> COVERITY_PROJECT_NAME = new Metric.Builder("COVERITY-PROJECT-NAME", "Project Name", Metric.ValueType.STRING)
.setDirection(Metric.DIRECTION_NONE)
.setQualitative(true)
.setDomain(DOMAIN)
.create();
// This metric will contain the URL to the project
public static final Metric<String> COVERITY_PROJECT_URL = new Metric.Builder("COVERITY-PROJECT-URL", "Project Url", Metric.ValueType.STRING)
.setDirection(Metric.DIRECTION_NONE)
.setQualitative(true)
.setDomain(DOMAIN)
.create();
// This metric will contain the total number of defects in the project.
// This also counts defects for which the method getResourceForFile() returned null.
public static final Metric<Integer> COVERITY_OUTSTANDING_ISSUES = new Metric.Builder("COVERITY-OUTSTANDING-ISSUES", "Outstanding Issues", Metric.ValueType.INT)
.setDirection(Metric.DIRECTION_WORST)
.setQualitative(false)
.setDomain(DOMAIN)
.create();
// This metric will contain the number of defects with high impact.
public static final Metric<Integer> COVERITY_HIGH_IMPACT = new Metric.Builder("COVERITY-HIGH-IMPACT", "High Impact", Metric.ValueType.INT)
.setDirection(Metric.DIRECTION_WORST)
.setQualitative(false)
.setDomain(DOMAIN)
.create();
// This metric will contain the number of defects with medium impact.
public static final Metric<Integer> COVERITY_MEDIUM_IMPACT = new Metric.Builder("COVERITY-MEDIUM-IMPACT", "Medium Impact", Metric.ValueType.INT)
.setDirection(Metric.DIRECTION_WORST)
.setQualitative(false)
.setDomain(DOMAIN)
.create();
// This metric will contain the number of defects with low impact.
public static final Metric<Integer> COVERITY_LOW_IMPACT = new Metric.Builder("COVERITY-LOW-IMPACT", "Low Impact", Metric.ValueType.INT)
.setDirection(Metric.DIRECTION_WORST)
.setQualitative(false)
.setDomain(DOMAIN)
.create();
public List<Metric> getMetrics() {
return Arrays.asList(COVERITY_URL_CIM_METRIC, COVERITY_PROJECT_NAME, COVERITY_PROJECT_URL, COVERITY_OUTSTANDING_ISSUES, COVERITY_HIGH_IMPACT,
COVERITY_MEDIUM_IMPACT, COVERITY_LOW_IMPACT);
}
}