private boolean analyzeLinesCoveredByTests(String sessionId, ExecutionDataStore executionDataStore, SensorContext context, WildcardMatcher excludes) { int i = sessionId.indexOf(' '); if (i < 0) { return false; } String testClassName = sessionId.substring(0, i); String testName = sessionId.substring(i + 1); Resource testResource = context.getResource(javaResourceLocator.findResourceByClassName(testClassName)); if (testResource == null) { // No such test class return false; } boolean result = false; CoverageBuilder coverageBuilder = analyze2(executionDataStore); for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) { Resource resource = getResource(coverage, context); if (resource != null && !isExcluded(coverage, excludes)) { CoverageMeasuresBuilder builder = analyzeFile(resource, coverage); List<Integer> coveredLines = getCoveredLines(builder); if (!coveredLines.isEmpty() && addCoverage(resource, testResource, testName, coveredLines)) { result = true; } } } return result; }
private boolean readCoveragePerTests(SensorContext context, ExecutionDataVisitor executionDataVisitor) { boolean collectedCoveragePerTest = false; if(readCoveragePerTests) { for (Map.Entry<String, ExecutionDataStore> entry : executionDataVisitor.getSessions().entrySet()) { if (analyzeLinesCoveredByTests(entry.getKey(), entry.getValue(), context)) { collectedCoveragePerTest = true; } } } return collectedCoveragePerTest; }
public final void analyse(Project project, SensorContext context) { if (!atLeastOneBinaryDirectoryExists()) { JaCoCoUtils.LOG.info("No JaCoCo analysis of project coverage can be done since there is no directories with classes."); return; } String path = getReportPath(project); File jacocoExecutionData = pathResolver.relativeFile(fileSystem.baseDir(), path); WildcardMatcher excludes = new WildcardMatcher(Strings.nullToEmpty(getExcludes(project))); try { readExecutionData(jacocoExecutionData, context, excludes); } catch (IOException e) { throw new SonarException(e); } }
public final void analyse(Project project, SensorContext context) { classFilesCache = Maps.newHashMap(); for (File classesDir : javaClasspath.getBinaryDirs()) { populateClassFilesCache(classesDir, ""); } if (classFilesCache.isEmpty()) { JaCoCoExtensions.LOG.info("No JaCoCo analysis of project coverage can be done since there is no class files."); return; } String path = getReportPath(project); File jacocoExecutionData = pathResolver.relativeFile(fileSystem.baseDir(), path); try { readExecutionData(jacocoExecutionData, context); } catch (IOException e) { throw new SonarException(e); } classFilesCache = null; }
if (analyzeLinesCoveredByTests(entry.getKey(), entry.getValue(), context, excludes)) { collectedCoveragePerTest = true; CoverageBuilder coverageBuilder = analyze(executionDataVisitor.getMerged()); int analyzedResources = 0; for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) { Resource resource = getResource(coverage, context); if (resource != null) { if (!isExcluded(coverage, excludes)) { CoverageMeasuresBuilder builder = analyzeFile(resource, coverage); saveMeasures(context, resource, builder.createMeasures());
boolean collectedCoveragePerTest = readCoveragePerTests(context, executionDataVisitor); CoverageBuilder coverageBuilder = analyze(executionDataVisitor.getMerged()); int analyzedResources = 0; for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) { Resource resource = getResource(coverage, context); if (resource != null) { CoverageMeasuresBuilder builder = analyzeFile(resource, coverage); saveMeasures(context, resource, builder.createMeasures()); analyzedResources++;
private Resource getResource(ISourceFileCoverage coverage, SensorContext context) { String className = fullyQualifiedClassName(coverage.getPackageName(), coverage.getName()); Resource resourceInContext = context.getResource(javaResourceLocator.findResourceByClassName(className)); if (resourceInContext == null) { // Do not save measures on resource which doesn't exist in the context return null; } if (ResourceUtils.isUnitTestClass(resourceInContext)) { // Ignore unit tests return null; } return resourceInContext; }
private Resource getResource(ISourceFileCoverage coverage, SensorContext context) { String className = fullyQualifiedClassName(coverage.getPackageName(), coverage.getName()); Resource resourceInContext = context.getResource(javaResourceLocator.findResourceByClassName(className)); if (resourceInContext == null) { // Do not save measures on resource which doesn't exist in the context return null; } if (ResourceUtils.isUnitTestClass(resourceInContext)) { // Ignore unit tests return null; } return resourceInContext; }
private boolean analyzeLinesCoveredByTests(String sessionId, ExecutionDataStore executionDataStore, SensorContext context) { int i = sessionId.indexOf(' '); if (i < 0) { return false; } String testClassName = sessionId.substring(0, i); String testName = sessionId.substring(i + 1); Resource testResource = context.getResource(javaResourceLocator.findResourceByClassName(testClassName)); if (testResource == null) { // No such test class return false; } boolean result = false; CoverageBuilder coverageBuilder = analyze2(executionDataStore); for (ISourceFileCoverage coverage : coverageBuilder.getSourceFiles()) { Resource resource = getResource(coverage, context); if (resource != null) { CoverageMeasuresBuilder builder = analyzeFile(resource, coverage); List<Integer> coveredLines = getCoveredLines(builder); if (!coveredLines.isEmpty() && addCoverage(resource, testResource, testName, coveredLines)) { result = true; } } } return result; }