use of org.jacoco.core.analysis.IClassCoverage in project bazel by bazelbuild.
the class JacocoLCOVFormatter method createVisitor.
public IReportVisitor createVisitor(final File output, final Map<String, BranchCoverageDetail> branchCoverageDetail) {
return new IReportVisitor() {
private Map<String, Map<String, IClassCoverage>> sourceToClassCoverage = new TreeMap<>();
private Map<String, ISourceFileCoverage> sourceToFileCoverage = new TreeMap<>();
@Override
public void visitInfo(List<SessionInfo> sessionInfos, Collection<ExecutionData> executionData) throws IOException {
}
@Override
public void visitEnd() throws IOException {
try (FileWriter fileWriter = new FileWriter(output, true);
PrintWriter printWriter = new PrintWriter(fileWriter)) {
for (String sourceFile : sourceToClassCoverage.keySet()) {
processSourceFile(printWriter, sourceFile);
}
}
}
@Override
public void visitBundle(IBundleCoverage bundle, ISourceFileLocator locator) throws IOException {
// information and process everything at the end.
for (IPackageCoverage pkgCoverage : bundle.getPackages()) {
for (IClassCoverage clsCoverage : pkgCoverage.getClasses()) {
String fileName = clsCoverage.getPackageName() + "/" + clsCoverage.getSourceFileName();
if (!sourceToClassCoverage.containsKey(fileName)) {
sourceToClassCoverage.put(fileName, new TreeMap<String, IClassCoverage>());
}
sourceToClassCoverage.get(fileName).put(clsCoverage.getName(), clsCoverage);
}
for (ISourceFileCoverage srcCoverage : pkgCoverage.getSourceFiles()) {
sourceToFileCoverage.put(srcCoverage.getPackageName() + "/" + srcCoverage.getName(), srcCoverage);
}
}
}
@Override
public IReportGroupVisitor visitGroup(String name) throws IOException {
return null;
}
private void processSourceFile(PrintWriter writer, String sourceFile) {
writer.printf("SF:%s\n", sourceFile);
ISourceFileCoverage srcCoverage = sourceToFileCoverage.get(sourceFile);
if (srcCoverage != null) {
// List methods, including methods from nested classes, in FN/FNDA pairs
for (IClassCoverage clsCoverage : sourceToClassCoverage.get(sourceFile).values()) {
for (IMethodCoverage mthCoverage : clsCoverage.getMethods()) {
String name = constructFunctionName(mthCoverage, clsCoverage.getName());
writer.printf("FN:%d,%s\n", mthCoverage.getFirstLine(), name);
writer.printf("FNDA:%d,%s\n", mthCoverage.getMethodCounter().getCoveredCount(), name);
}
}
for (IClassCoverage clsCoverage : sourceToClassCoverage.get(sourceFile).values()) {
BranchCoverageDetail detail = branchCoverageDetail.get(clsCoverage.getName());
if (detail != null) {
for (int line : detail.linesWithBranches()) {
int numBranches = detail.getBranches(line);
boolean executed = detail.getExecutedBit(line);
if (executed) {
for (int branchIdx = 0; branchIdx < numBranches; branchIdx++) {
if (detail.getTakenBit(line, branchIdx)) {
// executed, taken
writer.printf("BA:%d,%d\n", line, 2);
} else {
// executed, not taken
writer.printf("BA:%d,%d\n", line, 1);
}
}
} else {
for (int branchIdx = 0; branchIdx < numBranches; branchIdx++) {
// not executed
writer.printf("BA:%d,%d\n", line, 0);
}
}
}
}
}
// List of DA entries matching source lines
int firstLine = srcCoverage.getFirstLine();
int lastLine = srcCoverage.getLastLine();
for (int line = firstLine; line <= lastLine; line++) {
ICounter instructionCounter = srcCoverage.getLine(line).getInstructionCounter();
if (instructionCounter.getTotalCount() != 0) {
writer.printf("DA:%d,%d\n", line, instructionCounter.getCoveredCount());
}
}
}
writer.println("end_of_record");
}
private String constructFunctionName(IMethodCoverage mthCoverage, String clsName) {
// lcov_merger doesn't seem to care about these entries.
return clsName + "::" + mthCoverage.getName() + " " + mthCoverage.getDesc();
}
};
}
use of org.jacoco.core.analysis.IClassCoverage in project powermock by powermock.
the class JacocoCoverageTest method assertCodeCoverage.
private void assertCodeCoverage(CoverageBuilder coverageBuilder) {
for (IClassCoverage classCoverage : coverageBuilder.getClasses()) {
for (IMethodCoverage methodCoverage : classCoverage.getMethods()) {
if (methodCoverage.getName().equals("calculateSomething")) {
assertThat(methodCoverage.getLineCounter().getCoveredRatio()).isEqualTo(1.0);
assertThat(methodCoverage.getLineCounter().getCoveredCount()).isEqualTo(4);
}
}
}
}
use of org.jacoco.core.analysis.IClassCoverage in project jacoco by jacoco.
the class Report method printNoMatchWarning.
private void printNoMatchWarning(final Collection<IClassCoverage> nomatch, final PrintWriter out) {
if (!nomatch.isEmpty()) {
out.println("[WARN] Some classes do not match with execution data.");
out.println("[WARN] For report generation the same class files must be used as at runtime.");
for (final IClassCoverage c : nomatch) {
out.printf("[WARN] Execution data for class %s does not match.%n", c.getName());
}
}
}
use of org.jacoco.core.analysis.IClassCoverage in project jacoco by jacoco.
the class ClassPageTest method testGetFileNameDefault.
@Test
public void testGetFileNameDefault() throws IOException {
IClassCoverage defaultNode = new ClassCoverageImpl("Foo", 123, false);
page = new ClassPage(defaultNode, null, null, rootFolder, context);
assertEquals("Foo.html", page.getFileName());
}
use of org.jacoco.core.analysis.IClassCoverage in project jacoco by jacoco.
the class PackagePageTest method testContentsWithSource.
@Test
public void testContentsWithSource() throws Exception {
IClassCoverage class1 = new ClassCoverageImpl("org/jacoco/example/Foo1", 0x1000, false);
IClassCoverage class2 = new ClassCoverageImpl("org/jacoco/example/Foo2", 0x2000, false);
ISourceFileCoverage src1 = new SourceFileCoverageImpl("Src1.java", "org/jacoco/example");
node = new PackageCoverageImpl("org/jacoco/example", Arrays.asList(class1, class2), Arrays.asList(src1));
page = new PackagePage(node, null, sourceLocator, rootFolder, context);
page.render();
final Document doc = support.parse(output.getFile("index.html"));
// Expect "Source Files" links
assertEquals("index.source.html", support.findStr(doc, "/html/body/div[1]/span[1]/a/@href"));
assertEquals("el_source", support.findStr(doc, "/html/body/div[1]/span[1]/a/@class"));
assertEquals("Source Files", support.findStr(doc, "/html/body/div[1]/span[1]/a"));
assertEquals("el_class", support.findStr(doc, "/html/body/table[1]/tbody/tr[1]/td[1]/a/@class"));
assertEquals("Foo1", support.findStr(doc, "/html/body/table[1]/tbody/tr[1]/td[1]/a"));
assertEquals("el_class", support.findStr(doc, "/html/body/table[1]/tbody/tr[2]/td[1]/a/@class"));
assertEquals("Foo2", support.findStr(doc, "/html/body/table[1]/tbody/tr[2]/td[1]/a"));
output.assertFile("index.source.html");
}
Aggregations