Search in sources :

Example 1 with SonarLintInputFile

use of org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile in project sonarlint-core by SonarSource.

the class IssueExclusionsRegexpScannerTests method init.

@BeforeEach
void init() {
    MockitoAnnotations.initMocks(this);
    blockPatterns = Arrays.asList(new DoubleRegexpMatcher(Pattern.compile("// SONAR-OFF"), Pattern.compile("// SONAR-ON")), new DoubleRegexpMatcher(Pattern.compile("// FOO-OFF"), Pattern.compile("// FOO-ON")));
    allFilePatterns = Collections.singletonList(Pattern.compile("@SONAR-IGNORE-ALL"));
    javaFile = new SonarLintInputFile(new OnDiskTestClientInputFile(Paths.get("src/Foo.java"), "src/Foo.java", false, StandardCharsets.UTF_8), f -> mock(Metadata.class));
    regexpScanner = new IssueExclusionsRegexpScanner(javaFile, allFilePatterns, blockPatterns);
}
Also used : DoubleRegexpMatcher(org.sonarsource.sonarlint.core.analysis.container.analysis.issue.ignore.scanner.IssueExclusionsLoader.DoubleRegexpMatcher) SonarLintInputFile(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile) IntStream(java.util.stream.IntStream) BeforeEach(org.junit.jupiter.api.BeforeEach) FileMetadata(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.FileMetadata) Metadata(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.FileMetadata.Metadata) Arrays(java.util.Arrays) Files(java.nio.file.Files) Mock(org.mockito.Mock) UTF_8(java.nio.charset.StandardCharsets.UTF_8) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) IssueExclusionPatternInitializer(org.sonarsource.sonarlint.core.analysis.container.analysis.issue.ignore.pattern.IssueExclusionPatternInitializer) SonarLintInputFile(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile) StandardCharsets(java.nio.charset.StandardCharsets) Test(org.junit.jupiter.api.Test) MockitoAnnotations(org.mockito.MockitoAnnotations) List(java.util.List) Paths(java.nio.file.Paths) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) Pattern(java.util.regex.Pattern) DoubleRegexpMatcher(org.sonarsource.sonarlint.core.analysis.container.analysis.issue.ignore.scanner.IssueExclusionsLoader.DoubleRegexpMatcher) Path(java.nio.file.Path) Collections(java.util.Collections) AssertionsForClassTypes.assertThat(org.assertj.core.api.AssertionsForClassTypes.assertThat) Mockito.mock(org.mockito.Mockito.mock) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 2 with SonarLintInputFile

use of org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile in project sonarlint-core by SonarSource.

the class EnforceIssuesFilter method accept.

@Override
public boolean accept(FilterableIssue issue, IssueFilterChain chain) {
    var atLeastOneRuleMatched = false;
    var atLeastOnePatternFullyMatched = false;
    IssuePattern matchingPattern = null;
    for (IssuePattern pattern : multicriteriaPatterns) {
        if (pattern.matchRule(issue.ruleKey())) {
            atLeastOneRuleMatched = true;
            var component = ((DefaultFilterableIssue) issue).getComponent();
            if (component.isFile()) {
                var file = (SonarLintInputFile) component;
                if (pattern.matchFile(file.relativePath())) {
                    atLeastOnePatternFullyMatched = true;
                    matchingPattern = pattern;
                }
            }
        }
    }
    if (atLeastOneRuleMatched) {
        if (atLeastOnePatternFullyMatched) {
            LOG.debug("Issue {} enforced by pattern {}", issue, matchingPattern);
        }
        return atLeastOnePatternFullyMatched;
    } else {
        return chain.accept(issue);
    }
}
Also used : SonarLintInputFile(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile) IssuePattern(org.sonarsource.sonarlint.core.analysis.container.analysis.issue.ignore.pattern.IssuePattern) DefaultFilterableIssue(org.sonarsource.sonarlint.core.analysis.sonarapi.DefaultFilterableIssue)

Example 3 with SonarLintInputFile

use of org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile in project sonarlint-core by SonarSource.

the class ModuleInputFileBuilder method create.

public SonarLintInputFile create(ClientInputFile inputFile) {
    var defaultInputFile = new SonarLintInputFile(inputFile, f -> {
        LOG.debug("Initializing metadata of file {}", f.uri());
        var charset = f.charset();
        InputStream stream;
        try {
            stream = f.inputStream();
        } catch (IOException e) {
            throw new IllegalStateException("Failed to open a stream on file: " + f.uri(), e);
        }
        return fileMetadata.readMetadata(stream, charset != null ? charset : Charset.defaultCharset(), f.uri(), null);
    });
    defaultInputFile.setType(inputFile.isTest() ? Type.TEST : Type.MAIN);
    var fileLanguage = inputFile.language();
    if (fileLanguage != null) {
        LOG.debug("Language of file '{}' is set to '{}'", inputFile.uri(), fileLanguage);
        defaultInputFile.setLanguage(fileLanguage);
    } else {
        defaultInputFile.setLanguage(langDetection.language(defaultInputFile));
    }
    return defaultInputFile;
}
Also used : SonarLintInputFile(org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile) InputStream(java.io.InputStream) IOException(java.io.IOException)

Aggregations

SonarLintInputFile (org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile)3 IOException (java.io.IOException)2 InputStream (java.io.InputStream)1 URISyntaxException (java.net.URISyntaxException)1 StandardCharsets (java.nio.charset.StandardCharsets)1 UTF_8 (java.nio.charset.StandardCharsets.UTF_8)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 List (java.util.List)1 Pattern (java.util.regex.Pattern)1 IntStream (java.util.stream.IntStream)1 AssertionsForClassTypes.assertThat (org.assertj.core.api.AssertionsForClassTypes.assertThat)1 BeforeEach (org.junit.jupiter.api.BeforeEach)1 Test (org.junit.jupiter.api.Test)1 Mock (org.mockito.Mock)1 Mockito.mock (org.mockito.Mockito.mock)1 MockitoAnnotations (org.mockito.MockitoAnnotations)1