Skip to content

Commit ef64f3d

Browse files
authored
Merge pull request #1289 from guwirth/zeroMeasuresWithoutReports
fix zeroMeasuresWithoutReports SQ < 6.2
2 parents bd98534 + 87b596d commit ef64f3d

File tree

7 files changed

+32
-45
lines changed

7 files changed

+32
-45
lines changed

cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/CxxCoverageSensor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,29 +185,37 @@ private void zeroMeasuresWithoutReports(
185185
Iterable<InputFile> inputFiles = fileSystem.inputFiles(p.and(p.hasType(InputFile.Type.MAIN),
186186
p.hasLanguage(this.language.getKey())));
187187

188+
int filesCnt = 0, unitCnt = 0, itCnt = 0, overallCnt = 0;
188189
for (InputFile inputFile : inputFiles) {
189190
Set<Integer> linesOfCodeForFile = linesOfCode.get(inputFile);
190191
String file = CxxUtils.normalizePath(inputFile.absolutePath());
191192

192193
if (coverageMeasures != null && !coverageMeasures.containsKey(file)) {
193194
saveZeroValueForResource(inputFile, context, CoverageType.UNIT, linesOfCodeForFile);
195+
unitCnt++;
194196
}
195197

196198
if (itCoverageMeasures != null && !itCoverageMeasures.containsKey(file)) {
197199
saveZeroValueForResource(inputFile, context, CoverageType.IT, linesOfCodeForFile);
200+
itCnt++;
198201
}
199202

200203
if (overallCoverageMeasures != null && !overallCoverageMeasures.containsKey(file)) {
201204
saveZeroValueForResource(inputFile, context, CoverageType.OVERALL, linesOfCodeForFile);
205+
overallCnt++;
202206
}
207+
filesCnt++;
208+
}
209+
if (LOG.isDebugEnabled()) {
210+
LOG.debug("zeroMeasuresWithoutReports: total={} / unit={} / it={} / overall={}", filesCnt, unitCnt, itCnt, overallCnt);
203211
}
204212
}
205213

