We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
"not in UPPER_CASE_WITH_UNDERSCORES" should not apply to public/external constants
### Describe the issue:

`public`/`external` fields of a contract are exported as functions, so they are part of a public API, and Slither should not report the warning `not in UPPER_CASE_WITH_UNDERSCORES` if these fields are in lowercase.

### Code example to reproduce the issue:

```
contract A { uint256 public myVal; }
```

### Version:

0.8.3

### Relevant log output:

```shell
Constant A.myVal (contracts/A.sol#1) is not in UPPER_CASE_WITH_UNDERSCORES
```
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `slither/detectors/naming_convention/naming_convention.py`
Content:
```
1 import re
2 from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification
3 from slither.formatters.naming_convention.naming_convention import custom_format
4 
5 
6 class NamingConvention(AbstractDetector):
7     """
8     Check if naming conventions are followed
9     https://solidity.readthedocs.io/en/v0.4.25/style-guide.html?highlight=naming_convention%20convention#naming_convention-conventions
10 
11     Exceptions:
12     - Allow constant variables name/symbol/decimals to be lowercase (ERC20)
13     - Allow '_' at the beggining of the mixed_case match for private variables and unused parameters
14     - Ignore echidna properties (functions with names starting 'echidna_' or 'crytic_'
15     """
16 
17     ARGUMENT = "naming-convention"
18     HELP = "Conformity to Solidity naming conventions"
19     IMPACT = DetectorClassification.INFORMATIONAL
20     CONFIDENCE = DetectorClassification.HIGH
21 
22     WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions"
23 
24     WIKI_TITLE = "Conformance to Solidity naming conventions"
25 
26     # region wiki_description
27     WIKI_DESCRIPTION = """
28 Solidity defines a [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions) that should be followed.
29 #### Rule exceptions
30 - Allow constant variable name/symbol/decimals to be lowercase (`ERC20`).
31 - Allow `_` at the beginning of the `mixed_case` match for private variables and unused parameters."""
32     # endregion wiki_description
33 
34     WIKI_RECOMMENDATION = "Follow the Solidity [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions)."
35 
36     STANDARD_JSON = False
37 
38     @staticmethod
39     def is_cap_words(name):
40         return re.search("^[A-Z]([A-Za-z0-9]+)?_?$", name) is not None
41 
42     @staticmethod
43     def is_mixed_case(name):
44         return re.search("^[a-z]([A-Za-z0-9]+)?_?$", name) is not None
45 
46     @staticmethod
47     def is_mixed_case_with_underscore(name):
48         # Allow _ at the beginning to represent private variable
49         # or unused parameters
50         return re.search("^[_]?[a-z]([A-Za-z0-9]+)?_?$", name) is not None
51 
52     @staticmethod
53     def is_upper_case_with_underscores(name):
54         return re.search("^[A-Z0-9_]+_?$", name) is not None
55 
56     @staticmethod
57     def should_avoid_name(name):
58         return re.search("^[lOI]$", name) is not None
59 
60     def _detect(self):  # pylint: disable=too-many-branches,too-many-statements
61 
62         results = []
63         for contract in self.contracts:
64 
65             if not self.is_cap_words(contract.name):
66                 info = ["Contract ", contract, " is not in CapWords\n"]
67 
68                 res = self.generate_result(info)
69                 res.add(contract, {"target": "contract", "convention": "CapWords"})
70                 results.append(res)
71 
72             for struct in contract.structures_declared:
73                 if not self.is_cap_words(struct.name):
74                     info = ["Struct ", struct, " is not in CapWords\n"]
75 
76                     res = self.generate_result(info)
77                     res.add(struct, {"target": "structure", "convention": "CapWords"})
78                     results.append(res)
79 
80             for event in contract.events_declared:
81                 if not self.is_cap_words(event.name):
82                     info = ["Event ", event, " is not in CapWords\n"]
83 
84                     res = self.generate_result(info)
85                     res.add(event, {"target": "event", "convention": "CapWords"})
86                     results.append(res)
87 
88             for func in contract.functions_declared:
89                 if func.is_constructor:
90                     continue
91                 if not self.is_mixed_case(func.name):
92                     if func.visibility in [
93                         "internal",
94                         "private",
95                     ] and self.is_mixed_case_with_underscore(func.name):
96                         continue
97                     if func.name.startswith(("echidna_", "crytic_")):
98                         continue
99                     info = ["Function ", func, " is not in mixedCase\n"]
100 
101                     res = self.generate_result(info)
102                     res.add(func, {"target": "function", "convention": "mixedCase"})
103                     results.append(res)
104 
105                 for argument in func.parameters:
106                     # Ignore parameter names that are not specified i.e. empty strings
107                     if argument.name == "":
108                         continue
109                     if argument in func.variables_read_or_written:
110                         correct_naming = self.is_mixed_case(argument.name)
111                     else:
112                         correct_naming = self.is_mixed_case_with_underscore(argument.name)
113                     if not correct_naming:
114                         info = ["Parameter ", argument, " is not in mixedCase\n"]
115 
116                         res = self.generate_result(info)
117                         res.add(argument, {"target": "parameter", "convention": "mixedCase"})
118                         results.append(res)
119 
120             for var in contract.state_variables_declared:
121                 if self.should_avoid_name(var.name):
122                     info = [
123                         "Variable ",
124                         var,
125                         " is single letter l, O, or I, which should not be used\n",
126                     ]
127 
128                     res = self.generate_result(info)
129                     res.add(
130                         var,
131                         {
132                             "target": "variable",
133                             "convention": "l_O_I_should_not_be_used",
134                         },
135                     )
136                     results.append(res)
137 
138                 if var.is_constant is True:
139                     # For ERC20 compatibility
140                     if var.name in ["symbol", "name", "decimals"]:
141                         continue
142 
143                     if not self.is_upper_case_with_underscores(var.name):
144                         info = [
145                             "Constant ",
146                             var,
147                             " is not in UPPER_CASE_WITH_UNDERSCORES\n",
148                         ]
149 
150                         res = self.generate_result(info)
151                         res.add(
152                             var,
153                             {
154                                 "target": "variable_constant",
155                                 "convention": "UPPER_CASE_WITH_UNDERSCORES",
156                             },
157                         )
158                         results.append(res)
159 
160                 else:
161                     if var.visibility == "private":
162                         correct_naming = self.is_mixed_case_with_underscore(var.name)
163                     else:
164                         correct_naming = self.is_mixed_case(var.name)
165                     if not correct_naming:
166                         info = ["Variable ", var, " is not in mixedCase\n"]
167 
168                         res = self.generate_result(info)
169                         res.add(var, {"target": "variable", "convention": "mixedCase"})
170                         results.append(res)
171 
172             for enum in contract.enums_declared:
173                 if not self.is_cap_words(enum.name):
174                     info = ["Enum ", enum, " is not in CapWords\n"]
175 
176                     res = self.generate_result(info)
177                     res.add(enum, {"target": "enum", "convention": "CapWords"})
178                     results.append(res)
179 
180             for modifier in contract.modifiers_declared:
181                 if not self.is_mixed_case(modifier.name):
182                     info = ["Modifier ", modifier, " is not in mixedCase\n"]
183 
184                     res = self.generate_result(info)
185                     res.add(modifier, {"target": "modifier", "convention": "mixedCase"})
186                     results.append(res)
187 
188         return results
189 
190     @staticmethod
191     def _format(slither, result):
192         custom_format(slither, result)
193
```
--- 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/slither/detectors/naming_convention/naming_convention.py b/slither/detectors/naming_convention/naming_convention.py
--- a/slither/detectors/naming_convention/naming_convention.py
+++ b/slither/detectors/naming_convention/naming_convention.py
@@ -139,7 +139,8 @@
                     # For ERC20 compatibility
                     if var.name in ["symbol", "name", "decimals"]:
                         continue
