Skip to content

Commit b12a1f9

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

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

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

+46-1
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;
@@ -82,8 +84,11 @@ private void collectPackageMeasures(SMInputCursor pack) throws XMLStreamExceptio
8284
String filePath = entry.getKey();
8385
Resource resource = org.sonar.api.resources.File.fromIOFile(new File(fileSystem.baseDir(), filePath), project);
8486
if (resourceExists(resource)) {
85-
for (Measure measure : entry.getValue().createMeasures()) {
87+
CoverageMeasuresBuilder builder = entry.getValue();
88+
for (Measure measure : builder.createMeasures()) {
8689
context.saveMeasure(resource, measure);
90+
context.saveMeasure(resource, zeroForIt(builder, measure));
91+
context.saveMeasure(resource, convertForOverall(measure));
8792
}
8893
}
8994
}
@@ -126,4 +131,44 @@ private static void collectFileData(SMInputCursor clazz,
126131
}
127132
}
128133
}
134+
135+
private static Measure zeroForIt(CoverageMeasuresBuilder builder, Measure measure) {
136+
Measure itMeasure = null;
137+
if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) {
138+
itMeasure = new Measure(CoreMetrics.IT_LINES_TO_COVER, measure.getValue());
139+
} else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) {
140+
itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_LINES, (double) builder.getLinesToCover());
141+
} else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) {
142+
itMeasure = new Measure(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, KeyValueFormat.format(Maps.newTreeMap()));
143+
} else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) {
144+
itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, measure.getValue());
145+
} else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) {
146+
itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, (double) builder.getConditions());
147+
} else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) {
148+
itMeasure = new Measure(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE, KeyValueFormat.format(Maps.newTreeMap()));
149+
} else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) {
150+
itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_BY_LINE, KeyValueFormat.format(Maps.newTreeMap()));
151+
}
152+
return itMeasure;
153+
}
154+
155+
private static Measure convertForOverall(Measure measure) {
156+
Measure overallMeasure = null;
157+
if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) {
158+
overallMeasure = new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, measure.getValue());
159+
} else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) {
160+
overallMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, measure.getValue());
161+
} else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) {
162+
overallMeasure = new Measure(CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, measure.getData());
163+
} else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) {
164+
overallMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, measure.getValue());
165+
} else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) {
166+
overallMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, measure.getValue());
167+
} else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) {
168+
overallMeasure = new Measure(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE, measure.getData());
169+
} else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) {
170+
overallMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_BY_LINE, measure.getData());
171+
}
172+
return overallMeasure;
173+
}
129174
}

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

+1
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)