private ReturnResult processResult(Collection<VirtualFile> affectedFiles) { AnalysisResultIssues analysisResultIssues = SonarLintUtils.get(project, AnalysisResultIssues.class); IssueManager issueManager = SonarLintUtils.get(project, IssueManager.class); Map<VirtualFile, Collection<LiveIssue>> map = affectedFiles.stream() .collect(Collectors.toMap(Function.identity(), issueManager::getForFile)); long numIssues = map.entrySet().stream() .flatMap(e -> e.getValue().stream()) .filter(i -> !i.isResolved()) .count(); analysisResultIssues.set(map, "SCM changed files"); long numBlockerIssues = map.entrySet().stream() .flatMap(e -> e.getValue().stream()) .filter(i -> !i.isResolved()) .filter(i -> "BLOCKER".equals(i.getSeverity())) .count(); if (numIssues == 0) { return ReturnResult.COMMIT; } long numFiles = map.keySet().size(); String msg = createMessage(numFiles, numIssues, numBlockerIssues); if (ApplicationManager.getApplication().isHeadlessEnvironment()) { LOGGER.info(msg); return ReturnResult.CANCEL; } return showYesNoCancel(msg); }
@Before public final void setUp() { ApplicationManager.setApplication(app, mock(Disposable.class)); when(app.isUnitTestMode()).thenReturn(true); when(app.getMessageBus()).thenReturn(new MessageBusImpl.RootBus(this)); when(app.isHeadlessEnvironment()).thenReturn(true); when(app.acquireReadActionLock()).thenReturn(mock(AccessToken.class)); when(app.getMessageBus()).thenReturn(new MessageBusImpl.RootBus(this)); Answer<Void> runArg = invocation -> { ((ThrowableComputable) invocation.getArgument(0)).compute(); return null; }; doAnswer(runArg).when(app).runReadAction(any(ThrowableComputable.class)); register(app, CertificateManager.class, new CertificateManager()); createModuleRoot(); }
@Override public TextEditorHighlightingPass createHighlightingPass(@NotNull final PsiFile file, @NotNull final Editor editor) { if (ApplicationManager.getApplication().isHeadlessEnvironment()) return null; if (editor.isOneLineMode()) return null; if (!(file instanceof BnfFile)) return null; final VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile == null || !FileEditorManager.getInstance(myProject).isFileOpen(virtualFile)) return null; return new TextEditorHighlightingPass(file.getProject(), editor.getDocument(), false) { List<HighlightInfo> infos = ContainerUtil.newArrayList(); @Override public void doCollectInformation(@NotNull ProgressIndicator progress) { infos.clear(); LivePreviewLanguage previewLanguage = LivePreviewLanguage.findInstance(file); if (previewLanguage == null) return; List<Editor> previewEditors = previewLanguage.getPreviewEditors(myProject); for (Editor e : previewEditors) { if (Boolean.TRUE.equals(GRAMMAR_AT_CARET_KEY.get(e))) { collectHighlighters(myProject, previewEditors.get(0), previewLanguage, infos); } } } @Override public void doApplyInformationToEditor() { Document document = editor.getDocument(); UpdateHighlightersUtil.setHighlightersToEditor(myProject, document, 0, file.getTextLength(), infos, getColorsScheme(), getId()); } }; }
@Override public void setupSdkPaths(@NotNull Sdk sdk) { if (ApplicationManager.getApplication().isDispatchThread() && !ApplicationManager.getApplication().isHeadlessEnvironment()) { throw new RuntimeException("Do not call from EDT, refreshes FS");