Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py

branch
Py2 comp.
changeset 3178
f25fc1364c88
parent 3161
06f57a834adf
parent 3165
400234200cd6
child 3456
96232974dcdb
--- a/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py	Wed Jan 01 14:39:32 2014 +0100
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py	Sun Jan 05 23:22:17 2014 +0100
@@ -112,7 +112,7 @@
         "D101", "D102", "D103", "D104", "D105",
         "D111", "D112", "D113",
         "D121", "D122",
-        "D131", "D132", "D133", "D134",
+        "D130", "D131", "D132", "D133", "D134",
         "D141", "D142", "D143", "D144", "D145",
         
         "D203", "D205",
@@ -149,6 +149,8 @@
             "DocStyleChecker", "one-liner docstring on multiple lines"),
         "D122": QT_TRANSLATE_NOOP(
             "DocStyleChecker", "docstring has wrong indentation"),
+        "D130": QT_TRANSLATE_NOOP(
+            "DocStyleChecker", "docstring does not contain a summary"),
         "D131": QT_TRANSLATE_NOOP(
             "DocStyleChecker", "docstring summary does not end with a period"),
         "D132": QT_TRANSLATE_NOOP(
@@ -314,6 +316,7 @@
                     (self.__checkUnicode, ("D113",)),
                     (self.__checkOneLiner, ("D121",)),
                     (self.__checkIndent, ("D122",)),
+                    (self.__checkSummary, ("D130")),
                     (self.__checkEndsWithPeriod, ("D131",)),
                     (self.__checkBlankAfterSummary, ("D144",)),
                     (self.__checkBlankAfterLastParagraph, ("D145",)),
@@ -349,6 +352,7 @@
                     (self.__checkBackslashes, ("D112",)),
                     (self.__checkUnicode, ("D113",)),
                     (self.__checkIndent, ("D122",)),
+                    (self.__checkSummary, ("D130")),
                     (self.__checkEricEndsWithPeriod, ("D231",)),
                     (self.__checkEricBlankAfterSummary, ("D246",)),
                     (self.__checkEricNBlankAfterLastParagraph, ("D247",)),
@@ -940,6 +944,20 @@
         if indent != expectedIndent:
             self.__error(docstringContext.start(), 0, "D122")
     
+    def __checkSummary(self, docstringContext, context):
+        """
+        Private method to check, that docstring summaries contain some text.
+        
+        @param docstringContext docstring context (DocStyleContext)
+        @param context context of the docstring (DocStyleContext)
+        """
+        if docstringContext is None:
+            return
+        
+        summary, lineNumber = self.__getSummaryLine(docstringContext)
+        if summary == "":
+            self.__error(docstringContext.start() + lineNumber, 0, "D130")
+    
     def __checkEndsWithPeriod(self, docstringContext, context):
         """
         Private method to check, that docstring summaries end with a period.
@@ -966,9 +984,10 @@
             return
         
         summary, lineNumber = self.__getSummaryLine(docstringContext)
-        firstWord = summary.strip().split()[0]
-        if firstWord.endswith("s") and not firstWord.endswith("ss"):
-            self.__error(docstringContext.start() + lineNumber, 0, "D132")
+        if summary:
+            firstWord = summary.strip().split()[0]
+            if firstWord.endswith("s") and not firstWord.endswith("ss"):
+                self.__error(docstringContext.start() + lineNumber, 0, "D132")
     
     def __checkNoSignature(self, docstringContext, context):
         """
@@ -1141,14 +1160,16 @@
             return
         
         summaryLines, lineNumber = self.__getSummaryLines(docstringContext)
-        if summaryLines[-1].lstrip().startswith("@"):
-            summaryLines.pop(-1)
-        summary = " ".join([s.strip() for s in summaryLines if s])
-        if not summary.endswith(".") and \
-                not summary.split(None, 1)[0].lower() == "constructor":
-            self.__error(
-                docstringContext.start() + lineNumber + len(summaryLines) - 1,
-                0, "D231")
+        if summaryLines:
+            if summaryLines[-1].lstrip().startswith("@"):
+                summaryLines.pop(-1)
+            summary = " ".join([s.strip() for s in summaryLines if s])
+            if summary and not summary.endswith(".") and \
+                    not summary.split(None, 1)[0].lower() == "constructor":
+                self.__error(
+                    docstringContext.start() + lineNumber +
+                    len(summaryLines) - 1,
+                    0, "D231")
     
     def __checkEricReturn(self, docstringContext, context):
         """

eric ide

mercurial