From b627ec802b8c131bf14e0bd6f7ad1e5cc4595894 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 28 Aug 2013 16:11:46 +0200 Subject: [PATCH] rename UnusedLocalFilter to PyInspectionExtension, added method for ignoring missing docstrings --- .../inspections/PyInspectionExtension.java | 20 +++++++++++++++++++ python/src/META-INF/python-plugin-common.xml | 4 ++-- .../inspections/PyDocstringInspection.java | 17 ++++++++++------ .../PyUnusedLocalInspectionVisitor.java | 4 ++-- .../python/inspections/UnusedLocalFilter.java | 13 ------------ 5 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 python/psi-api/src/com/jetbrains/python/inspections/PyInspectionExtension.java delete mode 100644 python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java diff --git a/python/psi-api/src/com/jetbrains/python/inspections/PyInspectionExtension.java b/python/psi-api/src/com/jetbrains/python/inspections/PyInspectionExtension.java new file mode 100644 index 000000000000..e553676d1b69 --- /dev/null +++ b/python/psi-api/src/com/jetbrains/python/inspections/PyInspectionExtension.java @@ -0,0 +1,20 @@ +package com.jetbrains.python.inspections; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.psi.PsiElement; +import com.jetbrains.python.psi.PyDocStringOwner; + +/** + * @author yole + */ +public abstract class PyInspectionExtension { + public static final ExtensionPointName EP_NAME = ExtensionPointName.create("Pythonid.inspectionExtension"); + + public boolean ignoreUnused(PsiElement local) { + return false; + } + + public boolean ignoreMissingDocstring(PyDocStringOwner docStringOwner) { + return false; + } +} diff --git a/python/src/META-INF/python-plugin-common.xml b/python/src/META-INF/python-plugin-common.xml index 19cef71a95a3..cccdce5c8079 100644 --- a/python/src/META-INF/python-plugin-common.xml +++ b/python/src/META-INF/python-plugin-common.xml @@ -892,7 +892,7 @@ - + @@ -945,7 +945,7 @@ - + diff --git a/python/src/com/jetbrains/python/inspections/PyDocstringInspection.java b/python/src/com/jetbrains/python/inspections/PyDocstringInspection.java index d417a01e66a3..277f7493350b 100644 --- a/python/src/com/jetbrains/python/inspections/PyDocstringInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyDocstringInspection.java @@ -8,16 +8,15 @@ import com.intellij.codeInspection.LocalInspectionToolSession; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.SuppressIntentionAction; 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; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; -import com.jetbrains.django.model.DjangoMeta; -import com.jetbrains.django.model.DjangoModel; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyNames; -import com.jetbrains.python.documentation.*; +import com.jetbrains.python.documentation.DocStringUtil; import com.jetbrains.python.inspections.quickfix.DocstringQuickFix; import com.jetbrains.python.inspections.quickfix.PySuppressInspectionFix; import com.jetbrains.python.psi.*; @@ -76,9 +75,15 @@ public class PyDocstringInspection extends PyInspection { public void visitPyClass(PyClass node) { if (PythonUnitTestUtil.isUnitTestCaseClass(node)) return; final String name = node.getName(); - final PyClass outerClass = PsiTreeUtil.getParentOfType(node, PyClass.class); - final boolean isDjangoMeta = DjangoModel.isDjangoModelDescendant(outerClass) && DjangoMeta.isMetaClass(node); - if (name != null && !name.startsWith("_") && !isDjangoMeta) checkDocString(node); + if (name == null || name.startsWith("_")) { + return; + } + for (PyInspectionExtension extension : Extensions.getExtensions(PyInspectionExtension.EP_NAME)) { + if (extension.ignoreMissingDocstring(node)) { + return; + } + } + checkDocString(node); } private void checkDocString(PyDocStringOwner node) { diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java index 601f3ee1d592..e2d5989bdcdf 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java @@ -211,7 +211,7 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { } void registerProblems() { - final UnusedLocalFilter[] filters = Extensions.getExtensions(UnusedLocalFilter.EP_NAME); + final PyInspectionExtension[] filters = Extensions.getExtensions(PyInspectionExtension.EP_NAME); // Register problems final Set functionsWithInheritors = new HashSet(); @@ -219,7 +219,7 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { for (PsiElement element : myUnusedElements) { boolean ignoreUnused = false; - for (UnusedLocalFilter filter : filters) { + for (PyInspectionExtension filter : filters) { if (filter.ignoreUnused(element)) { ignoreUnused = true; } diff --git a/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java b/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java deleted file mode 100644 index e977fac541d7..000000000000 --- a/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jetbrains.python.inspections; - -import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.psi.PsiElement; - -/** - * @author yole - */ -public interface UnusedLocalFilter { - ExtensionPointName EP_NAME = ExtensionPointName.create("Pythonid.unusedLocalFilter"); - - boolean ignoreUnused(PsiElement local); -}