Search in sources :

Example 76 with InputFile

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

the class GenericCoverageReportParser method parseFiles.

private void parseFiles(SMInputCursor fileCursor, SensorContext context) throws XMLStreamException {
    while (fileCursor.getNext() != null) {
        checkElementName(fileCursor, "file");
        String filePath = mandatoryAttribute(fileCursor, "path");
        InputFile inputFile = context.fileSystem().inputFile(context.fileSystem().predicates().hasPath(filePath));
        if (inputFile == null) {
            numberOfUnknownFiles++;
            if (numberOfUnknownFiles <= MAX_STORED_UNKNOWN_FILE_PATHS) {
                firstUnknownFiles.add(filePath);
            }
            continue;
        }
        Preconditions.checkState(inputFile.language() != null, "Line %s of report refers to a file with an unknown language: %s", fileCursor.getCursorLocation().getLineNumber(), filePath);
        matchedFileKeys.add(inputFile.absolutePath());
        NewCoverage newCoverage = context.newCoverage().onFile(inputFile);
        SMInputCursor lineToCoverCursor = fileCursor.childElementCursor();
        while (lineToCoverCursor.getNext() != null) {
            parseLineToCover(lineToCoverCursor, newCoverage);
        }
        newCoverage.save();
    }
}
Also used : SMInputCursor(org.codehaus.staxmate.in.SMInputCursor) NewCoverage(org.sonar.api.batch.sensor.coverage.NewCoverage) InputFile(org.sonar.api.batch.fs.InputFile)

Example 77 with InputFile

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

the class MeasuresPublisher method updateTestExecutionFromTestPlan.

