Search in sources :

Example 1 with SonarLintJob

use of org.sonarlint.intellij.analysis.SonarLintJob in project sonarlint-intellij by SonarSource.

the class IssueProcessor method process.

public void process(final SonarLintJob job, ProgressIndicator indicator, final Collection<Issue> rawIssues, Collection<ClientInputFile> failedAnalysisFiles) {
    Map<VirtualFile, Collection<LiveIssue>> transformedIssues;
    long start = System.currentTimeMillis();
    AccessToken token = ReadAction.start();
    try {
        transformedIssues = transformIssues(rawIssues, job.allFiles(), failedAnalysisFiles);
        // this might be updated later after tracking with server issues
        manager.store(transformedIssues);
    } finally {
        // closeable only introduced in 2016.2
        token.finish();
    }
    String issueStr = rawIssues.size() == 1 ? "issue" : "issues";
    console.debug(String.format("Processed %d %s in %d ms", rawIssues.size(), issueStr, System.currentTimeMillis() - start));
    long issuesToShow = transformedIssues.entrySet().stream().mapToLong(e -> e.getValue().size()).sum();
    Collection<VirtualFile> filesWithIssues = transformedIssues.entrySet().stream().filter(e -> !e.getValue().isEmpty()).map(Map.Entry::getKey).collect(Collectors.toList());
    String end = issuesToShow == 1 ? " issue" : " issues";
    console.info("Found " + issuesToShow + end);
    if (!filesWithIssues.isEmpty() && shouldUpdateServerIssues(job.trigger())) {
        serverIssueUpdater.fetchAndMatchServerIssues(filesWithIssues, indicator, job.waitForServerIssues());
    }
    AnalysisCallback callback = job.callback();
    if (callback != null) {
        Set<VirtualFile> failedVirtualFiles = failedAnalysisFiles.stream().map(f -> (VirtualFile) f.getClientObject()).collect(Collectors.toSet());
        callback.onSuccess(failedVirtualFiles);
    }
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) VirtualFile(com.intellij.openapi.vfs.VirtualFile) HashMap(java.util.HashMap) ClientInputFile(org.sonarsource.sonarlint.core.client.api.common.analysis.ClientInputFile) IssueLocation(org.sonarsource.sonarlint.core.client.api.common.analysis.IssueLocation) ReadAction(com.intellij.openapi.application.ReadAction) ArrayList(java.util.ArrayList) AccessToken(com.intellij.openapi.application.AccessToken) Map(java.util.Map) Project(com.intellij.openapi.project.Project) PsiFile(com.intellij.psi.PsiFile) Logger(com.intellij.openapi.diagnostic.Logger) LinkedList(java.util.LinkedList) RangeMarker(com.intellij.openapi.editor.RangeMarker) AnalysisCallback(org.sonarlint.intellij.analysis.AnalysisCallback) Collection(java.util.Collection) Set(java.util.Set) Collectors(java.util.stream.Collectors) AbstractProjectComponent(com.intellij.openapi.components.AbstractProjectComponent) SonarLintConsole(org.sonarlint.intellij.ui.SonarLintConsole) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) TriggerType(org.sonarlint.intellij.trigger.TriggerType) Issue(org.sonarsource.sonarlint.core.client.api.common.analysis.Issue) SonarLintJob(org.sonarlint.intellij.analysis.SonarLintJob) Collections(java.util.Collections) ServerIssueUpdater(org.sonarlint.intellij.core.ServerIssueUpdater) AccessToken(com.intellij.openapi.application.AccessToken) Collection(java.util.Collection) AnalysisCallback(org.sonarlint.intellij.analysis.AnalysisCallback) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

AccessToken (com.intellij.openapi.application.AccessToken)1 ReadAction (com.intellij.openapi.application.ReadAction)1 AbstractProjectComponent (com.intellij.openapi.components.AbstractProjectComponent)1 Logger (com.intellij.openapi.diagnostic.Logger)1 RangeMarker (com.intellij.openapi.editor.RangeMarker)1 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)1 Project (com.intellij.openapi.project.Project)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 PsiFile (com.intellij.psi.PsiFile)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 AnalysisCallback (org.sonarlint.intellij.analysis.AnalysisCallback)1 SonarLintJob (org.sonarlint.intellij.analysis.SonarLintJob)1