ClassId变更后,可以通过className去获区覆盖率数据。项目中类名如有重复,有一定的风险!
主要是修改org.jacoco.core.analysis下的Analyzer类中的createAnalyzingVisitor方法
private ClassVisitor createAnalyzingVisitor(final long classid,
final String className) {
ExecutionData data = null;
for (ExecutionData data1 : executionData.getContents()) {
if (className.equalsIgnoreCase(data.getName())) {
data = data1;
}
}
final boolean[] probes;
final boolean noMatch;
if (data == null) {
probes = null;
noMatch = executionData.contains(className);
} else {
probes = data.getProbes();
noMatch = false;
}
final ClassCoverageImpl coverage = new ClassCoverageImpl(className,
classid, noMatch);
final ClassAnalyzer analyzer = new ClassAnalyzer(coverage, probes,
stringPool) {
@Override
public void visitEnd() {
super.visitEnd();
coverageVisitor.visitCoverage(coverage);
}
};
return new ClassProbesAdapter(analyzer, false);
}