We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
GitCommitBear: Change ``returns`` to ``return``
[line](https://github.com/coala-analyzer/coala-bears/blob/master/bears/vcs/git/GitCommitBear.py#L147)
difficulty/newcomer


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `bears/vcs/git/GitCommitBear.py`
Content:
```
1 import nltk
2 import re
3 import shutil
4 import os
5 
6 from coalib.bears.GlobalBear import GlobalBear
7 from coalib.bears.requirements.PipRequirement import PipRequirement
8 from coalib.misc.ContextManagers import change_directory
9 from coalib.misc.Shell import run_shell_command
10 from coalib.results.Result import Result
11 from coalib.results.RESULT_SEVERITY import RESULT_SEVERITY
12 from coalib.settings.FunctionMetadata import FunctionMetadata
13 from coalib.settings.Setting import typed_list
14 
15 
16 class GitCommitBear(GlobalBear):
17     LANGUAGES = {"Git"}
18     REQUIREMENTS = {PipRequirement('nltk', '3.1.*')}
19     AUTHORS = {'The coala developers'}
20     AUTHORS_EMAILS = {'coala-devel@googlegroups.com'}
21     LICENSE = 'AGPL-3.0'
22     ASCIINEMA_URL = 'https://asciinema.org/a/e146c9739ojhr8396wedsvf0d'
23     CAN_DETECT = {'Formatting'}
24 
25     @classmethod
26     def check_prerequisites(cls):
27         if shutil.which("git") is None:
28             return "git is not installed."
29         else:
30             return True
31 
32     @classmethod
33     def get_shortlog_checks_metadata(cls):
34         return FunctionMetadata.from_function(
35             cls.check_shortlog,
36             omit={"self", "shortlog"})
37 
38     @classmethod
39     def get_body_checks_metadata(cls):
40         return FunctionMetadata.from_function(
41             cls.check_body,
42             omit={"self", "body"})
43 
44     @classmethod
45     def get_metadata(cls):
46         return FunctionMetadata.merge(
47             FunctionMetadata.from_function(
48                 cls.run,
49                 omit={"self", "dependency_results"}),
50             cls.get_shortlog_checks_metadata(),
51             cls.get_body_checks_metadata())
52 
53     def run(self, allow_empty_commit_message: bool = False, **kwargs):
54         """
55         Check the current git commit message at HEAD.
56 
57         This bear ensures automatically that the shortlog and body do not
58         exceed a given line-length and that a newline lies between them.
59 
60         :param allow_empty_commit_message: Whether empty commit messages are
61                                            allowed or not.
62         """
63         with change_directory(self.get_config_dir() or os.getcwd()):
64             stdout, stderr = run_shell_command("git log -1 --pretty=%B")
65 
66         if stderr:
67             self.err("git:", repr(stderr))
68             return
69 
70         stdout = stdout.rstrip("\n").splitlines()
71 
72         if len(stdout) == 0:
73             if not allow_empty_commit_message:
74                 yield Result(self, "HEAD commit has no message.")
75             return
76 
77         yield from self.check_shortlog(
78             stdout[0],
79             **self.get_shortlog_checks_metadata().filter_parameters(kwargs))
80         yield from self.check_body(
81             stdout[1:],
82             **self.get_body_checks_metadata().filter_parameters(kwargs))
83 
84     def check_shortlog(self, shortlog,
85                        shortlog_length: int=50,
86                        shortlog_regex: str="",
87                        shortlog_trailing_period: bool=None,
88                        shortlog_imperative_check: bool=True,
89                        shortlog_wip_check: bool=True):
90         """
91         Checks the given shortlog.
92 
93         :param shortlog:                 The shortlog message string.
94         :param shortlog_length:          The maximum length of the shortlog.
95                                          The newline character at end does not
96                                          count to the length.
97         :param regex:                    A regex to check the shortlog with.
98         :param shortlog_trailing_period: Whether a dot shall be enforced at end
99                                          end or not (or ``None`` for "don't
100                                          care").
101         :param shortlog_wip_check:       Whether a "WIP" in the shortlog text
102                                          should yield a result or not.
103         """
104         diff = len(shortlog) - shortlog_length
105         if diff > 0:
106             yield Result(self,
107                          "Shortlog of the HEAD commit contains {} "
108                          "character(s). This is {} character(s) longer than "
109                          "the limit ({} > {}).".format(
110                               len(shortlog), diff,
111                               len(shortlog), shortlog_length))
112 
113         if (shortlog[-1] != ".") == shortlog_trailing_period:
114             yield Result(self,
115                          "Shortlog of HEAD commit contains no period at end."
116                          if shortlog_trailing_period else
117                          "Shortlog of HEAD commit contains a period at end.")
118 
119         if shortlog_regex:
120             match = re.fullmatch(shortlog_regex, shortlog)
121             if not match:
122                 yield Result(
123                     self,
124                     "Shortlog of HEAD commit does not match given regex:"
125                     " {regex}".format(regex=shortlog_regex))
126 
127         if shortlog_imperative_check:
128             colon_pos = shortlog.find(':')
129             shortlog = (shortlog[colon_pos + 1:]
130                         if colon_pos != -1
131                         else shortlog)
132             has_flaws = self.check_imperative(shortlog)
133             if has_flaws:
134                 bad_word = has_flaws[0]
135                 yield Result(self,
136                              "Shortlog of HEAD commit isn't in imperative "
137                              "mood! Bad words are '{}'".format(bad_word))
138         if shortlog_wip_check:
139             if "wip" in shortlog.lower()[:4]:
140                 yield Result(
141                     self,
142                     "This commit seems to be marked as work in progress and "
143                     "should not be used in production. Treat carefully.")
144 
145     def check_imperative(self, paragraph):
146         """
147         Check the given sentence/s for Imperatives.
148 
149         :param paragraph:
150             The input paragraph to be tested.
151         :returns:
152             A list of tuples having 2 elements (invalid word, parts of speech)
153             or an empty list if no invalid words are found.
154         """
155         try:
156             words = nltk.word_tokenize(nltk.sent_tokenize(paragraph)[0])
157             # VBZ : Verb, 3rd person singular present, like 'adds', 'writes'
158             #       etc
159             # VBD : Verb, Past tense , like 'added', 'wrote' etc
160             # VBG : Verb, Present participle, like 'adding', 'writing'
161             word, tag = nltk.pos_tag(['I'] + words)[1:2][0]
162             if(tag.startswith('VBZ') or
163                tag.startswith('VBD') or
164                tag.startswith('VBG') or
165                word.endswith('ing')):  # Handle special case for VBG
166                 return (word, tag)
167             else:
168                 return None
169         except LookupError as error:  # pragma: no cover
170             self.err("NLTK data missing, install by running following "
171                      "commands `python3 -m nltk.downloader punkt"
172                      " maxent_treebank_pos_tagger averaged_perceptron_tagger`")
173             return
174 
175     def check_body(self, body,
176                    body_line_length: int=72,
177                    force_body: bool=False,
178                    ignore_length_regex: typed_list(str)=()):
179         """
180         Checks the given commit body.
181 
182         :param body:                The commit body splitted by lines.
183         :param body_line_length:    The maximum line-length of the body. The
184                                     newline character at each line end does not
185                                     count to the length.
186         :param force_body:          Whether a body shall exist or not.
187         :param ignore_length_regex: Lines matching each of the regular
188                                     expressions in this list will be ignored.
189         """
190         if len(body) == 0:
191             if force_body:
192                 yield Result(self, "No commit message body at HEAD.")
193             return
194 
195         if body[0] != "":
196             yield Result(self, "No newline found between shortlog and body at "
197                                "HEAD commit. Please add one.")
198             return
199 
200         ignore_regexes = [re.compile(regex) for regex in ignore_length_regex]
201         if any((len(line) > body_line_length and
202                 not any(regex.search(line) for regex in ignore_regexes))
203                for line in body[1:]):
204             yield Result(self, "Body of HEAD commit contains too long lines. "
205                                "Commit body lines should not exceed {} "
206                                "characters.".format(body_line_length))
207
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/bears/vcs/git/GitCommitBear.py b/bears/vcs/git/GitCommitBear.py
--- a/bears/vcs/git/GitCommitBear.py
+++ b/bears/vcs/git/GitCommitBear.py
@@ -148,7 +148,7 @@
 
         :param paragraph:
             The input paragraph to be tested.
