private static Collection<IPackageCoverage> groupByPackage( final Collection<IClassCoverage> classes, final Collection<ISourceFileCoverage> sourcefiles) { final Map<String, Collection<IClassCoverage>> classesByPackage = new HashMap<String, Collection<IClassCoverage>>(); for (final IClassCoverage c : classes) { addByName(classesByPackage, c.getPackageName(), c); } final Map<String, Collection<ISourceFileCoverage>> sourceFilesByPackage = new HashMap<String, Collection<ISourceFileCoverage>>(); for (final ISourceFileCoverage s : sourcefiles) { addByName(sourceFilesByPackage, s.getPackageName(), s); } final Set<String> packageNames = new HashSet<String>(); packageNames.addAll(classesByPackage.keySet()); packageNames.addAll(sourceFilesByPackage.keySet()); final Collection<IPackageCoverage> result = new ArrayList<IPackageCoverage>(); for (final String name : packageNames) { Collection<IClassCoverage> c = classesByPackage.get(name); if (c == null) { c = Collections.emptyList(); } Collection<ISourceFileCoverage> s = sourceFilesByPackage.get(name); if (s == null) { s = Collections.emptyList(); } result.add(new PackageCoverageImpl(name, c, s)); } return result; }
public void visit(IClassFile classfile) throws JavaModelException { final String vmname = classfile.getType().getFullyQualifiedName() .replace('.', '/'); final IClassCoverage coverage = nodes.getClassCoverage(vmname); if (coverage != null) { modelcoverage.putClassFile(classfile, coverage); // Add source file coverage manually in case of binary roots // as we will not see compilation units: final ISourceFileCoverage source = nodes.getSourceFileCoverage( coverage.getPackageName(), coverage.getSourceFileName()); if (source != null) { sources.add(source); } } }
public void visitCoverage(final IClassCoverage coverage) { final String name = coverage.getName(); final IClassCoverage dup = classes.put(name, coverage); if (dup != null) { if (dup.getId() != coverage.getId()) { throw new IllegalStateException( "Can't add different class with same name: " + name); } } else { final String source = coverage.getSourceFileName(); if (source != null) { final SourceFileCoverageImpl sourceFile = getSourceFile(source, coverage.getPackageName()); sourceFile.increment(coverage); } } }
@Override protected void content(HTMLElement body) throws IOException { if (getNode().isNoMatch()) { body.p().text( "A different version of class was executed at runtime."); } if (getNode().getLineCounter().getTotalCount() == 0) { body.p().text( "Class files must be compiled with debug information to show line coverage."); } final String sourceFileName = getNode().getSourceFileName(); if (sourceFileName == null) { body.p().text( "Class files must be compiled with debug information to link with source files."); } else if (sourcePage == null) { final String sourcePath; if (getNode().getPackageName().length() != 0) { sourcePath = getNode().getPackageName() + "/" + sourceFileName; } else { sourcePath = sourceFileName; } body.p().text("Source file \"" + sourcePath + "\" was not found during generation of report."); } super.content(body); }