in reporter/src/com/intellij/rt/coverage/aggregate/Aggregator.java [57:93]
public ProjectData getProjectData(Request request) {
boolean hasRawHitsReport = false;
for (BinaryReport report : myReports) {
hasRawHitsReport |= report.isRawHitsReport();
}
// Note that instructions collection is done only inside this method
// to ensure that instructions count in inline methods
// correspond to method definition, not method call
ProjectData projectData = new ProjectData();
final ProjectContext context = collectCoverageInformationFromOutputs(projectData, request);
final ProjectData projectDataCopy = hasRawHitsReport ? copyProjectData(projectData) : null;
context.dropLineMappings(projectData);
for (BinaryReport report : myReports) {
if (report.isRawHitsReport()) {
try {
RawReportLoader.load(report.getDataFile(), projectDataCopy);
} catch (IOException e) {
throw new RuntimeException(e);
}
} else {
final ProjectData data = ProjectDataLoader.load(report.getDataFile());
context.dropIgnoredLines(data);
mergeHits(projectData, data);
}
}
if (projectDataCopy != null) {
context.finalizeCoverage(projectDataCopy);
mergeHits(projectData, projectDataCopy);
}
if (context.getInherits() != null) {
projectData = filterInheritance(request, context, projectData);
}
return projectData;
}