206214
private void saveZeroValueForResource(InputFile inputFile, SensorContext context, CoverageType ctype,
207215
@Nullable Set<Integer> linesOfCode) {
208216
if (linesOfCode != null) {
209217
if (LOG.isDebugEnabled()) {
210-
LOG.debug("Zeroing {} coverage measures for file '{}'", ctype, inputFile.relativePath());
218+
LOG.debug("Zeroing {} coverage measures for file '{}': linesOfCode='{}'", ctype, inputFile.relativePath(), linesOfCode.size());
211219
}
212220
NewCoverage newCoverage = context.newCoverage()
213221
.onFile(inputFile)

cxx-sensors/src/main/java/org/sonar/cxx/sensors/visitors/CxxFileLinesVisitor.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ public class CxxFileLinesVisitor extends SquidAstVisitor<Grammar> implements Ast
5656
private final FileLinesContextFactory fileLinesContextFactory;
5757
private static final Version SQ_6_2 = Version.create(6, 2);
5858
private static boolean isSQ62orNewer;
59-
private static Set<Integer> linesOfCode = Sets.newHashSet();
60-
private static Set<Integer> linesOfComments = Sets.newHashSet();
61-
private static Set<Integer> executableLines = Sets.newHashSet();
59+
private static final Set<Integer> linesOfCode = Sets.newHashSet();
60+
private static final Set<Integer> linesOfComments = Sets.newHashSet();
61+
private static final Set<Integer> executableLines = Sets.newHashSet();
6262
private final FileSystem fileSystem;
6363
private final Map<InputFile, Set<Integer>> allLinesOfCode;
6464
private static int isWithinFunctionDefinition;
6565
private static final Set<String> ignoreToken = Sets.newHashSet(";", "{", "}", "(", ")", "[", "]");
66-
private static AstNodeType[] nodesToVisit = {
66+
private static final AstNodeType[] nodesToVisit = {
6767
CxxGrammarImpl.labeledStatement,
6868
CxxGrammarImpl.expressionStatement,
6969
CxxGrammarImpl.iterationStatement,
@@ -203,12 +203,14 @@ public void leaveFile(AstNode astNode) {
203203
}
204204

205205
fileLinesContext.save();
206-
this.allLinesOfCode.put(inputFile, linesOfCode);
207-
206+
this.allLinesOfCode.put(inputFile, Sets.newHashSet(linesOfCode));
207+
208208
if (LOG.isDebugEnabled()) {
209-
LOG.debug("executableLines: '{}'", executableLines);
210-
LOG.debug("linesOfCode: '{}'", linesOfCode);
211-
LOG.debug("linesOfComments: '{}'", linesOfComments);
209+
LOG.debug("CxxFileLinesVisitor: '{}'", inputFile.absolutePath());
210+
LOG.debug(" lines: '{}'", inputFile.lines());
211+
LOG.debug(" executableLines: '{}'", executableLines);
212+
LOG.debug(" linesOfCode: '{}'", linesOfCode);
213+
LOG.debug(" linesOfComments: '{}'", linesOfComments);
212214
}
213215
}
214216

cxx-sensors/src/test/java/org/sonar/cxx/sensors/visitors/CxxFileLinesVisitorTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,12 @@ public void TestLinesOfCode() throws UnsupportedEncodingException, IOException {
7070

7171
assertThat(visitor.getLinesOfComments()).hasSize(11);
7272
assertThat(visitor.getLinesOfComments()).containsOnly(48, 1, 33, 97, 35, 117, 102, 7, 119, 106, 13);
73-
73+
74+
Set<Integer> lines = linesOfCode.get(inputFile);
75+
assertThat(lines).isNotNull();
76+
assertThat(lines).containsOnly(8, 10, 14, 16, 17, 21, 22, 23, 26, 31, 34, 35, 42, 44, 45, 51, 53, 55, 56, 58,
77+
59, 63, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 84, 86, 87, 89, 90,
78+
95, 98, 99, 100, 102, 115, 118, 119);
7479
}
7580

7681
@Test

cxx-squid/src/main/java/org/sonar/cxx/CxxLanguage.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.sonar.api.measures.Metric;
2727
import org.sonar.api.resources.AbstractLanguage;
2828
import org.sonar.api.config.Settings;
29-
import org.sonar.api.internal.apachecommons.lang.builder.HashCodeBuilder;
3029

3130
/**
3231
* {@inheritDoc}
@@ -48,14 +47,6 @@ public CxxLanguage(String key, String name, Settings settings) {
4847
this.MetricsCache = new HashMap<>();
4948
}
5049

51-
@Override
52-
public int hashCode() {
53-
return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
54-
appendSuper(super.hashCode()).
55-
append(getKey()).
56-
toHashCode();
57-
}
58-
5950
@Override
6051
public boolean equals(Object obj) {
6152
if (obj == this) {

integration-tests/features/importing_coverage.feature

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,14 @@ Feature: Importing coverage data
7373
"""
7474
And the following metrics have following values:
7575
| metric | value |
76-
| coverage | 11.1 |
77-
| line_coverage | 7.3 |
76+
| coverage | 9.8 |
77+
| line_coverage | 6.4 |
7878
| branch_coverage | 50 |
79-
| it_coverage | 25.0 |
80-
| it_line_coverage | 19.0 |
79+
| it_coverage | 22.4 |
80+
| it_line_coverage | 16.7 |
8181
| it_branch_coverage | 50 |
82-
| overall_coverage | 26.1 |
83-
| overall_line_coverage | 20.0 |
82+
| overall_coverage | 30.0 |
83+
| overall_line_coverage | 23.9 |
8484
| overall_branch_coverage | 50 |
8585

8686
@SqApi56

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.util.Arrays;
2424
import java.util.List;
2525
import org.sonar.api.config.Settings;
26-
import org.sonar.api.internal.apachecommons.lang.builder.HashCodeBuilder;
2726
import org.sonar.cxx.CxxLanguage;
2827
import org.sonar.cxx.checks.BooleanEqualityComparisonCheck;
2928
import org.sonar.cxx.checks.ClassComplexityCheck;
@@ -96,14 +95,6 @@ public CLanguage(Settings settings) {
9695
headerSuffixes = createStringArray(settings.getStringArray(CPlugin.HEADER_FILE_SUFFIXES_KEY), DEFAULT_HEADER_SUFFIXES);
9796
fileSuffixes = mergeArrays(sourceSuffixes, headerSuffixes);
9897
}
99-
100-
@Override
101-
public int hashCode() {
102-
return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
103-
appendSuper(super.hashCode()).
104-
append(getKey()).
105-
toHashCode();
106-
}
10798

10899
@Override
109100
public boolean equals(Object obj) {

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.util.Arrays;
2424
import java.util.List;
2525
import org.sonar.api.config.Settings;
26-
import org.sonar.api.internal.apachecommons.lang.builder.HashCodeBuilder;
2726
import org.sonar.cxx.CxxLanguage;
2827
import org.sonar.cxx.checks.BooleanEqualityComparisonCheck;
2928
import org.sonar.cxx.checks.ClassComplexityCheck;
@@ -100,15 +99,6 @@ public CppLanguage(Settings settings) {
10099
DEFAULT_HEADER_SUFFIXES);
101100
fileSuffixes = mergeArrays(sourceSuffixes, headerSuffixes);
102101
}
103-
104-
@Override
105-
public int hashCode() {
106-
// two randomly chosen prime numbers
107-
return new HashCodeBuilder(17, 31).
108-
appendSuper(super.hashCode()).
109-
append(getKey()).
110-
toHashCode();
111-
}
112102

113103
@Override
114104
public boolean equals(Object obj) {

0 commit comments

Comments
 (0)