Skip to content

Commit 7c3c4f1

Browse files
committed
Ugly hack to populate IT and Overall coverage
1 parent 316e64b commit 7c3c4f1

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/main/java/org/sonar/plugins/objectivec/cobertura/CoberturaReportParser.java

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import org.codehaus.staxmate.in.SMInputCursor;
2727
import org.sonar.api.batch.SensorContext;
2828
import org.sonar.api.batch.fs.FileSystem;
29+
import org.sonar.api.measures.CoreMetrics;
2930
import org.sonar.api.measures.CoverageMeasuresBuilder;
3031
import org.sonar.api.measures.Measure;
3132
import org.sonar.api.resources.Project;
3233
import org.sonar.api.resources.Resource;
34+
import org.sonar.api.utils.KeyValueFormat;
3335
import org.sonar.api.utils.ParsingUtils;
3436
import org.sonar.api.utils.StaxParser;
3537
import org.sonar.api.utils.XmlParserException;
@@ -39,6 +41,7 @@
3941
import java.text.ParseException;
4042
import java.util.Locale;
4143
import java.util.Map;
44+
import java.util.SortedMap;
4245

4346
final class CoberturaReportParser {
4447
private final FileSystem fileSystem;
@@ -82,8 +85,11 @@ private void collectPackageMeasures(SMInputCursor pack) throws XMLStreamExceptio
8285
String filePath = entry.getKey();
8386
Resource resource = org.sonar.api.resources.File.fromIOFile(new File(fileSystem.baseDir(), filePath), project);
8487
if (resourceExists(resource)) {
85-
for (Measure measure : entry.getValue().createMeasures()) {
88+
CoverageMeasuresBuilder builder = entry.getValue();
89+
for (Measure measure : builder.createMeasures()) {
8690
context.saveMeasure(resource, measure);
91+
context.saveMeasure(resource, zeroForIt(builder, measure));
92+
context.saveMeasure(resource, convertForOverall(measure));
8793
}
8894
}
8995
}
@@ -126,4 +132,48 @@ private static void collectFileData(SMInputCursor clazz,
126132
}
127133
}
128134
}
135+
136+
private static Measure zeroForIt(CoverageMeasuresBuilder builder, Measure measure) {
137+
Measure itMeasure = null;
138+
if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) {
139+
itMeasure = new Measure(CoreMetrics.IT_LINES_TO_COVER, measure.getValue());
140+
} else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) {
141+
itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_LINES, (double) builder.getLinesToCover());
142+
} else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) {
143+
SortedMap<Integer, Integer> map = Maps.newTreeMap();
144+
for (Integer line : builder.getHitsByLine().keySet()) {
145+
map.put(line, 0);
146+
}
147+
itMeasure = new Measure(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, KeyValueFormat.format(map));
148+
} else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) {
149+
itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, measure.getValue()); // should be 0
150+
} else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) {
151+
itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, measure.getValue()); // should be 0
152+
} else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) {
153+
itMeasure = new Measure(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE, measure.getData()); // should be 0
154+
} else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) {
155+
itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_BY_LINE, measure.getData()); // should be 0
156+
}
157+
return itMeasure;
158+
}
159+
160+
private static Measure convertForOverall(Measure measure) {
161+
Measure overallMeasure = null;
162+
if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) {
163+
overallMeasure = new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, measure.getValue());
164+
} else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) {
165+
overallMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, measure.getValue());
166+
} else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) {
167+
overallMeasure = new Measure(CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, measure.getData());
168+
} else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) {
169+
overallMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, measure.getValue());
170+
} else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) {
171+
overallMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, measure.getValue());
172+
} else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) {
173+
overallMeasure = new Measure(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE, measure.getData());
174+
} else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) {
175+
overallMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_BY_LINE, measure.getData());
176+
}
177+
return overallMeasure;
178+
}
129179
}

src/main/java/org/sonar/plugins/objectivec/cobertura/CoberturaSensor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.sonar.api.batch.SensorContext;
2929
import org.sonar.api.batch.fs.FileSystem;
3030
import org.sonar.api.config.Settings;
31+
import org.sonar.api.measures.MeasuresFilter;
3132
import org.sonar.api.resources.Project;
3233
import org.sonar.api.scan.filesystem.PathResolver;
3334

0 commit comments

Comments
 (0)