Skip to content

Commit df7418c

Browse files
authored
Merge pull request #1296 from guwirth/metrics-missing
add CxxClangSASensor & CxxClangTidySensor metric
2 parents 0f53292 + 43c951c commit df7418c

File tree

7 files changed

+45
-38
lines changed

7 files changed

+45
-38
lines changed

cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerGccParser.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434
public class CxxCompilerGccParser implements CompilerParser {
3535
private static final Logger LOG = Loggers.get(CxxCompilerGccParser.class);
36-
public static final String COMPILER_KEY = "GCC";
36+
public static final String KEY = "GCC";
3737
// search for single line with compiler warning message - order for groups: 1 = file, 2 = line, 3 = message, 4=id
3838
public static final String DEFAULT_REGEX_DEF = "^(.*):([0-9]+):[0-9]+:\\x20warning:\\x20(.*)\\x20\\[(.*)\\]$";
3939
// ToDo: as long as java 7 API is not used the support of named groups for regular expression is not possible
@@ -46,7 +46,7 @@ public class CxxCompilerGccParser implements CompilerParser {
4646
*/
4747
@Override
4848
public String key() {
49-
return COMPILER_KEY;
49+
return KEY;
5050
}
5151

5252
/**
@@ -78,7 +78,7 @@ public String defaultCharset() {
7878
*/
7979
@Override
8080
public void processReport(final SensorContext context, File report, String charset, String reportRegEx, List<Warning> warnings) throws java.io.FileNotFoundException {
81-
LOG.info("Parsing '{}' format", COMPILER_KEY);
81+
LOG.info("Parsing '{}' format", KEY);
8282

8383
Scanner scanner = new Scanner(report, charset);
8484
Pattern p = Pattern.compile(reportRegEx, Pattern.MULTILINE);

cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public class CxxCompilerSensor extends CxxReportSensor {
4444
public static final String REPORT_REGEX_DEF = "compiler.regex";
4545
public static final String REPORT_CHARSET_DEF = "compiler.charset";
4646
public static final String PARSER_KEY_DEF = "compiler.parser";
47-
public static final String DEFAULT_PARSER_DEF = CxxCompilerVcParser.COMPILER_KEY;
47+
public static final String DEFAULT_PARSER_DEF = CxxCompilerVcParser.KEY;
4848
public static final String DEFAULT_CHARSET_DEF = "UTF-8";
49-
public static final String COMPILER_KEY = "Compiler";
49+
public static final String KEY = "Compiler";
5050

5151
private final Map<String, CompilerParser> parsers = new HashMap<>();
5252

@@ -122,6 +122,6 @@ private static boolean isInputValid(CompilerParser.Warning warning) {
122122

123123
@Override
124124
protected String getSensorKey() {
125-
return COMPILER_KEY;
125+
return KEY;
126126
}
127127
}

cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerVcParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
*/
3535
public class CxxCompilerVcParser implements CompilerParser {
3636
private static final Logger LOG = Loggers.get(CxxCompilerVcParser.class);
37-
public static final String COMPILER_KEY = "Visual C++";
37+
public static final String KEY = "Visual C++";
3838
// search for single line with compiler warning message VS2008 - order for groups: 1 = file, 2 = line, 3 = ID, 4=message
3939
public static final String DEFAULT_REGEX_DEF = "^(.*)\\((\\d+)\\)\\x20:\\x20warning\\x20(C\\d+):(.*)$";
4040
// sample regex for VS2012/2013: "^.*>(?<filename>.*)\\((?<line>\\d+)\\):\\x20warning\\x20(?<id>C\\d+):(?<message>.*)$";
@@ -46,7 +46,7 @@ public class CxxCompilerVcParser implements CompilerParser {
4646
*/
4747
@Override
4848
public String key() {
49-
return COMPILER_KEY;
49+
return KEY;
5050
}
5151

5252
/**

cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxMetrics.java

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,43 +35,50 @@
3535
import org.sonar.cxx.sensors.squid.CxxSquidSensor;
3636
import org.sonar.cxx.sensors.valgrind.CxxValgrindSensor;
3737
import org.sonar.cxx.sensors.veraxx.CxxVeraxxSensor;
38+
import org.sonar.cxx.sensors.clangsa.CxxClangSASensor;
39+
import org.sonar.cxx.sensors.clangtidy.CxxClangTidySensor;
3840

3941
/**
4042
* {@inheritDoc}
4143
*/
4244
public class CxxMetrics implements Metrics {
45+
4346
private final CxxLanguage language;
4447

4548
/**
46-
* CxxMetrics
47-
* @param language for metrics
48-
**/
49+
* CxxMetrics
50+
*
51+
* @param language for metrics
52+
*
53+
*/
4954
public CxxMetrics(CxxLanguage language) {
5055
this.language = language;
51-
52-
buildMetric(CxxCompilerSensor.COMPILER_KEY, "Compiler issues", language);
56+
57+
buildMetric(CxxCompilerSensor.KEY, "Compiler issues", language);
5358
buildMetric(CxxCppCheckSensor.KEY, "CppCheck issues", language);
5459
buildMetric(CxxOtherSensor.KEY, "Other tools issues", language);
5560
buildMetric(CxxPCLintSensor.KEY, "PC-Lint issues", language);
56-
buildMetric(CxxRatsSensor.KEY, "Rats issues", language);
57-
buildMetric(CxxSquidSensor.KEY, "Squid issues", language);
58-
buildMetric(CxxValgrindSensor.KEY, "Valgrind issues", language);
59-
buildMetric(CxxVeraxxSensor.KEY, "Vera issues", language);
60-
buildMetric(CxxDrMemorySensor.KEY, "DrMemory issues", language);
61+
buildMetric(CxxRatsSensor.KEY, "Rats issues", language);
62+
buildMetric(CxxSquidSensor.KEY, "Squid issues", language);
63+
buildMetric(CxxValgrindSensor.KEY, "Valgrind issues", language);
64+
buildMetric(CxxVeraxxSensor.KEY, "Vera issues", language);
65+
buildMetric(CxxDrMemorySensor.KEY, "DrMemory issues", language);
66+
buildMetric(CxxClangSASensor.KEY, "ClangSA issues", language);
67+
buildMetric(CxxClangTidySensor.KEY, "ClangTidy issues", language);
6168
}
6269

6370
/**
64-
* GetKey
65-
* @param key for language
66-
* @param language for metrics
67-
* @return String
68-
**/
71+
* GetKey
72+
*
73+
* @param key for language
74+
* @param language for metrics
75+
* @return String
76+
*
77+
*/
6978
public static String getKey(String key, CxxLanguage language) {
7079
return language.getPropertiesKey().toUpperCase(Locale.ENGLISH) + "-" + key.toUpperCase(Locale.ENGLISH);
7180
}
7281

73-
74-
7582
@Override
7683
public List<Metric> getMetrics() {
7784
return new ArrayList(this.language.getMetricsCache());
@@ -80,11 +87,11 @@ public List<Metric> getMetrics() {
8087
private static void buildMetric(String key, String description, CxxLanguage language) {
8188
String effectiveKey = CxxMetrics.getKey(key, language);
8289
Metric<?> metric = new Metric.Builder(effectiveKey, description, Metric.ValueType.INT)
83-
.setDirection(Metric.DIRECTION_WORST)
84-
.setQualitative(Boolean.TRUE)
85-
.setDomain(language.getKey().toUpperCase(Locale.ENGLISH))
86-
.create();
87-
88-
language.SaveMetric(metric, key);
90+
.setDirection(Metric.DIRECTION_WORST)
91+
.setQualitative(Boolean.TRUE)
92+
.setDomain(language.getKey().toUpperCase(Locale.ENGLISH))
93+
.create();
94+
95+
language.SaveMetric(metric, key);
8996
}
9097
}

cxx-sensors/src/test/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensorTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void shouldReportCorrectGccViolations() {
6363

6464
Settings settings = new Settings();
6565
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_PATH_KEY), "compiler-reports/build.gcclog");
66-
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerGccParser.COMPILER_KEY);
66+
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerGccParser.KEY);
6767
context.setSettings(settings);
6868

6969
context.fileSystem().add(new DefaultInputFile("ProjectKey", "src/zipmanager.cpp")
@@ -80,7 +80,7 @@ public void shouldReportACorrectVcViolations() {
8080

8181
Settings settings = new Settings();
8282
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_PATH_KEY), "compiler-reports/BuildLog.htm");
83-
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.COMPILER_KEY);
83+
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.KEY);
8484
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_CHARSET_DEF), "UTF-16");
8585
context.setSettings(settings);
8686

@@ -99,7 +99,7 @@ public void shouldReportBCorrectVcViolations() {
9999

100100
Settings settings = new Settings();
101101
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_PATH_KEY), "compiler-reports/VC-report.vclog");
102-
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.COMPILER_KEY);
102+
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.KEY);
103103
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_CHARSET_DEF), "UTF-8");
104104
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_REGEX_DEF), "^.*>(?<filename>.*)\\((?<line>\\d+)\\):\\x20warning\\x20(?<id>C\\d+):(?<message>.*)$");
105105
context.setSettings(settings);
@@ -118,7 +118,7 @@ public void shouldReportCorrectVcViolations() {
118118

119119
Settings settings = new Settings();
120120
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_PATH_KEY), "compiler-reports/VC-report.vclog");
121-
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.COMPILER_KEY);
121+
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.PARSER_KEY_DEF), CxxCompilerVcParser.KEY);
122122
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_CHARSET_DEF), "UTF-8");
123123
settings.setProperty(language.getPluginProperty(CxxCompilerSensor.REPORT_REGEX_DEF), "^(.*)\\((\\d+)\\):\\x20warning\\x20(C\\d+):(.*)$");
124124
context.setSettings(settings);

