From 32c7e52a24358761e05f5fb60f3f202a490d7e8f Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 16 Dec 2015 18:12:50 +0300 Subject: [PATCH] PY-18010 Don't warn of missing parameters if none of them is mentioned in a docstring It should help to reduce visual noise from "Incorrect docstring" inspection keeping it enabled by default at the same time. --- .../PyIncorrectDocstringInspection.html | 3 ++- .../python/inspections/PyIncorrectDocstringInspection.java | 5 +++++ python/testData/inspections/DocstringParams2.py | 6 ++++-- python/testData/inspections/DocstringParams2_after.py | 3 ++- python/testData/inspections/GoogleDocStringAddParam.py | 4 +++- .../testData/inspections/GoogleDocStringAddParam_after.py | 3 ++- .../inspections/GoogleDocstringParametersInspection/test.py | 5 +++++ .../inspections/PyDocstringParametersInspection/test.py | 5 +++++ 8 files changed, 28 insertions(+), 6 deletions(-) diff --git a/python/resources/inspectionDescriptions/PyIncorrectDocstringInspection.html b/python/resources/inspectionDescriptions/PyIncorrectDocstringInspection.html index 8c99992a005c..923a7b981995 100644 --- a/python/resources/inspectionDescriptions/PyIncorrectDocstringInspection.html +++ b/python/resources/inspectionDescriptions/PyIncorrectDocstringInspection.html @@ -1,7 +1,8 @@ - This inspection detects mismatched parameters in docstring. + This inspection detects mismatched parameters in a docstring. + Please note that it doesn't warn you of missing parameters, if none of them is mentioned in a docstring. \ No newline at end of file diff --git a/python/src/com/jetbrains/python/inspections/PyIncorrectDocstringInspection.java b/python/src/com/jetbrains/python/inspections/PyIncorrectDocstringInspection.java index fa3e2baae971..8419463c9135 100644 --- a/python/src/com/jetbrains/python/inspections/PyIncorrectDocstringInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyIncorrectDocstringInspection.java @@ -28,6 +28,7 @@ import com.jetbrains.python.toolbox.Substring; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -89,6 +90,10 @@ public class PyIncorrectDocstringInspection extends PyBaseDocstringInspection { private static List getMissingParams(@NotNull StructuredDocString docString, @NotNull PyParameter[] realParams) { final List missing = new ArrayList(); final List docStringParameters = docString.getParameters(); + if (docStringParameters.isEmpty()) { + return Collections.emptyList(); + } + for (PyParameter p : realParams) { final PyNamedParameter named = as(p, PyNamedParameter.class); if (p.isSelf() || named == null || named.isPositionalContainer() || named.isKeywordContainer()) { diff --git a/python/testData/inspections/DocstringParams2.py b/python/testData/inspections/DocstringParams2.py index ca4536e7a8ea..b105b636271c 100644 --- a/python/testData/inspections/DocstringParams2.py +++ b/python/testData/inspections/DocstringParams2.py @@ -1,4 +1,6 @@ """ file's docstring """ -def spam(ham): # <== PyCharm suggests to apply quickfix there - """Docstring""" +def spam(ham, eggs): # <== PyCharm suggests to apply quickfix there + """Docstring + @param eggs: + """ pass \ No newline at end of file diff --git a/python/testData/inspections/DocstringParams2_after.py b/python/testData/inspections/DocstringParams2_after.py index 70405dcdcc7d..2c33618e09f2 100644 --- a/python/testData/inspections/DocstringParams2_after.py +++ b/python/testData/inspections/DocstringParams2_after.py @@ -1,6 +1,7 @@ """ file's docstring """ -def spam(ham): # <== PyCharm suggests to apply quickfix there +def spam(ham, eggs): # <== PyCharm suggests to apply quickfix there """Docstring @param ham: + @param eggs: """ pass \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringAddParam.py b/python/testData/inspections/GoogleDocStringAddParam.py index c8814bdf9daa..7cb6a4857656 100644 --- a/python/testData/inspections/GoogleDocStringAddParam.py +++ b/python/testData/inspections/GoogleDocStringAddParam.py @@ -1,3 +1,5 @@ -def f(b): +def f(a, b): """ + Args: + a """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringAddParam_after.py b/python/testData/inspections/GoogleDocStringAddParam_after.py index 921473a44d2d..b1c71814ff37 100644 --- a/python/testData/inspections/GoogleDocStringAddParam_after.py +++ b/python/testData/inspections/GoogleDocStringAddParam_after.py @@ -1,5 +1,6 @@ -def f(b): +def f(a, b): """ Args: b: + a """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocstringParametersInspection/test.py b/python/testData/inspections/GoogleDocstringParametersInspection/test.py index 10dfba309e79..4d7ef722d11e 100644 --- a/python/testData/inspections/GoogleDocstringParametersInspection/test.py +++ b/python/testData/inspections/GoogleDocstringParametersInspection/test.py @@ -65,4 +65,9 @@ def varagrs_undefined(x, *args, y, **kwargs): x: y: """ + + +def no_parameters_declared(x, y): + """ + """ diff --git a/python/testData/inspections/PyDocstringParametersInspection/test.py b/python/testData/inspections/PyDocstringParametersInspection/test.py index 2a2ba202fee5..8a630144d06a 100644 --- a/python/testData/inspections/PyDocstringParametersInspection/test.py +++ b/python/testData/inspections/PyDocstringParametersInspection/test.py @@ -49,3 +49,8 @@ def varargs_undefined(x, *args, y, **kwargs): @param y: """ pass + + +def no_parameters_declared(x, y): + """ + """