Search in sources :

Example 1 with FileSystem

use of org.sonar.api.batch.fs.FileSystem in project sonar-java by SonarSource.

the class JaCoCoSensor method getReportPaths.

private static Set<File> getReportPaths(SensorContext context) {
    Set<File> reportPaths = new HashSet<>();
    Configuration settings = context.config();
    FileSystem fs = context.fileSystem();
    for (String reportPath : settings.getStringArray(REPORT_PATHS_PROPERTY)) {
        File report = fs.resolvePath(reportPath);
        if (!report.isFile()) {
            if (settings.hasKey(REPORT_PATHS_PROPERTY)) {
                LOG.info("JaCoCo report not found: '{}'", reportPath);
            }
        } else {
            reportPaths.add(report);
        }
    }
    getReport(settings, fs, REPORT_PATH_PROPERTY, "JaCoCo UT report not found: '{}'").ifPresent(reportPaths::add);
    getReport(settings, fs, IT_REPORT_PATH_PROPERTY, "JaCoCo IT report not found: '{}'").ifPresent(reportPaths::add);
    return reportPaths;
}
Also used : Configuration(org.sonar.api.config.Configuration) FileSystem(org.sonar.api.batch.fs.FileSystem) File(java.io.File) HashSet(java.util.HashSet)

Example 2 with FileSystem

use of org.sonar.api.batch.fs.FileSystem in project sonar-go by SonarSource.

the class GoCoverageReport method saveFileCoverage.

private static void saveFileCoverage(SensorContext sensorContext, FileCoverage fileCoverage) {
    String absolutePath = fileCoverage.absolutePath.toString();
    FileSystem fileSystem = sensorContext.fileSystem();
    InputFile inputFile = fileSystem.inputFile(fileSystem.predicates().hasAbsolutePath(absolutePath));
    if (inputFile != null) {
        LOG.debug("Saving coverage measures for file '{}'", absolutePath);
        NewCoverage newCoverage = sensorContext.newCoverage().onFile(inputFile);
        for (Map.Entry<Integer, LineCoverage> entry : fileCoverage.lineMap.entrySet()) {
            newCoverage.lineHits(entry.getKey(), entry.getValue().hits);
        }
        newCoverage.save();
    } else {
        LOG.warn("File '{}' is not included in the project, ignoring coverage", absolutePath);
    }
}
Also used : NewCoverage(org.sonar.api.batch.sensor.coverage.NewCoverage) FileSystem(org.sonar.api.batch.fs.FileSystem) HashMap(java.util.HashMap) Map(java.util.Map) InputFile(org.sonar.api.batch.fs.InputFile)

Example 3 with FileSystem

use of org.sonar.api.batch.fs.FileSystem in project sonarqube by SonarSource.

the class MultilineIssuesSensor method execute.

@Override
public void execute(SensorContext context) {
    FileSystem fs = context.fileSystem();
    FilePredicates p = fs.predicates();
    for (InputFile file : fs.inputFiles(p.and(p.hasLanguages(Xoo.KEY), p.hasType(Type.MAIN)))) {
        createIssues(file, context);
    }
}
Also used : FileSystem(org.sonar.api.batch.fs.FileSystem) FilePredicates(org.sonar.api.batch.fs.FilePredicates) InputFile(org.sonar.api.batch.fs.InputFile)

Example 4 with FileSystem

use of org.sonar.api.batch.fs.FileSystem in project sonarqube by SonarSource.

the class OneIssuePerDirectorySensor method analyse.

private static void analyse(SensorContext context) {
    FileSystem fs = context.fileSystem();
    FilePredicates p = fs.predicates();
    RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY);
    StreamSupport.stream(fs.inputFiles(p.hasType(Type.MAIN)).spliterator(), false).map(file -> fs.inputDir(file.file().getParentFile())).filter(Objects::nonNull).distinct().forEach(inputDir -> {
        NewIssue newIssue = context.newIssue();
        newIssue.forRule(ruleKey).at(newIssue.newLocation().on(inputDir).message("This issue is generated for any non-empty directory")).save();
    });
}
Also used : Objects(java.util.Objects) RuleKey(org.sonar.api.rule.RuleKey) FileSystem(org.sonar.api.batch.fs.FileSystem) Type(org.sonar.api.batch.fs.InputFile.Type) StreamSupport(java.util.stream.StreamSupport) Sensor(org.sonar.api.batch.sensor.Sensor) SensorContext(org.sonar.api.batch.sensor.SensorContext) NewIssue(org.sonar.api.batch.sensor.issue.NewIssue) FilePredicates(org.sonar.api.batch.fs.FilePredicates) SensorDescriptor(org.sonar.api.batch.sensor.SensorDescriptor) RuleKey(org.sonar.api.rule.RuleKey) NewIssue(org.sonar.api.batch.sensor.issue.NewIssue) FileSystem(org.sonar.api.batch.fs.FileSystem) FilePredicates(org.sonar.api.batch.fs.FilePredicates) Objects(java.util.Objects)

Example 5 with FileSystem

use of org.sonar.api.batch.fs.FileSystem in project sonarqube by SonarSource.

the class OneIssuePerLineSensor method analyse.

private void analyse(SensorContext context, String language, String repo) {
    FileSystem fs = context.fileSystem();
    FilePredicates p = fs.predicates();
    for (InputFile file : fs.inputFiles(p.and(p.hasLanguages(language), p.hasType(Type.MAIN)))) {
        createIssues(file, context, repo);
    }
}
Also used : FileSystem(org.sonar.api.batch.fs.FileSystem) FilePredicates(org.sonar.api.batch.fs.FilePredicates) InputFile(org.sonar.api.batch.fs.InputFile)

Aggregations

FileSystem (org.sonar.api.batch.fs.FileSystem)21 InputFile (org.sonar.api.batch.fs.InputFile)19 FilePredicates (org.sonar.api.batch.fs.FilePredicates)16 File (java.io.File)4 DefaultInputFile (org.sonar.api.batch.fs.internal.DefaultInputFile)2 TestInputFileBuilder (org.sonar.api.batch.fs.internal.TestInputFileBuilder)2 CheckFactory (org.sonar.api.batch.rule.CheckFactory)2 SensorContextTester (org.sonar.api.batch.sensor.internal.SensorContextTester)2 FileLinesContext (org.sonar.api.measures.FileLinesContext)2 FileLinesContextFactory (org.sonar.api.measures.FileLinesContextFactory)2 JavaVersionImpl (org.sonar.java.model.JavaVersionImpl)2 JavaResourceLocator (org.sonar.plugins.java.api.JavaResourceLocator)2 FileReader (java.io.FileReader)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 Objects (java.util.Objects)1