Search in sources :

Example 6 with ISourceFileCoverage

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

the class BundleChecker method check.

private void check(final IPackageCoverage packageCoverage) {
    final String name = names.getPackageName(packageCoverage.getName());
    checkRules(packageCoverage, packageRules, "package", name);
    if (traverseClasses) {
        for (final IClassCoverage c : packageCoverage.getClasses()) {
            check(c);
        }
    }
    if (traverseSourceFiles) {
        for (final ISourceFileCoverage s : packageCoverage.getSourceFiles()) {
            check(s);
        }
    }
}
Also used : IClassCoverage(org.jacoco.core.analysis.IClassCoverage) ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage)

Example 7 with ISourceFileCoverage

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

the class PackageSourcePage method renderSourceFilePages.

private final void renderSourceFilePages() throws IOException {
    final String packagename = getNode().getName();
    for (final ISourceFileCoverage s : getNode().getSourceFiles()) {
        final String sourcename = s.getName();
        final Reader reader = locator.getSourceFile(packagename, sourcename);
        if (reader == null) {
            addItem(new SourceFileItem(s));
        } else {
            final SourceFilePage sourcePage = new SourceFilePage(s, reader, locator.getTabWidth(), this, folder, context);
            sourcePage.render();
            sourceFilePages.put(sourcename, sourcePage);
            addItem(sourcePage);
        }
    }
}
Also used : ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage) Reader(java.io.Reader)

Example 8 with ISourceFileCoverage

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

the class ValidationTestBase method analyze.

private void analyze(final ExecutionDataStore store) throws IOException {
    final CoverageBuilder builder = new CoverageBuilder();
    final Analyzer analyzer = new Analyzer(store, builder);
    for (ExecutionData data : store.getContents()) {
        analyze(analyzer, data);
    }
    String srcName = target.getName().replace('.', '/') + ".java";
    for (ISourceFileCoverage file : builder.getSourceFiles()) {
        if (srcName.equals(file.getPackageName() + "/" + file.getName())) {
            sourceCoverage = file;
            return;
        }
    }
    fail("No source node found for " + srcName);
}
Also used : ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage) CoverageBuilder(org.jacoco.core.analysis.CoverageBuilder) Analyzer(org.jacoco.core.analysis.Analyzer) ExecutionData(org.jacoco.core.data.ExecutionData)

Example 9 with ISourceFileCoverage

use of org.jacoco.core.analysis.ISourceFileCoverage in project sonar-java by SonarSource.

the class UnitTestAnalyzer method readExecutionData.

private void readExecutionData(@Nullable File jacocoExecutionData, SensorContext context) {
    File newJacocoExecutionData = jacocoExecutionData;
    if (newJacocoExecutionData == null || !newJacocoExecutionData.isFile()) {
        JaCoCoExtensions.LOG.info("Project coverage is set to 0% as no JaCoCo execution data has been dumped: {}", newJacocoExecutionData);
        newJacocoExecutionData = null;
    }
    ExecutionDataVisitor executionDataVisitor = new ExecutionDataVisitor();
    jacocoReportReader = new JacocoReportReader(newJacocoExecutionData).readJacocoReport(executionDataVisitor, executionDataVisitor);
    boolean collectedCoveragePerTest = readCoveragePerTests(executionDataVisitor);
    CoverageBuilder coverageBuilder = jacocoReportReader.analyzeFiles(executionDataVisitor.getMerged(), classFilesCache.values());
    int analyzedResources = 0;
    for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) {
        InputFile inputFile = getResource(coverage);
        if (inputFile != null) {
            NewCoverage newCoverage = context.newCoverage().onFile(inputFile);
            analyzeFile(newCoverage, inputFile, coverage);
            newCoverage.save();
            analyzedResources++;
        }
    }
    if (analyzedResources == 0) {
        JaCoCoExtensions.LOG.warn("Coverage information was not collected. Perhaps you forget to include debug information into compiled classes?");
    } else if (collectedCoveragePerTest) {
        JaCoCoExtensions.LOG.info("Information about coverage per test has been collected.");
    } else if (newJacocoExecutionData != null) {
        JaCoCoExtensions.LOG.info("No information about coverage per test.");
    }
}
Also used : NewCoverage(org.sonar.api.batch.sensor.coverage.NewCoverage) ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage) CoverageBuilder(org.jacoco.core.analysis.CoverageBuilder) InputFile(org.sonar.api.batch.fs.InputFile) File(java.io.File) InputFile(org.sonar.api.batch.fs.InputFile)

Example 10 with ISourceFileCoverage

use of org.jacoco.core.analysis.ISourceFileCoverage in project sonar-java by SonarSource.

the class UnitTestAnalyzer method analyzeLinesCoveredByTests.

private boolean analyzeLinesCoveredByTests(String sessionId, ExecutionDataStore executionDataStore) {
    int i = sessionId.indexOf(' ');
    if (i < 0) {
        return false;
    }
    String testClassName = sessionId.substring(0, i);
    String testName = sessionId.substring(i + 1);
    InputFile testResource = javaResourceLocator.findResourceByClassName(testClassName);
    if (testResource == null) {
        // No such test class
        return false;
    }
    boolean result = false;
    CoverageBuilder coverageBuilder = jacocoReportReader.analyzeFiles(executionDataStore, classFilesOfStore(executionDataStore));
    for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) {
        InputFile resource = getResource(coverage);
        if (resource != null) {
            List<Integer> coveredLines = coveredLines(coverage);
            if (!coveredLines.isEmpty() && addCoverage(resource, testResource, testName, coveredLines)) {
                result = true;
            }
        }
    }
    return result;
}
Also used : ISourceFileCoverage(org.jacoco.core.analysis.ISourceFileCoverage) CoverageBuilder(org.jacoco.core.analysis.CoverageBuilder) InputFile(org.sonar.api.batch.fs.InputFile)

Aggregations

ISourceFileCoverage (org.jacoco.core.analysis.ISourceFileCoverage)15 IClassCoverage (org.jacoco.core.analysis.IClassCoverage)11 IPackageCoverage (org.jacoco.core.analysis.IPackageCoverage)5 Test (org.junit.Test)5 PackageCoverageImpl (org.jacoco.core.internal.analysis.PackageCoverageImpl)4 CoverageBuilder (org.jacoco.core.analysis.CoverageBuilder)3 ClassCoverageImpl (org.jacoco.core.internal.analysis.ClassCoverageImpl)3 SourceFileCoverageImpl (org.jacoco.core.internal.analysis.SourceFileCoverageImpl)3 Reader (java.io.Reader)2 Collection (java.util.Collection)2 ISourceFileLocator (org.jacoco.report.ISourceFileLocator)2 InputFile (org.sonar.api.batch.fs.InputFile)2 Document (org.w3c.dom.Document)2 File (java.io.File)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 PrintWriter (java.io.PrintWriter)1 StringReader (java.io.StringReader)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1