예제 #1
0
 @Nullable
 private static CommonProblemDescriptor createDescriptor(
     @Nullable RefEntity element,
     @NotNull OfflineProblemDescriptor offlineDescriptor,
     @NotNull InspectionToolWrapper toolWrapper,
     @NotNull InspectionToolPresentation presentation) {
   if (!(toolWrapper instanceof LocalInspectionToolWrapper)) return null;
   final InspectionManager inspectionManager =
       InspectionManager.getInstance(presentation.getContext().getProject());
   final OfflineProblemDescriptor offlineProblemDescriptor = offlineDescriptor;
   if (element instanceof RefElement) {
     final PsiElement psiElement = ((RefElement) element).getElement();
     if (psiElement != null) {
       ProblemDescriptor descriptor =
           ProgressManager.getInstance()
               .runProcess(
                   () ->
                       runLocalTool(
                           psiElement,
                           inspectionManager,
                           offlineProblemDescriptor,
                           (LocalInspectionToolWrapper) toolWrapper),
                   new DaemonProgressIndicator());
       if (descriptor != null) return descriptor;
     }
     return null;
   }
   final List<String> hints = offlineProblemDescriptor.getHints();
   CommonProblemDescriptor descriptor =
       inspectionManager.createProblemDescriptor(
           offlineProblemDescriptor.getDescription(), (QuickFix) null);
   final QuickFix[] quickFixes = getFixes(descriptor, hints, presentation);
   if (quickFixes != null) {
     descriptor =
         inspectionManager.createProblemDescriptor(
             offlineProblemDescriptor.getDescription(), quickFixes);
   }
   return descriptor;
 }