Search in sources :

Example 1 with Language

use of org.sonar.scanner.repository.language.Language in project sonarqube by SonarSource.

the class FileIndexer method indexFile.

void indexFile(DefaultInputModule module, ModuleExclusionFilters moduleExclusionFilters, ModuleCoverageAndDuplicationExclusions moduleCoverageAndDuplicationExclusions, Path sourceFile, Type type, ProgressReport progressReport, ProjectFileIndexer.ExclusionCounter exclusionCounter, @Nullable IgnoreCommand ignoreCommand) throws IOException {
    // get case of real file without resolving link
    Path realAbsoluteFile = sourceFile.toRealPath(LinkOption.NOFOLLOW_LINKS).toAbsolutePath().normalize();
    Path projectRelativePath = project.getBaseDir().relativize(realAbsoluteFile);
    Path moduleRelativePath = module.getBaseDir().relativize(realAbsoluteFile);
    boolean included = evaluateInclusionsFilters(moduleExclusionFilters, realAbsoluteFile, projectRelativePath, moduleRelativePath, type);
    if (!included) {
        exclusionCounter.increaseByPatternsCount();
        return;
    }
    boolean excluded = evaluateExclusionsFilters(moduleExclusionFilters, realAbsoluteFile, projectRelativePath, moduleRelativePath, type);
    if (excluded) {
        exclusionCounter.increaseByPatternsCount();
        return;
    }
    if (!realAbsoluteFile.startsWith(project.getBaseDir())) {
        LOG.warn("File '{}' is ignored. It is not located in project basedir '{}'.", realAbsoluteFile.toAbsolutePath(), project.getBaseDir());
        return;
    }
    if (!realAbsoluteFile.startsWith(module.getBaseDir())) {
        LOG.warn("File '{}' is ignored. It is not located in module basedir '{}'.", realAbsoluteFile.toAbsolutePath(), module.getBaseDir());
        return;
    }
    Language language = langDetection.language(realAbsoluteFile, projectRelativePath);
    if (ignoreCommand != null && ignoreCommand.isIgnored(realAbsoluteFile)) {
        LOG.debug("File '{}' is excluded by the scm ignore settings.", realAbsoluteFile);
        exclusionCounter.increaseByScmCount();
        return;
    }
    DefaultIndexedFile indexedFile = new DefaultIndexedFile(realAbsoluteFile, project.key(), projectRelativePath.toString(), moduleRelativePath.toString(), type, language != null ? language.key() : null, scannerComponentIdGenerator.getAsInt(), sensorStrategy);
    DefaultInputFile inputFile = new DefaultInputFile(indexedFile, f -> metadataGenerator.setMetadata(module.key(), f, module.getEncoding()));
    if (language != null && language.isPublishAllFiles()) {
        inputFile.setPublished(true);
    }
    if (!accept(inputFile)) {
        return;
    }
    checkIfAlreadyIndexed(inputFile);
    componentStore.put(module.key(), inputFile);
    issueExclusionsLoader.addMulticriteriaPatterns(inputFile);
    String langStr = inputFile.language() != null ? format("with language '%s'", inputFile.language()) : "with no language";
    LOG.debug("'{}' indexed {}{}", projectRelativePath, type == Type.TEST ? "as test " : "", langStr);
    evaluateCoverageExclusions(moduleCoverageAndDuplicationExclusions, inputFile);
    evaluateDuplicationExclusions(moduleCoverageAndDuplicationExclusions, inputFile);
    if (properties.preloadFileMetadata()) {
        inputFile.checkMetadata();
    }
    int count = componentStore.inputFiles().size();
    progressReport.message(count + " " + pluralizeFiles(count) + " indexed...  (last one was " + inputFile.getProjectRelativePath() + ")");
}
Also used : Path(java.nio.file.Path) Language(org.sonar.scanner.repository.language.Language) DefaultIndexedFile(org.sonar.api.batch.fs.internal.DefaultIndexedFile) DefaultInputFile(org.sonar.api.batch.fs.internal.DefaultInputFile)

Aggregations

Path (java.nio.file.Path)1 DefaultIndexedFile (org.sonar.api.batch.fs.internal.DefaultIndexedFile)1 DefaultInputFile (org.sonar.api.batch.fs.internal.DefaultInputFile)1 Language (org.sonar.scanner.repository.language.Language)1