Search in sources :

Example 1 with ServerActiveRule

use of org.sonarsource.sonarlint.core.serverapi.rules.ServerActiveRule in project sonarlint-core by SonarSource.

the class ConnectedSonarLintEngineImpl method buildActiveRulesContext.

private ActiveRulesContext buildActiveRulesContext(ConnectedAnalysisConfiguration configuration) {
    var analysisRulesContext = new ActiveRulesContext();
    // could be empty before the first sync
    var projectKey = configuration.projectKey();
    if (projectKey == null) {
        // this should be forbidden by client side
        LOG.debug("No project key provided, no rules will be used for analysis");
        return analysisRulesContext;
    }
    var allRulesDefinitionsByKey = analysisContext.get().allRulesDefinitionsByKey;
    projectStorage.getAnalyzerConfiguration(projectKey).getRuleSetByLanguageKey().entrySet().stream().filter(e -> Language.forKey(e.getKey()).filter(l -> globalConfig.getEnabledLanguages().contains(l)).isPresent()).forEach(e -> {
        var languageKey = e.getKey();
        var ruleSet = e.getValue();
        LOG.debug("  * {}: '{}' ({} active rules)", languageKey, ruleSet.getProfileKey(), ruleSet.getRules().size());
        for (ServerActiveRule activeRuleFromStorage : ruleSet.getRules()) {
            var ruleDefinitionKey = StringUtils.isNotBlank(activeRuleFromStorage.getTemplateKey()) ? activeRuleFromStorage.getTemplateKey() : activeRuleFromStorage.getRuleKey();
            var ruleDefinition = allRulesDefinitionsByKey.get(ruleDefinitionKey);
            if (ruleDefinition == null) {
                LOG.debug("Rule {} is enabled on the server, but not available in SonarLint", activeRuleFromStorage.getRuleKey());
                continue;
            }
            analysisRulesContext.includeRule(ruleDefinition, activeRuleFromStorage);
        }
    });
    allRulesDefinitionsByKey.values().stream().filter(ruleDefinition -> isRuleFromExtraPlugin(ruleDefinition.getLanguage(), globalConfig)).forEach(analysisRulesContext::includeRule);
    return analysisRulesContext;
}
Also used : ClientLogOutput(org.sonarsource.sonarlint.core.commons.log.ClientLogOutput) FileMatcher(org.sonarsource.sonarlint.core.container.storage.FileMatcher) Language(org.sonarsource.sonarlint.core.commons.Language) GlobalUpdateStatusReader(org.sonarsource.sonarlint.core.container.storage.GlobalUpdateStatusReader) DefaultClientIssue(org.sonarsource.sonarlint.core.client.api.common.analysis.DefaultClientIssue) IssueStoreReader(org.sonarsource.sonarlint.core.container.storage.IssueStoreReader) SonarLintRuleDefinition(org.sonarsource.sonarlint.core.rule.extractor.SonarLintRuleDefinition) Version(org.sonarsource.sonarlint.core.commons.Version) StringUtils(org.apache.commons.lang3.StringUtils) ProjectStorageStatus(org.sonarsource.sonarlint.core.client.api.connected.ProjectStorageStatus) ServerApiHelper(org.sonarsource.sonarlint.core.serverapi.ServerApiHelper) AnalyzeCommand(org.sonarsource.sonarlint.core.analysis.command.AnalyzeCommand) Map(java.util.Map) ConnectedRuleDetails(org.sonarsource.sonarlint.core.client.api.connected.ConnectedRuleDetails) GlobalStores(org.sonarsource.sonarlint.core.container.storage.GlobalStores) Path(java.nio.file.Path) ActiveRule(org.sonarsource.sonarlint.core.analysis.api.ActiveRule) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) EndpointParams(org.sonarsource.sonarlint.core.serverapi.EndpointParams) StringUtils.trimToNull(org.apache.commons.lang3.StringUtils.trimToNull) StorageException(org.sonarsource.sonarlint.core.client.api.exceptions.StorageException) StorageFileExclusions(org.sonarsource.sonarlint.core.container.storage.StorageFileExclusions) Predicate(java.util.function.Predicate) DefaultRuleDetails(org.sonarsource.sonarlint.core.container.storage.DefaultRuleDetails) PluginInstancesRepository(org.sonarsource.sonarlint.core.plugin.commons.PluginInstancesRepository) Collection(java.util.Collection) ServerActiveRule(org.sonarsource.sonarlint.core.serverapi.rules.ServerActiveRule) Set(java.util.Set) ServerProject(org.sonarsource.sonarlint.core.serverapi.component.ServerProject) ProjectListDownloader(org.sonarsource.sonarlint.core.container.connected.update.ProjectListDownloader) Collectors(java.util.stream.Collectors) List(java.util.List) SonarLintWrappedException(org.sonarsource.sonarlint.core.client.api.exceptions.SonarLintWrappedException) AnalysisEngineConfiguration(org.sonarsource.sonarlint.core.analysis.api.AnalysisEngineConfiguration) HttpClient(org.sonarsource.sonarlint.core.commons.http.HttpClient) Optional(java.util.Optional) FilenameUtils(org.apache.commons.io.FilenameUtils) IssueStoreFactory(org.sonarsource.sonarlint.core.container.connected.IssueStoreFactory) AnalysisResults(org.sonarsource.sonarlint.core.analysis.api.AnalysisResults) GlobalStorageUpdateExecutor(org.sonarsource.sonarlint.core.container.connected.update.perform.GlobalStorageUpdateExecutor) Configuration(org.sonarsource.sonarlint.core.plugin.commons.PluginInstancesRepository.Configuration) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) ConnectedAnalysisConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ConnectedAnalysisConfiguration) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) AnalysisEngine(org.sonarsource.sonarlint.core.analysis.AnalysisEngine) ProjectStorageStatusReader(org.sonarsource.sonarlint.core.container.storage.ProjectStorageStatusReader) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Supplier(java.util.function.Supplier) ConnectedGlobalConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ConnectedGlobalConfiguration) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) IssueListener(org.sonarsource.sonarlint.core.client.api.common.analysis.IssueListener) ProjectStoragePaths.encodeForFs(org.sonarsource.sonarlint.core.container.storage.ProjectStoragePaths.encodeForFs) UpdateResult(org.sonarsource.sonarlint.core.client.api.connected.UpdateResult) LocalStorageSynchronizer(org.sonarsource.sonarlint.core.storage.LocalStorageSynchronizer) ProjectStorageUpdateExecutor(org.sonarsource.sonarlint.core.container.connected.update.perform.ProjectStorageUpdateExecutor) Issue(org.sonarsource.sonarlint.core.analysis.api.Issue) Objects.requireNonNull(java.util.Objects.requireNonNull) ProjectStorage(org.sonarsource.sonarlint.core.storage.ProjectStorage) IssueStorePaths(org.sonarsource.sonarlint.core.container.connected.update.IssueStorePaths) ProjectStoragePaths(org.sonarsource.sonarlint.core.container.storage.ProjectStoragePaths) DownloadException(org.sonarsource.sonarlint.core.client.api.exceptions.DownloadException) Nullable(javax.annotation.Nullable) ProjectBranches(org.sonarsource.sonarlint.core.client.api.connected.ProjectBranches) AnalysisConfiguration(org.sonarsource.sonarlint.core.analysis.api.AnalysisConfiguration) ProjectBinding(org.sonarsource.sonarlint.core.client.api.connected.ProjectBinding) StorageReader(org.sonarsource.sonarlint.core.container.storage.StorageReader) PluginDetails(org.sonarsource.sonarlint.core.client.api.common.PluginDetails) ClientProgressMonitor(org.sonarsource.sonarlint.core.commons.progress.ClientProgressMonitor) PluginsStorage(org.sonarsource.sonarlint.core.storage.PluginsStorage) ServerApi(org.sonarsource.sonarlint.core.serverapi.ServerApi) PartialUpdaterFactory(org.sonarsource.sonarlint.core.container.storage.partialupdate.PartialUpdaterFactory) Paths(java.nio.file.Paths) GlobalStorageStatus(org.sonarsource.sonarlint.core.client.api.connected.GlobalStorageStatus) ProgressMonitor(org.sonarsource.sonarlint.core.commons.progress.ProgressMonitor) ServerActiveRule(org.sonarsource.sonarlint.core.serverapi.rules.ServerActiveRule)

Aggregations

Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Objects.requireNonNull (java.util.Objects.requireNonNull)1 Optional (java.util.Optional)1 Set (java.util.Set)1 CompletableFuture (java.util.concurrent.CompletableFuture)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Function (java.util.function.Function)1 Predicate (java.util.function.Predicate)1 Supplier (java.util.function.Supplier)1 Collectors (java.util.stream.Collectors)1 Nullable (javax.annotation.Nullable)1 FilenameUtils (org.apache.commons.io.FilenameUtils)1 StringUtils (org.apache.commons.lang3.StringUtils)1