-        :returns:
+        :return:
             A list of tuples having 2 elements (invalid word, parts of speech)
             or an empty list if no invalid words are found.
         """

{"golden_diff": "diff --git a/bears/vcs/git/GitCommitBear.py b/bears/vcs/git/GitCommitBear.py\n--- a/bears/vcs/git/GitCommitBear.py\n+++ b/bears/vcs/git/GitCommitBear.py\n@@ -148,7 +148,7 @@\n \n         :param paragraph:\n             The input paragraph to be tested.\n-        :returns:\n+        :return:\n             A list of tuples having 2 elements (invalid word, parts of speech)\n             or an empty list if no invalid words are found.\n         \"\"\"\n", "issue": "GitCommitBear: Change ``returns`` to ``return``\n[line](https://github.com/coala-analyzer/coala-bears/blob/master/bears/vcs/git/GitCommitBear.py#L147)\ndifficulty/newcomer\n\n", "before_files": [{"content": "import nltk\nimport re\nimport shutil\nimport os\n\nfrom coalib.bears.GlobalBear import GlobalBear\nfrom coalib.bears.requirements.PipRequirement import PipRequirement\nfrom coalib.misc.ContextManagers import change_directory\nfrom coalib.misc.Shell import run_shell_command\nfrom coalib.results.Result import Result\nfrom coalib.results.RESULT_SEVERITY import RESULT_SEVERITY\nfrom coalib.settings.FunctionMetadata import FunctionMetadata\nfrom coalib.settings.Setting import typed_list\n\n\nclass GitCommitBear(GlobalBear):\n    LANGUAGES = {\"Git\"}\n    REQUIREMENTS = {PipRequirement('nltk', '3.1.*')}\n    AUTHORS = {'The coala developers'}\n    AUTHORS_EMAILS = {'coala-devel@googlegroups.com'}\n    LICENSE = 'AGPL-3.0'\n    ASCIINEMA_URL = 'https://asciinema.org/a/e146c9739ojhr8396wedsvf0d'\n    CAN_DETECT = {'Formatting'}\n\n    @classmethod\n    def check_prerequisites(cls):\n        if shutil.which(\"git\") is None:\n            return \"git is not installed.\"\n        else:\n            return True\n\n    @classmethod\n    def get_shortlog_checks_metadata(cls):\n        return FunctionMetadata.from_function(\n            cls.check_shortlog,\n            omit={\"self\", \"shortlog\"})\n\n    @classmethod\n    def get_body_checks_metadata(cls):\n        return FunctionMetadata.from_function(\n            cls.check_body,\n            omit={\"self\", \"body\"})\n\n    @classmethod\n    def get_metadata(cls):\n        return FunctionMetadata.merge(\n            FunctionMetadata.from_function(\n                cls.run,\n                omit={\"self\", \"dependency_results\"}),\n            cls.get_shortlog_checks_metadata(),\n            cls.get_body_checks_metadata())\n\n    def run(self, allow_empty_commit_message: bool = False, **kwargs):\n        \"\"\"\n        Check the current git commit message at HEAD.\n\n        This bear ensures automatically that the shortlog and body do not\n        exceed a given line-length and that a newline lies between them.\n\n        :param allow_empty_commit_message: Whether empty commit messages are\n                                           allowed or not.\n        \"\"\"\n        with change_directory(self.get_config_dir() or os.getcwd()):\n            stdout, stderr = run_shell_command(\"git log -1 --pretty=%B\")\n\n        if stderr:\n            self.err(\"git:\", repr(stderr))\n            return\n\n        stdout = stdout.rstrip(\"\\n\").splitlines()\n\n        if len(stdout) == 0:\n            if not allow_empty_commit_message:\n                yield Result(self, \"HEAD commit has no message.\")\n            return\n\n        yield from self.check_shortlog(\n            stdout[0],\n            **self.get_shortlog_checks_metadata().filter_parameters(kwargs))\n        yield from self.check_body(\n            stdout[1:],\n            **self.get_body_checks_metadata().filter_parameters(kwargs))\n\n    def check_shortlog(self, shortlog,\n                       shortlog_length: int=50,\n                       shortlog_regex: str=\"\",\n                       shortlog_trailing_period: bool=None,\n                       shortlog_imperative_check: bool=True,\n                       shortlog_wip_check: bool=True):\n        \"\"\"\n        Checks the given shortlog.\n\n        :param shortlog:                 The shortlog message string.\n        :param shortlog_length:          The maximum length of the shortlog.\n                                         The newline character at end does not\n                                         count to the length.\n        :param regex:                    A regex to check the shortlog with.\n        :param shortlog_trailing_period: Whether a dot shall be enforced at end\n                                         end or not (or ``None`` for \"don't\n                                         care\").\n        :param shortlog_wip_check:       Whether a \"WIP\" in the shortlog text\n                                         should yield a result or not.\n        \"\"\"\n        diff = len(shortlog) - shortlog_length\n        if diff > 0:\n            yield Result(self,\n                         \"Shortlog of the HEAD commit contains {} \"\n                         \"character(s). This is {} character(s) longer than \"\n                         \"the limit ({} > {}).\".format(\n                              len(shortlog), diff,\n                              len(shortlog), shortlog_length))\n\n        if (shortlog[-1] != \".\") == shortlog_trailing_period:\n            yield Result(self,\n                         \"Shortlog of HEAD commit contains no period at end.\"\n                         if shortlog_trailing_period else\n                         \"Shortlog of HEAD commit contains a period at end.\")\n\n        if shortlog_regex:\n            match = re.fullmatch(shortlog_regex, shortlog)\n            if not match:\n                yield Result(\n                    self,\n                    \"Shortlog of HEAD commit does not match given regex:\"\n                    \" {regex}\".format(regex=shortlog_regex))\n\n        if shortlog_imperative_check:\n            colon_pos = shortlog.find(':')\n            shortlog = (shortlog[colon_pos + 1:]\n                        if colon_pos != -1\n                        else shortlog)\n            has_flaws = self.check_imperative(shortlog)\n            if has_flaws:\n                bad_word = has_flaws[0]\n                yield Result(self,\n                             \"Shortlog of HEAD commit isn't in imperative \"\n                             \"mood! Bad words are '{}'\".format(bad_word))\n        if shortlog_wip_check:\n            if \"wip\" in shortlog.lower()[:4]:\n                yield Result(\n                    self,\n                    \"This commit seems to be marked as work in progress and \"\n                    \"should not be used in production. Treat carefully.\")\n\n    def check_imperative(self, paragraph):\n        \"\"\"\n        Check the given sentence/s for Imperatives.\n\n        :param paragraph:\n            The input paragraph to be tested.\n        :returns:\n            A list of tuples having 2 elements (invalid word, parts of speech)\n            or an empty list if no invalid words are found.\n        \"\"\"\n        try:\n            words = nltk.word_tokenize(nltk.sent_tokenize(paragraph)[0])\n            # VBZ : Verb, 3rd person singular present, like 'adds', 'writes'\n            #       etc\n            # VBD : Verb, Past tense , like 'added', 'wrote' etc\n            # VBG : Verb, Present participle, like 'adding', 'writing'\n            word, tag = nltk.pos_tag(['I'] + words)[1:2][0]\n            if(tag.startswith('VBZ') or\n               tag.startswith('VBD') or\n               tag.startswith('VBG') or\n               word.endswith('ing')):  # Handle special case for VBG\n                return (word, tag)\n            else:\n                return None\n        except LookupError as error:  # pragma: no cover\n            self.err(\"NLTK data missing, install by running following \"\n                     \"commands `python3 -m nltk.downloader punkt\"\n                     \" maxent_treebank_pos_tagger averaged_perceptron_tagger`\")\n            return\n\n    def check_body(self, body,\n                   body_line_length: int=72,\n                   force_body: bool=False,\n                   ignore_length_regex: typed_list(str)=()):\n        \"\"\"\n        Checks the given commit body.\n\n        :param body:                The commit body splitted by lines.\n        :param body_line_length:    The maximum line-length of the body. The\n                                    newline character at each line end does not\n                                    count to the length.\n        :param force_body:          Whether a body shall exist or not.\n        :param ignore_length_regex: Lines matching each of the regular\n                                    expressions in this list will be ignored.\n        \"\"\"\n        if len(body) == 0:\n            if force_body:\n                yield Result(self, \"No commit message body at HEAD.\")\n            return\n\n        if body[0] != \"\":\n            yield Result(self, \"No newline found between shortlog and body at \"\n                               \"HEAD commit. Please add one.\")\n            return\n\n        ignore_regexes = [re.compile(regex) for regex in ignore_length_regex]\n        if any((len(line) > body_line_length and\n                not any(regex.search(line) for regex in ignore_regexes))\n               for line in body[1:]):\n            yield Result(self, \"Body of HEAD commit contains too long lines. \"\n                               \"Commit body lines should not exceed {} \"\n                               \"characters.\".format(body_line_length))\n", "path": "bears/vcs/git/GitCommitBear.py"}], "after_files": [{"content": "import nltk\nimport re\nimport shutil\nimport os\n\nfrom coalib.bears.GlobalBear import GlobalBear\nfrom coalib.bears.requirements.PipRequirement import PipRequirement\nfrom coalib.misc.ContextManagers import change_directory\nfrom coalib.misc.Shell import run_shell_command\nfrom coalib.results.Result import Result\nfrom coalib.results.RESULT_SEVERITY import RESULT_SEVERITY\nfrom coalib.settings.FunctionMetadata import FunctionMetadata\nfrom coalib.settings.Setting import typed_list\n\n\nclass GitCommitBear(GlobalBear):\n    LANGUAGES = {\"Git\"}\n    REQUIREMENTS = {PipRequirement('nltk', '3.1.*')}\n    AUTHORS = {'The coala developers'}\n    AUTHORS_EMAILS = {'coala-devel@googlegroups.com'}\n    LICENSE = 'AGPL-3.0'\n    ASCIINEMA_URL = 'https://asciinema.org/a/e146c9739ojhr8396wedsvf0d'\n    CAN_DETECT = {'Formatting'}\n\n    @classmethod\n    def check_prerequisites(cls):\n        if shutil.which(\"git\") is None:\n            return \"git is not installed.\"\n        else:\n            return True\n\n    @classmethod\n    def get_shortlog_checks_metadata(cls):\n        return FunctionMetadata.from_function(\n            cls.check_shortlog,\n            omit={\"self\", \"shortlog\"})\n\n    @classmethod\n    def get_body_checks_metadata(cls):\n        return FunctionMetadata.from_function(\n            cls.check_body,\n            omit={\"self\", \"body\"})\n\n    @classmethod\n    def get_metadata(cls):\n        return FunctionMetadata.merge(\n            FunctionMetadata.from_function(\n                cls.run,\n                omit={\"self\", \"dependency_results\"}),\n            cls.get_shortlog_checks_metadata(),\n            cls.get_body_checks_metadata())\n\n    def run(self, allow_empty_commit_message: bool = False, **kwargs):\n        \"\"\"\n        Check the current git commit message at HEAD.\n\n        This bear ensures automatically that the shortlog and body do not\n        exceed a given line-length and that a newline lies between them.\n\n        :param allow_empty_commit_message: Whether empty commit messages are\n                                           allowed or not.\n        \"\"\"\n        with change_directory(self.get_config_dir() or os.getcwd()):\n            stdout, stderr = run_shell_command(\"git log -1 --pretty=%B\")\n\n        if stderr:\n            self.err(\"git:\", repr(stderr))\n            return\n\n        stdout = stdout.rstrip(\"\\n\").splitlines()\n\n        if len(stdout) == 0:\n            if not allow_empty_commit_message:\n                yield Result(self, \"HEAD commit has no message.\")\n            return\n\n        yield from self.check_shortlog(\n            stdout[0],\n            **self.get_shortlog_checks_metadata().filter_parameters(kwargs))\n        yield from self.check_body(\n            stdout[1:],\n            **self.get_body_checks_metadata().filter_parameters(kwargs))\n\n    def check_shortlog(self, shortlog,\n                       shortlog_length: int=50,\n                       shortlog_regex: str=\"\",\n                       shortlog_trailing_period: bool=None,\n                       shortlog_imperative_check: bool=True,\n                       shortlog_wip_check: bool=True):\n        \"\"\"\n        Checks the given shortlog.\n\n        :param shortlog:                 The shortlog message string.\n        :param shortlog_length:          The maximum length of the shortlog.\n                                         The newline character at end does not\n                                         count to the length.\n        :param regex:                    A regex to check the shortlog with.\n        :param shortlog_trailing_period: Whether a dot shall be enforced at end\n                                         end or not (or ``None`` for \"don't\n                                         care\").\n        :param shortlog_wip_check:       Whether a \"WIP\" in the shortlog text\n                                         should yield a result or not.\n        \"\"\"\n        diff = len(shortlog) - shortlog_length\n        if diff > 0:\n            yield Result(self,\n                         \"Shortlog of the HEAD commit contains {} \"\n                         \"character(s). This is {} character(s) longer than \"\n                         \"the limit ({} > {}).\".format(\n                              len(shortlog), diff,\n                              len(shortlog), shortlog_length))\n\n        if (shortlog[-1] != \".\") == shortlog_trailing_period:\n            yield Result(self,\n                         \"Shortlog of HEAD commit contains no period at end.\"\n                         if shortlog_trailing_period else\n                         \"Shortlog of HEAD commit contains a period at end.\")\n\n        if shortlog_regex:\n            match = re.fullmatch(shortlog_regex, shortlog)\n            if not match:\n                yield Result(\n                    self,\n                    \"Shortlog of HEAD commit does not match given regex:\"\n                    \" {regex}\".format(regex=shortlog_regex))\n\n        if shortlog_imperative_check:\n            colon_pos = shortlog.find(':')\n            shortlog = (shortlog[colon_pos + 1:]\n                        if colon_pos != -1\n                        else shortlog)\n            has_flaws = self.check_imperative(shortlog)\n            if has_flaws:\n                bad_word = has_flaws[0]\n                yield Result(self,\n                             \"Shortlog of HEAD commit isn't in imperative \"\n                             \"mood! Bad words are '{}'\".format(bad_word))\n        if shortlog_wip_check:\n            if \"wip\" in shortlog.lower()[:4]:\n                yield Result(\n                    self,\n                    \"This commit seems to be marked as work in progress and \"\n                    \"should not be used in production. Treat carefully.\")\n\n    def check_imperative(self, paragraph):\n        \"\"\"\n        Check the given sentence/s for Imperatives.\n\n        :param paragraph:\n            The input paragraph to be tested.\n        :return:\n            A list of tuples having 2 elements (invalid word, parts of speech)\n            or an empty list if no invalid words are found.\n        \"\"\"\n        try:\n            words = nltk.word_tokenize(nltk.sent_tokenize(paragraph)[0])\n            # VBZ : Verb, 3rd person singular present, like 'adds', 'writes'\n            #       etc\n            # VBD : Verb, Past tense , like 'added', 'wrote' etc\n            # VBG : Verb, Present participle, like 'adding', 'writing'\n            word, tag = nltk.pos_tag(['I'] + words)[1:2][0]\n            if(tag.startswith('VBZ') or\n               tag.startswith('VBD') or\n               tag.startswith('VBG') or\n               word.endswith('ing')):  # Handle special case for VBG\n                return (word, tag)\n            else:\n                return None\n        except LookupError as error:  # pragma: no cover\n            self.err(\"NLTK data missing, install by running following \"\n                     \"commands `python3 -m nltk.downloader punkt\"\n                     \" maxent_treebank_pos_tagger averaged_perceptron_tagger`\")\n            return\n\n    def check_body(self, body,\n                   body_line_length: int=72,\n                   force_body: bool=False,\n                   ignore_length_regex: typed_list(str)=()):\n        \"\"\"\n        Checks the given commit body.\n\n        :param body:                The commit body splitted by lines.\n        :param body_line_length:    The maximum line-length of the body. The\n                                    newline character at each line end does not\n                                    count to the length.\n        :param force_body:          Whether a body shall exist or not.\n        :param ignore_length_regex: Lines matching each of the regular\n                                    expressions in this list will be ignored.\n        \"\"\"\n        if len(body) == 0:\n            if force_body:\n                yield Result(self, \"No commit message body at HEAD.\")\n            return\n\n        if body[0] != \"\":\n            yield Result(self, \"No newline found between shortlog and body at \"\n                               \"HEAD commit. Please add one.\")\n            return\n\n        ignore_regexes = [re.compile(regex) for regex in ignore_length_regex]\n        if any((len(line) > body_line_length and\n                not any(regex.search(line) for regex in ignore_regexes))\n               for line in body[1:]):\n            yield Result(self, \"Body of HEAD commit contains too long lines. \"\n                               \"Commit body lines should not exceed {} \"\n                               \"characters.\".format(body_line_length))\n", "path": "bears/vcs/git/GitCommitBear.py"}]}