EA-73818 - NPE: DescriptorUtil.getPluginId
authorYann Cébron <yann.cebron@jetbrains.com>
Thu, 1 Oct 2015 07:54:38 +0000 (09:54 +0200)
committerYann Cébron <yann.cebron@jetbrains.com>
Thu, 1 Oct 2015 07:54:38 +0000 (09:54 +0200)
plugins/devkit/src/inspections/DevKitInspectionBase.java
plugins/devkit/src/util/DescriptorUtil.java

index c27c77800c10f3601a01c2ab495b1f2ecaffcf4d..f254c1fc963c28e34293b88186422960cde89fbe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -82,8 +82,9 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool {
   @Nullable
   private static Set<PsiClass> checkModule(Module module, PsiClass psiClass, @Nullable Set<PsiClass> types, boolean includeActions) {
     final XmlFile pluginXml = PluginModuleType.getPluginXml(module);
-    if (!DescriptorUtil.isPluginXml(pluginXml)) return types;
-    assert pluginXml != null;
+    if (pluginXml == null) return null;
+    final DomFileElement<IdeaPlugin> fileElement = DescriptorUtil.getIdeaPlugin(pluginXml);
+    if (fileElement == null) return null;
 
     final String qualifiedName = psiClass.getQualifiedName();
     if (qualifiedName != null) {
@@ -93,7 +94,6 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool {
       processPluginXml(pluginXml, finder, includeActions);
 
       // <depends> plugin.xml files
-      final DomFileElement<IdeaPlugin> fileElement = DescriptorUtil.getIdeaPlugin(pluginXml);
       for (Dependency dependency : fileElement.getRootElement().getDependencies()) {
         final GenericAttributeValue<PathReference> configFileAttribute = dependency.getConfigFile();
         if (!DomUtil.hasXml(configFileAttribute)) continue;
index 3cf574f9ca48d83fea62b4ab419b49aad6ec3b88..feb3fa2f4c39bc245234956fe13a2369ea694dff 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ import com.intellij.psi.xml.XmlTag;
 import com.intellij.util.IncorrectOperationException;
 import com.intellij.util.xml.DomFileElement;
 import com.intellij.util.xml.DomManager;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.idea.devkit.DevKitBundle;
 import org.jetbrains.idea.devkit.dom.IdeaPlugin;
@@ -79,7 +80,12 @@ public class DescriptorUtil {
     if (pluginXml == null) {
       return null;
     }
-    return getIdeaPlugin(pluginXml).getRootElement().getPluginId();
+    final DomFileElement<IdeaPlugin> ideaPlugin = getIdeaPlugin(pluginXml);
+    if (ideaPlugin == null) {
+      return null;
+    }
+
+    return ideaPlugin.getRootElement().getPluginId();
   }
 
   public static boolean isPluginXml(PsiFile file) {
@@ -87,7 +93,8 @@ public class DescriptorUtil {
     return getIdeaPlugin((XmlFile)file) != null;
   }
 
-  public static DomFileElement<IdeaPlugin> getIdeaPlugin(XmlFile file) {
+  @Nullable
+  public static DomFileElement<IdeaPlugin> getIdeaPlugin(@NotNull XmlFile file) {
     return DomManager.getDomManager(file.getProject()).getFileElement(file, IdeaPlugin.class);
   }
 }