forked from pica/ruby-sonar-plugin
/
RubyPlugin.java
executable file
·82 lines (71 loc) · 3.19 KB
/
RubyPlugin.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.godaddy.sonar.ruby;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.sonar.api.CoreProperties;
import org.sonar.api.Properties;
import org.sonar.api.PropertyType;
import org.sonar.api.SonarPlugin;
import org.sonar.api.config.PropertyDefinition;
import org.sonar.api.resources.Qualifiers;
import com.godaddy.sonar.ruby.core.Ruby;
import com.godaddy.sonar.ruby.core.RubySourceCodeColorizer;
import com.godaddy.sonar.ruby.core.profiles.SonarWayProfile;
import com.godaddy.sonar.ruby.metricfu.MetricfuComplexitySensor;
import com.godaddy.sonar.ruby.metricfu.MetricfuComplexityYamlParserImpl;
import com.godaddy.sonar.ruby.simplecovrcov.SimpleCovRcovJsonParserImpl;
import com.godaddy.sonar.ruby.simplecovrcov.SimpleCovRcovSensor;
/**
* This class is the entry point for all extensions
*/
@Properties({})
public final class RubyPlugin extends SonarPlugin
{
public static final String SIMPLECOVRCOV_REPORT_PATH_PROPERTY = "sonar.simplecovrcov.reportPath";
public static final String METRICFU_REPORT_PATH_PROPERTY = "sonar.metricfu.reportPath";
public static final String METRICFU_COMPLEXITY_METRIC_PROPERTY = "sonar.metricfu.complexityMetric";
public List<Object> getExtensions()
{
List<Object> extensions = new ArrayList<Object>();
extensions.add(Ruby.class);
extensions.add(SimpleCovRcovSensor.class);
extensions.add(SimpleCovRcovJsonParserImpl.class);
extensions.add(MetricfuComplexityYamlParserImpl.class);
extensions.add(RubySourceCodeColorizer.class);
extensions.add(RubySensor.class);
extensions.add(MetricfuComplexitySensor.class);
// Profiles
extensions.add(SonarWayProfile.class);
PropertyDefinition metricfuReportPath = PropertyDefinition.builder(METRICFU_REPORT_PATH_PROPERTY)
.category(CoreProperties.CATEGORY_CODE_COVERAGE)
.subCategory("Ruby Coverage")
.name("MetricFu Report path")
.description("Path (absolute or relative) to MetricFu yml report file.")
.defaultValue("tmp/metric_fu/report.yml")
.onQualifiers(Qualifiers.PROJECT)
.build();
extensions.add(metricfuReportPath);
PropertyDefinition simplecovrcovReportPath = PropertyDefinition.builder(SIMPLECOVRCOV_REPORT_PATH_PROPERTY)
.category(CoreProperties.CATEGORY_CODE_COVERAGE)
.subCategory("Ruby Coverage")
.name("SimpleCovRcov Report path")
.description("Path (absolute or relative) to SimpleCovRcov json report file.")
.defaultValue("coverage/.resultset.json")
.onQualifiers(Qualifiers.PROJECT)
.build();
extensions.add(simplecovrcovReportPath);
List<String> options = Arrays.asList("Saikuro", "Cane");
PropertyDefinition ComplexityMetric = PropertyDefinition.builder(METRICFU_COMPLEXITY_METRIC_PROPERTY)
.category(CoreProperties.CATEGORY_CODE_COVERAGE)
.subCategory("Ruby Coverage")
.name("MetricFu Complexity Metric")
.description("Type of complexity, Saikuro or Cane")
.defaultValue("Saikuro")
.onQualifiers(Qualifiers.PROJECT)
.type(PropertyType.SINGLE_SELECT_LIST)
.options(options)
.build();
extensions.add(ComplexityMetric);
return extensions;
}
}