Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py

changeset 3582
49f9c3695ef5
parent 3539
0c2dc1446ebf
child 3585
f09a457c83fe
--- a/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py	Sat May 17 10:39:44 2014 +0200
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py	Sat May 17 11:25:53 2014 +0200
@@ -111,7 +111,7 @@
         
         "D203", "D205",
         "D221", "D222",
-        "D231", "D234", "D235", "D236", "D237", "D238", "D239",
+        "D231", "D232", "D234", "D235", "D236", "D237", "D238", "D239",
         "D242", "D243", "D244", "D245", "D246", "D247",
         "D250", "D251",
         
@@ -208,6 +208,7 @@
                      ("D242", "D243")),
                 ],
                 "methodDocstring": [
+                    (self.__checkEricSummary, ("D232")),
                 ],
                 "defDocstring": [
                     (self.__checkFunctionDocstring, ("D102", "D203")),
@@ -1211,3 +1212,38 @@
         
         if not docstrings[-2].strip():
             self.__error(docstringContext.end(), 0, "D247")
+    
+    def __checkEricSummary(self, docstringContext, context):
+        """
+        Private method to check, that method docstring summaries start with
+        specific words.
+        
+        @param docstringContext docstring context (DocStyleContext)
+        @param context context of the docstring (DocStyleContext)
+        """
+        if docstringContext is None:
+            return
+        
+        summary, lineNumber = self.__getSummaryLine(docstringContext)
+        if summary:
+            # check, if the first word is 'Constructor', 'Public',
+            # 'Protected' or 'Private'
+            functionName = context.source()[0].lstrip().split()[1]\
+                .split("(")[0]
+            firstWord = summary.strip().split(None, 1)[0].lower()
+            if functionName == '__init__':
+                if firstWord != 'constructor':
+                    self.__error(docstringContext.start() + lineNumber, 0,
+                                 "D232", 'constructor')
+            elif functionName.startswith('__'):
+                if firstWord != 'private':
+                    self.__error(docstringContext.start() + lineNumber, 0,
+                                 "D232", 'private')
+            elif functionName.startswith('_'):
+                if firstWord != 'protected':
+                    self.__error(docstringContext.start() + lineNumber, 0,
+                             "D232", 'protected')
+            else:
+                if firstWord != 'public':
+                    self.__error(docstringContext.start() + lineNumber, 0,
+                                 "D232", 'public')

eric ide

mercurial