Search in sources :

Example 1 with IMethodCoverage

use of org.jacoco.core.analysis.IMethodCoverage in project jacoco by jacoco.

the class BundleChecker method check.

private void check(final IClassCoverage classCoverage) {
    final String name = names.getQualifiedClassName(classCoverage.getName());
    checkRules(classCoverage, classRules, "class", name);
    if (traverseMethods) {
        for (final IMethodCoverage m : classCoverage.getMethods()) {
            check(m, classCoverage.getName());
        }
    }
}
Also used : IMethodCoverage(org.jacoco.core.analysis.IMethodCoverage)

Example 2 with IMethodCoverage

use of org.jacoco.core.analysis.IMethodCoverage in project jacoco by jacoco.

the class ClassPage method render.

@Override
public void render() throws IOException {
    for (final IMethodCoverage m : getNode().getMethods()) {
        final String label = context.getLanguageNames().getMethodName(getNode().getName(), m.getName(), m.getDesc(), m.getSignature());
        addItem(new MethodItem(m, label, sourcePage));
    }
    super.render();
}
Also used : IMethodCoverage(org.jacoco.core.analysis.IMethodCoverage)

Example 3 with IMethodCoverage

use of org.jacoco.core.analysis.IMethodCoverage in project jacoco by jacoco.

the class XMLCoverageWriter method writeClass.

private static void writeClass(final IClassCoverage c, final XMLElement parent) throws IOException {
    final XMLElement element = createChild(parent, "class", c.getName());
    for (final IMethodCoverage m : c.getMethods()) {
        writeMethod(m, element);
    }
    writeCounters(c, element);
}
Also used : IMethodCoverage(org.jacoco.core.analysis.IMethodCoverage)

Example 4 with IMethodCoverage

use of org.jacoco.core.analysis.IMethodCoverage 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();
        }
    };
}
Also used : IMethodCoverage(org.jacoco.core.analysis.IMethodCoverage) FileWriter(java.io.FileWriter) ISourceFileLocator(org.jacoco.report.ISourceFileLocator) IReportVisitor(org.jacoco.report.IReportVisitor) IPackageCoverage(org.jacoco.core.analysis.IPackageCoverage) IClassCoverage(org.jacoco.core.analysis.IClassCoverage) ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage) ICounter(org.jacoco.core.analysis.ICounter) Collection(java.util.Collection) IBundleCoverage(org.jacoco.core.analysis.IBundleCoverage) List(java.util.List) TreeMap(java.util.TreeMap) Map(java.util.Map) PrintWriter(java.io.PrintWriter)

Example 5 with IMethodCoverage

use of org.jacoco.core.analysis.IMethodCoverage in project jacoco by jacoco.

the class ClassAnalyzer method visitMethod.

@Override
public MethodProbesVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) {
    InstrSupport.assertNotInstrumented(name, coverage.getName());
    return new MethodAnalyzer(coverage.getName(), coverage.getSuperName(), stringPool.get(name), stringPool.get(desc), stringPool.get(signature), probes, Filters.ALL) {

        @Override
        public void visitEnd() {
            super.visitEnd();
            final IMethodCoverage methodCoverage = getCoverage();
            if (methodCoverage.getInstructionCounter().getTotalCount() > 0) {
                // Only consider methods that actually contain code
                coverage.addMethod(methodCoverage);
            }
        }
    };
}
Also used : IMethodCoverage(org.jacoco.core.analysis.IMethodCoverage)

Aggregations

IMethodCoverage (org.jacoco.core.analysis.IMethodCoverage)7 IClassCoverage (org.jacoco.core.analysis.IClassCoverage)3 FileWriter (java.io.FileWriter)1 PrintWriter (java.io.PrintWriter)1 Collection (java.util.Collection)1 List (java.util.List)1 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 Analyzer (org.jacoco.core.analysis.Analyzer)1 CoverageBuilder (org.jacoco.core.analysis.CoverageBuilder)1 IBundleCoverage (org.jacoco.core.analysis.IBundleCoverage)1 ICounter (org.jacoco.core.analysis.ICounter)1 IPackageCoverage (org.jacoco.core.analysis.IPackageCoverage)1 ISourceFileCoverage (org.jacoco.core.analysis.ISourceFileCoverage)1 ExecutionDataStore (org.jacoco.core.data.ExecutionDataStore)1 SessionInfoStore (org.jacoco.core.data.SessionInfoStore)1 IReportVisitor (org.jacoco.report.IReportVisitor)1 ISourceFileLocator (org.jacoco.report.ISourceFileLocator)1