PY-17211 Fix issues from IDEA-CR-5816
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Wed, 14 Oct 2015 17:20:09 +0000 (20:20 +0300)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Fri, 16 Oct 2015 08:02:16 +0000 (11:02 +0300)
Remove redundant code left from the previous combined inspection.
Leave check PyInspectionExtension#ignoreMissingDocstring() only in
MissingOrEmptyDocstringInspection.

python/src/com/jetbrains/python/inspections/PyBaseDocstringInspection.java
python/src/com/jetbrains/python/inspections/PyIncorrectDocstringInspection.java
python/src/com/jetbrains/python/inspections/PyMissingOrEmptyDocstringInspection.java

index ae9f371fb401a30fba40b3d22cde4a6520b3f59e..68df5e219014f1460fdd199138b7af3229a91bd6 100644 (file)
@@ -17,7 +17,6 @@ package com.jetbrains.python.inspections;
 
 import com.intellij.codeInspection.LocalInspectionToolSession;
 import com.intellij.codeInspection.ProblemsHolder;
-import com.intellij.openapi.extensions.Extensions;
 import com.jetbrains.python.psi.*;
 import com.jetbrains.python.testing.PythonUnitTestUtil;
 import org.jetbrains.annotations.NotNull;
@@ -29,9 +28,7 @@ import org.jetbrains.annotations.Nullable;
 public abstract class PyBaseDocstringInspection extends PyInspection {
   @NotNull
   @Override
-  public abstract Visitor buildVisitor(@NotNull ProblemsHolder holder,
-                                                                 boolean isOnTheFly,
-                                                                 @NotNull LocalInspectionToolSession session);
+  public abstract Visitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session);
 
   protected static abstract class Visitor extends PyInspectionVisitor {
     public Visitor(@Nullable ProblemsHolder holder, @NotNull LocalInspectionToolSession session) {
@@ -39,12 +36,12 @@ public abstract class PyBaseDocstringInspection extends PyInspection {
     }
 
     @Override
-    public void visitPyFile(@NotNull PyFile node) {
+    public final void visitPyFile(@NotNull PyFile node) {
       checkDocString(node);
     }
 
     @Override
-    public void visitPyFunction(@NotNull PyFunction node) {
+    public final void visitPyFunction(@NotNull PyFunction node) {
       if (PythonUnitTestUtil.isUnitTestCaseFunction(node)) return;
       final PyClass containingClass = node.getContainingClass();
       if (containingClass != null && PythonUnitTestUtil.isUnitTestCaseClass(containingClass)) return;
@@ -57,7 +54,7 @@ public abstract class PyBaseDocstringInspection extends PyInspection {
     }
 
     @Override
-    public void visitPyClass(@NotNull PyClass node) {
+    public final void visitPyClass(@NotNull PyClass node) {
       if (PythonUnitTestUtil.isUnitTestCaseClass(node)) return;
       final String name = node.getName();
       if (name == null || name.startsWith("_")) {
@@ -66,12 +63,6 @@ public abstract class PyBaseDocstringInspection extends PyInspection {
       checkDocString(node);
     }
 
-    protected void checkDocString(@NotNull PyDocStringOwner node) {
-      for (PyInspectionExtension extension : Extensions.getExtensions(PyInspectionExtension.EP_NAME)) {
-        if (extension.ignoreMissingDocstring(node)) {
-          return;
-        }
-      }
-    }
+    protected abstract void checkDocString(@NotNull PyDocStringOwner node);
   }
 }
index 4d4359a796c59414f26662b21ba4e483239ef238..350bba6f906cbba72ff4d4dd59268764d3deca1e 100644 (file)
@@ -38,44 +38,39 @@ import java.util.Map;
 public class PyIncorrectDocstringInspection extends PyBaseDocstringInspection {
   @NotNull
   @Override
-  public Visitor buildVisitor(@NotNull ProblemsHolder holder,
-                              boolean isOnTheFly,
-                              @NotNull LocalInspectionToolSession session) {
+  public Visitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session) {
     return new Visitor(holder, session) {
 
       @Override
       protected void checkDocString(@NotNull PyDocStringOwner node) {
-        super.checkDocString(node);
-        final PyStringLiteralExpression docStringExpression1 = node.getDocStringExpression();
-        if (docStringExpression1 != null) {
-          checkParameters(node, docStringExpression1);
+        final PyStringLiteralExpression docstringExpr = node.getDocStringExpression();
+        if (docstringExpr != null) {
+          checkParameters(node, docstringExpr);
         }
       }
 
-      private boolean checkParameters(@NotNull PyDocStringOwner pyDocStringOwner, @NotNull PyStringLiteralExpression node) {
+      private void checkParameters(@NotNull PyDocStringOwner pyDocStringOwner, @NotNull PyStringLiteralExpression node) {
         final String text = node.getText();
         if (text == null) {
-          return false;
+          return;
         }
 
         final StructuredDocString docString = DocStringUtil.parse(text, node);
 
         if (docString instanceof PlainDocString) {
-          return false;
+          return;
         }
 
         if (pyDocStringOwner instanceof PyFunction) {
           final PyParameter[] realParams = ((PyFunction)pyDocStringOwner).getParameterList().getParameters();
 
           final List<PyNamedParameter> missingParams = getMissingParams(docString, realParams);
-          boolean registered = false;
           if (!missingParams.isEmpty()) {
             for (PyNamedParameter param : missingParams) {
               registerProblem(param, 
                               PyBundle.message("INSP.missing.parameter.in.docstring", param.getName()), 
                               new DocstringQuickFix(param, null));
             }
-            registered = true;
           }
           final List<Substring> unexpectedParams = getUnexpectedParams(docString, realParams);
           if (!unexpectedParams.isEmpty()) {
@@ -88,11 +83,8 @@ public class PyIncorrectDocstringInspection extends PyBaseDocstringInspection {
                                        new DocstringQuickFix(null, param.getValue()));
               }
             }
-            registered = true;
           }
-          return registered;
         }
-        return false;
       }
     };
   }
index 18dc367886ecd69ea6ff992ecb9a87c5b58b69a4..f11cc1c3b8dc89126ce3fc3f2933dea33448771d 100644 (file)
@@ -18,6 +18,7 @@ package com.jetbrains.python.inspections;
 import com.intellij.codeInspection.LocalInspectionToolSession;
 import com.intellij.codeInspection.ProblemsHolder;
 import com.intellij.lang.ASTNode;
+import com.intellij.openapi.extensions.Extensions;
 import com.intellij.openapi.util.TextRange;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElement;
@@ -32,15 +33,17 @@ import org.jetbrains.annotations.NotNull;
 public class PyMissingOrEmptyDocstringInspection extends PyBaseDocstringInspection {
   @NotNull
   @Override
-  public Visitor buildVisitor(@NotNull ProblemsHolder holder,
-                              boolean isOnTheFly,
-                              @NotNull LocalInspectionToolSession session) {
+  public Visitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session) {
     return new Visitor(holder, session) {
       @Override
       protected void checkDocString(@NotNull PyDocStringOwner node) {
-        super.checkDocString(node);
         final PyStringLiteralExpression docStringExpression = node.getDocStringExpression();
         if (docStringExpression == null) {
+          for (PyInspectionExtension extension : Extensions.getExtensions(PyInspectionExtension.EP_NAME)) {
+            if (extension.ignoreMissingDocstring(node)) {
+              return;
+            }
+          }
           PsiElement marker = null;
           if (node instanceof PyClass) {
             final ASTNode n = ((PyClass)node).getNameNode();