InspectionDescriptionNotFoundInspection for xml-configured inspections
authorDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Thu, 19 Jan 2012 11:01:29 +0000 (15:01 +0400)
committerDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Thu, 19 Jan 2012 12:56:58 +0000 (16:56 +0400)
platform/lang-api/src/com/intellij/codeInspection/InspectionProfileEntry.java
plugins/devkit/src/inspections/InspectionDescriptionNotFoundInspection.java

index 23b84012d09c774965c131a1edbfc5529b1e6351..c5b31b8c680123d1c19a5f2d7ce6971209cd1119 100644 (file)
@@ -96,11 +96,11 @@ public abstract class InspectionProfileEntry {
    */
   @NonNls @NotNull
   public String getShortName() {
-    return getShortName(getClass());
+    return getShortName(getClass().getSimpleName());
   }
 
-  public static String getShortName(Class<? extends InspectionProfileEntry> aClass) {
-    return StringUtil.trimEnd(aClass.getSimpleName(), "Inspection");
+  public static String getShortName(String className) {
+    return StringUtil.trimEnd(className, "Inspection");
   }
 
   /**
index 4eec3d104b40648464e108f2bc59a8238384f63f..85d1d884db6016a6bb99a6f73a695c3a27ecdb67 100644 (file)
 
 package org.jetbrains.idea.devkit.inspections;
 
-import com.intellij.codeInspection.InspectionManager;
-import com.intellij.codeInspection.LocalQuickFix;
-import com.intellij.codeInspection.ProblemDescriptor;
-import com.intellij.codeInspection.ProblemHighlightType;
+import com.intellij.codeInspection.*;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModuleUtil;
 import com.intellij.openapi.project.Project;
@@ -42,7 +39,7 @@ import java.util.List;
  * @author Konstantin Bulenkov
  */
 public class InspectionDescriptionNotFoundInspection extends DevKitInspectionBase{
-  @NonNls private static final String INSPECTION_PROFILE_ENTRY = "com.intellij.codeInspection.InspectionProfileEntry";
+  @NonNls static final String INSPECTION_PROFILE_ENTRY = InspectionProfileEntry.class.getName();
   @NonNls private static final String INSPECTION_DESCRIPTIONS = "inspectionDescriptions";
 
   @Override
@@ -57,9 +54,11 @@ public class InspectionDescriptionNotFoundInspection extends DevKitInspectionBas
 
     if (base == null || ! aClass.isInheritor(base, true) || isPathMethodsAreOverridden(aClass)) return null;
 
-    final PsiMethod method = findNearestMethod("getShortName", aClass);
-    if (method == null) return null;
-    final String filename = PsiUtil.getReturnedLiteral(method, aClass);
+    PsiMethod method = findNearestMethod("getShortName", aClass);
+    if (method != null && method.getContainingClass().getQualifiedName().equals(INSPECTION_PROFILE_ENTRY)) {
+      method = null;
+    }
+    final String filename = method == null ? InspectionProfileEntry.getShortName(aClass.getName()) : PsiUtil.getReturnedLiteral(method, aClass);
     if (filename == null) return null;
 
 
@@ -83,8 +82,8 @@ public class InspectionDescriptionNotFoundInspection extends DevKitInspectionBas
   }
 
   @Nullable
-  private static PsiElement getProblemElement(PsiClass aClass, PsiMethod method) {
-    if (method.getContainingClass() == aClass) {
+  private static PsiElement getProblemElement(PsiClass aClass, @Nullable PsiMethod method) {
+    if (method != null && method.getContainingClass() == aClass) {
       return PsiUtil.getReturnedExpression(method);
     } else {
       return aClass.getNameIdentifier();