private void updateTestExecutionFromTestPlan(final InputFile inputFile) {
    final MutableTestPlan testPlan = testPlanBuilder.getTestPlanByFile(inputFile);
    if (testPlan == null || Iterables.isEmpty(testPlan.testCases())) {
        return;
    }
    long nonSkippedTests = StreamSupport.stream(testPlan.testCases().spliterator(), false).filter(t -> t.status() != Status.SKIPPED).count();
    measureCache.put(inputFile.key(), TESTS_KEY, new DefaultMeasure<Integer>().forMetric(TESTS).withValue((int) nonSkippedTests));
    long executionTime = StreamSupport.stream(testPlan.testCases().spliterator(), false).mapToLong(t -> t.durationInMs() != null ? t.durationInMs().longValue() : 0L).sum();
    measureCache.put(inputFile.key(), TEST_EXECUTION_TIME_KEY, new DefaultMeasure<Long>().forMetric(TEST_EXECUTION_TIME).withValue(executionTime));
    long errorTests = StreamSupport.stream(testPlan.testCases().spliterator(), false).filter(t -> t.status() == Status.ERROR).count();
    measureCache.put(inputFile.key(), TEST_ERRORS_KEY, new DefaultMeasure<Integer>().forMetric(TEST_ERRORS).withValue((int) errorTests));
    long skippedTests = StreamSupport.stream(testPlan.testCases().spliterator(), false).filter(t -> t.status() == Status.SKIPPED).count();
    measureCache.put(inputFile.key(), SKIPPED_TESTS_KEY, new DefaultMeasure<Integer>().forMetric(SKIPPED_TESTS).withValue((int) skippedTests));
    long failedTests = StreamSupport.stream(testPlan.testCases().spliterator(), false).filter(t -> t.status() == Status.FAILURE).count();
    measureCache.put(inputFile.key(), TEST_FAILURES_KEY, new DefaultMeasure<Integer>().forMetric(TEST_FAILURES).withValue((int) failedTests));
}
Also used : DefaultInputComponent(org.sonar.api.batch.fs.internal.DefaultInputComponent) InputFile(org.sonar.api.batch.fs.InputFile) Metric(org.sonar.api.batch.measure.Metric) Iterables(com.google.common.collect.Iterables) InputComponentStore(org.sonar.scanner.scan.filesystem.InputComponentStore) SKIPPED_TESTS_KEY(org.sonar.api.measures.CoreMetrics.SKIPPED_TESTS_KEY) DefaultInputFile(org.sonar.api.batch.fs.internal.DefaultInputFile) ScannerReportWriter(org.sonar.scanner.protocol.output.ScannerReportWriter) SKIPPED_TESTS(org.sonar.api.measures.CoreMetrics.SKIPPED_TESTS) LINES_TO_COVER(org.sonar.api.measures.CoreMetrics.LINES_TO_COVER) Type(org.sonar.api.batch.fs.InputFile.Type) TESTS(org.sonar.api.measures.CoreMetrics.TESTS) ScannerReport(org.sonar.scanner.protocol.output.ScannerReport) UNCOVERED_LINES_KEY(org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES_KEY) TEST_ERRORS_KEY(org.sonar.api.measures.CoreMetrics.TEST_ERRORS_KEY) CONDITIONS_TO_COVER_KEY(org.sonar.api.measures.CoreMetrics.CONDITIONS_TO_COVER_KEY) TEST_FAILURES_KEY(org.sonar.api.measures.CoreMetrics.TEST_FAILURES_KEY) UNCOVERED_CONDITIONS(org.sonar.api.measures.CoreMetrics.UNCOVERED_CONDITIONS) Status(org.sonar.api.test.TestCase.Status) CONDITIONS_TO_COVER(org.sonar.api.measures.CoreMetrics.CONDITIONS_TO_COVER) StringValue(org.sonar.scanner.protocol.output.ScannerReport.Measure.StringValue) Map(java.util.Map) TEST_EXECUTION_TIME_KEY(org.sonar.api.measures.CoreMetrics.TEST_EXECUTION_TIME_KEY) StreamSupport(java.util.stream.StreamSupport) UNCOVERED_CONDITIONS_KEY(org.sonar.api.measures.CoreMetrics.UNCOVERED_CONDITIONS_KEY) LINES_TO_COVER_KEY(org.sonar.api.measures.CoreMetrics.LINES_TO_COVER_KEY) InputComponent(org.sonar.api.batch.fs.InputComponent) TEST_EXECUTION_TIME(org.sonar.api.measures.CoreMetrics.TEST_EXECUTION_TIME) TestPlanBuilder(org.sonar.scanner.deprecated.test.TestPlanBuilder) IntValue(org.sonar.scanner.protocol.output.ScannerReport.Measure.IntValue) LongValue(org.sonar.scanner.protocol.output.ScannerReport.Measure.LongValue) TEST_ERRORS(org.sonar.api.measures.CoreMetrics.TEST_ERRORS) MeasureCache(org.sonar.scanner.scan.measure.MeasureCache) Collectors(java.util.stream.Collectors) CoreMetrics(org.sonar.api.measures.CoreMetrics) Serializable(java.io.Serializable) MutableTestPlan(org.sonar.api.test.MutableTestPlan) BoolValue(org.sonar.scanner.protocol.output.ScannerReport.Measure.BoolValue) TEST_FAILURES(org.sonar.api.measures.CoreMetrics.TEST_FAILURES) TESTS_KEY(org.sonar.api.measures.CoreMetrics.TESTS_KEY) UNCOVERED_LINES(org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES) DefaultMeasure(org.sonar.api.batch.sensor.measure.internal.DefaultMeasure) KeyValueFormat(org.sonar.api.utils.KeyValueFormat) Collections(java.util.Collections) DoubleValue(org.sonar.scanner.protocol.output.ScannerReport.Measure.DoubleValue) MutableTestPlan(org.sonar.api.test.MutableTestPlan)

Example 78 with InputFile

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

the class SourceProvider method getEscapedSource.

public List<String> getEscapedSource(DefaultInputComponent component) {
    if (!component.isFile()) {
        // Folder
        return Collections.emptyList();
    }
    try {
        InputFile inputFile = (InputFile) component;
        List<String> lines = FileUtils.readLines(inputFile.file(), fs.encoding());
        List<String> escapedLines = new ArrayList<>(lines.size());
        for (String line : lines) {
            escapedLines.add(StringEscapeUtils.escapeHtml(line));
        }
        return escapedLines;
    } catch (IOException e) {
        LOG.warn("Unable to read source code of resource {}", component, e);
        return Collections.emptyList();
    }
}
Also used : ArrayList(java.util.ArrayList) IOException(java.io.IOException) InputFile(org.sonar.api.batch.fs.InputFile)