sonar-c-plugin/src/main/java/org/sonar/plugins/c/CPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ private static List<PropertyDefinition> compilerWarningsProperties() {
329329
.defaultValue(CxxCompilerSensor.DEFAULT_PARSER_DEF)
330330
.name("Format")
331331
.type(PropertyType.SINGLE_SELECT_LIST)
332-
.options(LANG_PROP_PREFIX + CxxCompilerVcParser.COMPILER_KEY, LANG_PROP_PREFIX + CxxCompilerGccParser.COMPILER_KEY)
332+
.options(LANG_PROP_PREFIX + CxxCompilerVcParser.KEY, LANG_PROP_PREFIX + CxxCompilerGccParser.KEY)
333333
.description("The format of the warnings file. Currently supported are Visual C++ and GCC.")
334334
.subCategory(subcateg)
335335
.onQualifiers(Qualifiers.PROJECT, Qualifiers.MODULE)

sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/CxxPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,8 @@ private static List<PropertyDefinition> compilerWarningsProperties() {
354354
.defaultValue(CxxCompilerSensor.DEFAULT_PARSER_DEF)
355355
.name("Format")
356356
.type(PropertyType.SINGLE_SELECT_LIST)
357-
.options(LANG_PROP_PREFIX + CxxCompilerVcParser.COMPILER_KEY, LANG_PROP_PREFIX
358-
+ CxxCompilerGccParser.COMPILER_KEY)
357+
.options(LANG_PROP_PREFIX + CxxCompilerVcParser.KEY, LANG_PROP_PREFIX
358+
+ CxxCompilerGccParser.KEY)
359359
.description("The format of the warnings file. Currently supported are Visual C++ and GCC.")
360360
.subCategory(subcateg)
361361
.onQualifiers(Qualifiers.PROJECT, Qualifiers.MODULE)

0 commit comments

Comments
 (0)