@Override public ProcessingItem[] process(final CompileContext context, final ProcessingItem[] items) { context.getProgressIndicator().setText(myValidator.getProgressIndicatorText()); final List<ProcessingItem> processedItems = new ArrayList<ProcessingItem>(); final List<LocalInspectionTool> inspections = new ArrayList<LocalInspectionTool>(); for (final Class aClass : myValidator.getInspectionToolClasses(context)) { try { inspections.add((LocalInspectionTool) aClass.newInstance()); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new Error(e); } } for (int i = 0; i < items.length; i++) { final MyValidatorProcessingItem item = (MyValidatorProcessingItem) items[i]; context.getProgressIndicator().checkCanceled(); context.getProgressIndicator().setFraction((double) i / items.length); try { ourCompilationThreads.set(Boolean.TRUE); if (checkFile(inspections, item, context)) { processedItems.add(item); } } finally { ourCompilationThreads.set(Boolean.FALSE); } } return processedItems.toArray(new ProcessingItem[processedItems.size()]); }
private boolean reportProblems( CompileContext context, Map<ProblemDescriptor, HighlightDisplayLevel> problemsMap) { if (problemsMap.isEmpty()) { return false; } boolean errorsReported = false; for (Map.Entry<ProblemDescriptor, HighlightDisplayLevel> entry : problemsMap.entrySet()) { ProblemDescriptor problemDescriptor = entry.getKey(); final PsiElement element = problemDescriptor.getPsiElement(); final PsiFile psiFile = element.getContainingFile(); if (psiFile == null) continue; final VirtualFile virtualFile = psiFile.getVirtualFile(); if (virtualFile == null) continue; final CompilerMessageCategory category = myValidator.getCategoryByHighlightDisplayLevel(entry.getValue(), virtualFile, context); final Document document = myPsiDocumentManager.getDocument(psiFile); final int offset = problemDescriptor.getStartElement().getTextOffset(); assert document != null; final int line = document.getLineNumber(offset); final int column = offset - document.getLineStartOffset(line); context.addMessage( category, problemDescriptor.getDescriptionTemplate(), virtualFile.getUrl(), line + 1, column + 1); if (CompilerMessageCategory.ERROR == category) { errorsReported = true; } } return errorsReported; }
@Override @NotNull public String getDescription() { return myValidator.getDescription(); }