Example 79 with InputFile

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

the class DefaultBlameOutput method finish.

public void finish(boolean success) {
    progressReport.stop(count + "/" + total + " files analyzed");
    if (success && !allFilesToBlame.isEmpty()) {
        LOG.warn("Missing blame information for the following files:");
        for (InputFile f : allFilesToBlame) {
            LOG.warn("  * " + f.absolutePath());
        }
        LOG.warn("This may lead to missing/broken features in SonarQube");
    }
}
Also used : InputFile(org.sonar.api.batch.fs.InputFile) DefaultInputFile(org.sonar.api.batch.fs.internal.DefaultInputFile)

Example 80 with InputFile

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

the class HighlightingMediumTest method computeSyntaxHighlightingOnTempProject.

@Test
public void computeSyntaxHighlightingOnTempProject() throws IOException {
    File baseDir = temp.newFolder();
    File srcDir = new File(baseDir, "src");
    srcDir.mkdir();
    File xooFile = new File(srcDir, "sample.xoo");
    File xoohighlightingFile = new File(srcDir, "sample.xoo.highlighting");
    FileUtils.write(xooFile, "Sample xoo\ncontent plop");
    FileUtils.write(xoohighlightingFile, "0:10:s\n11:18:k");
    TaskResult result = tester.newTask().properties(ImmutableMap.<String, String>builder().put("sonar.projectBaseDir", baseDir.getAbsolutePath()).put("sonar.projectKey", "com.foo.project").put("sonar.projectName", "Foo Project").put("sonar.projectVersion", "1.0-SNAPSHOT").put("sonar.projectDescription", "Description of Foo Project").put("sonar.sources", "src").build()).start();
    InputFile file = result.inputFile("src/sample.xoo");
    assertThat(result.highlightingTypeFor(file, 1, 0)).containsExactly(TypeOfText.STRING);
    assertThat(result.highlightingTypeFor(file, 1, 9)).containsExactly(TypeOfText.STRING);
    assertThat(result.highlightingTypeFor(file, 2, 0)).containsExactly(TypeOfText.KEYWORD);
    assertThat(result.highlightingTypeFor(file, 2, 8)).isEmpty();
}
Also used : TaskResult(org.sonar.scanner.mediumtest.TaskResult) InputFile(org.sonar.api.batch.fs.InputFile) File(java.io.File) InputFile(org.sonar.api.batch.fs.InputFile) Test(org.junit.Test)

Aggregations

InputFile (org.sonar.api.batch.fs.InputFile)102 Test (org.junit.Test)61 File (java.io.File)45 TestInputFileBuilder (org.sonar.api.batch.fs.internal.TestInputFileBuilder)39 DefaultInputFile (org.sonar.api.batch.fs.internal.DefaultInputFile)20 TaskResult (org.sonar.scanner.mediumtest.TaskResult)19 IOException (java.io.IOException)10 FilePredicates (org.sonar.api.batch.fs.FilePredicates)8 ScannerReport (org.sonar.scanner.protocol.output.ScannerReport)7 List (java.util.List)6 FileSystem (org.sonar.api.batch.fs.FileSystem)6 BlameLine (org.sonar.api.batch.scm.BlameLine)6 ArrayList (java.util.ArrayList)4 PathResolver (org.sonar.api.scan.filesystem.PathResolver)4 DefaultBlameOutput (org.sonar.scanner.scm.DefaultBlameOutput)4 DefaultInputModule (org.sonar.api.batch.fs.internal.DefaultInputModule)3 DefaultMeasure (org.sonar.api.batch.sensor.measure.internal.DefaultMeasure)3 MutableTestPlan (org.sonar.api.test.MutableTestPlan)3 Block (org.sonar.duplications.block.Block)3 VisibleForTesting (com.google.common.annotations.VisibleForTesting)2