-
+                    if var.visibility == "public":
+                        continue
                     if not self.is_upper_case_with_underscores(var.name):
                         info = [
                             "Constant ",

{"golden_diff": "diff --git a/slither/detectors/naming_convention/naming_convention.py b/slither/detectors/naming_convention/naming_convention.py\n--- a/slither/detectors/naming_convention/naming_convention.py\n+++ b/slither/detectors/naming_convention/naming_convention.py\n@@ -139,7 +139,8 @@\n                     # For ERC20 compatibility\n                     if var.name in [\"symbol\", \"name\", \"decimals\"]:\n                         continue\n-\n+                    if var.visibility == \"public\":\n+                        continue\n                     if not self.is_upper_case_with_underscores(var.name):\n                         info = [\n                             \"Constant \",\n", "issue": "\"not in UPPER_CASE_WITH_UNDERSCORES\" should not apply to public/external constants\n### Describe the issue:\r\n\r\n`public`/`external` fields of a contract are exported as functions, so they are part of a public API, and Slither should not report the warning `not in UPPER_CASE_WITH_UNDERSCORES` if these fields are in lowercase.\r\n\r\n### Code example to reproduce the issue:\r\n\r\n```\r\ncontract A { uint256 public myVal; }\r\n```\r\n\r\n### Version:\r\n\r\n0.8.3\r\n\r\n### Relevant log output:\r\n\r\n```shell\r\nConstant A.myVal (contracts/A.sol#1) is not in UPPER_CASE_WITH_UNDERSCORES\r\n```\r\n```\r\n\n", "before_files": [{"content": "import re\nfrom slither.detectors.abstract_detector import AbstractDetector, DetectorClassification\nfrom slither.formatters.naming_convention.naming_convention import custom_format\n\n\nclass NamingConvention(AbstractDetector):\n    \"\"\"\n    Check if naming conventions are followed\n    https://solidity.readthedocs.io/en/v0.4.25/style-guide.html?highlight=naming_convention%20convention#naming_convention-conventions\n\n    Exceptions:\n    - Allow constant variables name/symbol/decimals to be lowercase (ERC20)\n    - Allow '_' at the beggining of the mixed_case match for private variables and unused parameters\n    - Ignore echidna properties (functions with names starting 'echidna_' or 'crytic_'\n    \"\"\"\n\n    ARGUMENT = \"naming-convention\"\n    HELP = \"Conformity to Solidity naming conventions\"\n    IMPACT = DetectorClassification.INFORMATIONAL\n    CONFIDENCE = DetectorClassification.HIGH\n\n    WIKI = \"https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions\"\n\n    WIKI_TITLE = \"Conformance to Solidity naming conventions\"\n\n    # region wiki_description\n    WIKI_DESCRIPTION = \"\"\"\nSolidity defines a [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions) that should be followed.\n#### Rule exceptions\n- Allow constant variable name/symbol/decimals to be lowercase (`ERC20`).\n- Allow `_` at the beginning of the `mixed_case` match for private variables and unused parameters.\"\"\"\n    # endregion wiki_description\n\n    WIKI_RECOMMENDATION = \"Follow the Solidity [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions).\"\n\n    STANDARD_JSON = False\n\n    @staticmethod\n    def is_cap_words(name):\n        return re.search(\"^[A-Z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_mixed_case(name):\n        return re.search(\"^[a-z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_mixed_case_with_underscore(name):\n        # Allow _ at the beginning to represent private variable\n        # or unused parameters\n        return re.search(\"^[_]?[a-z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_upper_case_with_underscores(name):\n        return re.search(\"^[A-Z0-9_]+_?$\", name) is not None\n\n    @staticmethod\n    def should_avoid_name(name):\n        return re.search(\"^[lOI]$\", name) is not None\n\n    def _detect(self):  # pylint: disable=too-many-branches,too-many-statements\n\n        results = []\n        for contract in self.contracts:\n\n            if not self.is_cap_words(contract.name):\n                info = [\"Contract \", contract, \" is not in CapWords\\n\"]\n\n                res = self.generate_result(info)\n                res.add(contract, {\"target\": \"contract\", \"convention\": \"CapWords\"})\n                results.append(res)\n\n            for struct in contract.structures_declared:\n                if not self.is_cap_words(struct.name):\n                    info = [\"Struct \", struct, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(struct, {\"target\": \"structure\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for event in contract.events_declared:\n                if not self.is_cap_words(event.name):\n                    info = [\"Event \", event, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(event, {\"target\": \"event\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for func in contract.functions_declared:\n                if func.is_constructor:\n                    continue\n                if not self.is_mixed_case(func.name):\n                    if func.visibility in [\n                        \"internal\",\n                        \"private\",\n                    ] and self.is_mixed_case_with_underscore(func.name):\n                        continue\n                    if func.name.startswith((\"echidna_\", \"crytic_\")):\n                        continue\n                    info = [\"Function \", func, \" is not in mixedCase\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(func, {\"target\": \"function\", \"convention\": \"mixedCase\"})\n                    results.append(res)\n\n                for argument in func.parameters:\n                    # Ignore parameter names that are not specified i.e. empty strings\n                    if argument.name == \"\":\n                        continue\n                    if argument in func.variables_read_or_written:\n                        correct_naming = self.is_mixed_case(argument.name)\n                    else:\n                        correct_naming = self.is_mixed_case_with_underscore(argument.name)\n                    if not correct_naming:\n                        info = [\"Parameter \", argument, \" is not in mixedCase\\n\"]\n\n                        res = self.generate_result(info)\n                        res.add(argument, {\"target\": \"parameter\", \"convention\": \"mixedCase\"})\n                        results.append(res)\n\n            for var in contract.state_variables_declared:\n                if self.should_avoid_name(var.name):\n                    info = [\n                        \"Variable \",\n                        var,\n                        \" is single letter l, O, or I, which should not be used\\n\",\n                    ]\n\n                    res = self.generate_result(info)\n                    res.add(\n                        var,\n                        {\n                            \"target\": \"variable\",\n                            \"convention\": \"l_O_I_should_not_be_used\",\n                        },\n                    )\n                    results.append(res)\n\n                if var.is_constant is True:\n                    # For ERC20 compatibility\n                    if var.name in [\"symbol\", \"name\", \"decimals\"]:\n                        continue\n\n                    if not self.is_upper_case_with_underscores(var.name):\n                        info = [\n                            \"Constant \",\n                            var,\n                            \" is not in UPPER_CASE_WITH_UNDERSCORES\\n\",\n                        ]\n\n                        res = self.generate_result(info)\n                        res.add(\n                            var,\n                            {\n                                \"target\": \"variable_constant\",\n                                \"convention\": \"UPPER_CASE_WITH_UNDERSCORES\",\n                            },\n                        )\n                        results.append(res)\n\n                else:\n                    if var.visibility == \"private\":\n                        correct_naming = self.is_mixed_case_with_underscore(var.name)\n                    else:\n                        correct_naming = self.is_mixed_case(var.name)\n                    if not correct_naming:\n                        info = [\"Variable \", var, \" is not in mixedCase\\n\"]\n\n                        res = self.generate_result(info)\n                        res.add(var, {\"target\": \"variable\", \"convention\": \"mixedCase\"})\n                        results.append(res)\n\n            for enum in contract.enums_declared:\n                if not self.is_cap_words(enum.name):\n                    info = [\"Enum \", enum, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(enum, {\"target\": \"enum\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for modifier in contract.modifiers_declared:\n                if not self.is_mixed_case(modifier.name):\n                    info = [\"Modifier \", modifier, \" is not in mixedCase\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(modifier, {\"target\": \"modifier\", \"convention\": \"mixedCase\"})\n                    results.append(res)\n\n        return results\n\n    @staticmethod\n    def _format(slither, result):\n        custom_format(slither, result)\n", "path": "slither/detectors/naming_convention/naming_convention.py"}], "after_files": [{"content": "import re\nfrom slither.detectors.abstract_detector import AbstractDetector, DetectorClassification\nfrom slither.formatters.naming_convention.naming_convention import custom_format\n\n\nclass NamingConvention(AbstractDetector):\n    \"\"\"\n    Check if naming conventions are followed\n    https://solidity.readthedocs.io/en/v0.4.25/style-guide.html?highlight=naming_convention%20convention#naming_convention-conventions\n\n    Exceptions:\n    - Allow constant variables name/symbol/decimals to be lowercase (ERC20)\n    - Allow '_' at the beggining of the mixed_case match for private variables and unused parameters\n    - Ignore echidna properties (functions with names starting 'echidna_' or 'crytic_'\n    \"\"\"\n\n    ARGUMENT = \"naming-convention\"\n    HELP = \"Conformity to Solidity naming conventions\"\n    IMPACT = DetectorClassification.INFORMATIONAL\n    CONFIDENCE = DetectorClassification.HIGH\n\n    WIKI = \"https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions\"\n\n    WIKI_TITLE = \"Conformance to Solidity naming conventions\"\n\n    # region wiki_description\n    WIKI_DESCRIPTION = \"\"\"\nSolidity defines a [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions) that should be followed.\n#### Rule exceptions\n- Allow constant variable name/symbol/decimals to be lowercase (`ERC20`).\n- Allow `_` at the beginning of the `mixed_case` match for private variables and unused parameters.\"\"\"\n    # endregion wiki_description\n\n    WIKI_RECOMMENDATION = \"Follow the Solidity [naming convention](https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#naming-conventions).\"\n\n    STANDARD_JSON = False\n\n    @staticmethod\n    def is_cap_words(name):\n        return re.search(\"^[A-Z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_mixed_case(name):\n        return re.search(\"^[a-z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_mixed_case_with_underscore(name):\n        # Allow _ at the beginning to represent private variable\n        # or unused parameters\n        return re.search(\"^[_]?[a-z]([A-Za-z0-9]+)?_?$\", name) is not None\n\n    @staticmethod\n    def is_upper_case_with_underscores(name):\n        return re.search(\"^[A-Z0-9_]+_?$\", name) is not None\n\n    @staticmethod\n    def should_avoid_name(name):\n        return re.search(\"^[lOI]$\", name) is not None\n\n    def _detect(self):  # pylint: disable=too-many-branches,too-many-statements\n\n        results = []\n        for contract in self.contracts:\n\n            if not self.is_cap_words(contract.name):\n                info = [\"Contract \", contract, \" is not in CapWords\\n\"]\n\n                res = self.generate_result(info)\n                res.add(contract, {\"target\": \"contract\", \"convention\": \"CapWords\"})\n                results.append(res)\n\n            for struct in contract.structures_declared:\n                if not self.is_cap_words(struct.name):\n                    info = [\"Struct \", struct, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(struct, {\"target\": \"structure\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for event in contract.events_declared:\n                if not self.is_cap_words(event.name):\n                    info = [\"Event \", event, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(event, {\"target\": \"event\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for func in contract.functions_declared:\n                if func.is_constructor:\n                    continue\n                if not self.is_mixed_case(func.name):\n                    if func.visibility in [\n                        \"internal\",\n                        \"private\",\n                    ] and self.is_mixed_case_with_underscore(func.name):\n                        continue\n                    if func.name.startswith((\"echidna_\", \"crytic_\")):\n                        continue\n                    info = [\"Function \", func, \" is not in mixedCase\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(func, {\"target\": \"function\", \"convention\": \"mixedCase\"})\n                    results.append(res)\n\n                for argument in func.parameters:\n                    # Ignore parameter names that are not specified i.e. empty strings\n                    if argument.name == \"\":\n                        continue\n                    if argument in func.variables_read_or_written:\n                        correct_naming = self.is_mixed_case(argument.name)\n                    else:\n                        correct_naming = self.is_mixed_case_with_underscore(argument.name)\n                    if not correct_naming:\n                        info = [\"Parameter \", argument, \" is not in mixedCase\\n\"]\n\n                        res = self.generate_result(info)\n                        res.add(argument, {\"target\": \"parameter\", \"convention\": \"mixedCase\"})\n                        results.append(res)\n\n            for var in contract.state_variables_declared:\n                if self.should_avoid_name(var.name):\n                    info = [\n                        \"Variable \",\n                        var,\n                        \" is single letter l, O, or I, which should not be used\\n\",\n                    ]\n\n                    res = self.generate_result(info)\n                    res.add(\n                        var,\n                        {\n                            \"target\": \"variable\",\n                            \"convention\": \"l_O_I_should_not_be_used\",\n                        },\n                    )\n                    results.append(res)\n\n                if var.is_constant is True:\n                    # For ERC20 compatibility\n                    if var.name in [\"symbol\", \"name\", \"decimals\"]:\n                        continue\n                    if var.visibility == \"public\":\n                        continue\n                    if not self.is_upper_case_with_underscores(var.name):\n                        info = [\n                            \"Constant \",\n                            var,\n                            \" is not in UPPER_CASE_WITH_UNDERSCORES\\n\",\n                        ]\n\n                        res = self.generate_result(info)\n                        res.add(\n                            var,\n                            {\n                                \"target\": \"variable_constant\",\n                                \"convention\": \"UPPER_CASE_WITH_UNDERSCORES\",\n                            },\n                        )\n                        results.append(res)\n\n                else:\n                    if var.visibility == \"private\":\n                        correct_naming = self.is_mixed_case_with_underscore(var.name)\n                    else:\n                        correct_naming = self.is_mixed_case(var.name)\n                    if not correct_naming:\n                        info = [\"Variable \", var, \" is not in mixedCase\\n\"]\n\n                        res = self.generate_result(info)\n                        res.add(var, {\"target\": \"variable\", \"convention\": \"mixedCase\"})\n                        results.append(res)\n\n            for enum in contract.enums_declared:\n                if not self.is_cap_words(enum.name):\n                    info = [\"Enum \", enum, \" is not in CapWords\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(enum, {\"target\": \"enum\", \"convention\": \"CapWords\"})\n                    results.append(res)\n\n            for modifier in contract.modifiers_declared:\n                if not self.is_mixed_case(modifier.name):\n                    info = [\"Modifier \", modifier, \" is not in mixedCase\\n\"]\n\n                    res = self.generate_result(info)\n                    res.add(modifier, {\"target\": \"modifier\", \"convention\": \"mixedCase\"})\n                    results.append(res)\n\n        return results\n\n    @staticmethod\n    def _format(slither, result):\n        custom_format(slither, result)\n", "path": "slither/detectors/naming_convention/naming_convention.py"}]}