Skip to content

Commit a787940

Browse files
[basic checker] Add the confidence for 'unreachable' (#7216)
1 parent 2da790a commit a787940

11 files changed

+43
-43
lines changed

pylint/checkers/base/basic_checker.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -738,19 +738,19 @@ def _check_unreachable(
738738
self, node: nodes.Return | nodes.Continue | nodes.Break | nodes.Raise
739739
) -> None:
740740
"""Check unreachable code."""
741-
unreach_stmt = node.next_sibling()
742-
if unreach_stmt is not None:
741+
unreachable_statement = node.next_sibling()
742+
if unreachable_statement is not None:
743743
if (
744744
isinstance(node, nodes.Return)
745-
and isinstance(unreach_stmt, nodes.Expr)
746-
and isinstance(unreach_stmt.value, nodes.Yield)
745+
and isinstance(unreachable_statement, nodes.Expr)
746+
and isinstance(unreachable_statement.value, nodes.Yield)
747747
):
748748
# Don't add 'unreachable' for empty generators.
749749
# Only add warning if 'yield' is followed by another node.
750-
unreach_stmt = unreach_stmt.next_sibling()
751-
if unreach_stmt is None:
750+
unreachable_statement = unreachable_statement.next_sibling()
751+
if unreachable_statement is None:
752752
return
753-
self.add_message("unreachable", node=unreach_stmt)
753+
self.add_message("unreachable", node=unreachable_statement, confidence=HIGH)
754754

755755
def _check_not_in_finally(
756756
self,

tests/functional/ext/docparams/parameter/missing_param_doc_required_Sphinx.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ inconsistent-return-statements:237:0:237:41:test_finds_kwargs_without_type_sphin
3030
inconsistent-return-statements:256:0:256:39:test_finds_args_without_type_sphinx:Either all return statements in a function should return an expression, or none of them should.:UNDEFINED
3131
inconsistent-return-statements:274:0:274:41:test_finds_kwargs_without_type_sphinx:Either all return statements in a function should return an expression, or none of them should.:UNDEFINED
3232
missing-raises-doc:299:4:299:11:Foo.foo:"""AttributeError"" not documented as being raised":HIGH
33-
unreachable:325:8:325:17:Foo.foo:Unreachable code:UNDEFINED
33+
unreachable:325:8:325:17:Foo.foo:Unreachable code:HIGH
3434
missing-param-doc:328:4:328:11:Foo.foo:"""value"" missing in parameter documentation":HIGH
3535
missing-raises-doc:328:4:328:11:Foo.foo:"""AttributeError"" not documented as being raised":HIGH
3636
missing-type-doc:328:4:328:11:Foo.foo:"""value"" missing in parameter type documentation":HIGH
37-
unreachable:364:8:364:17:Foo.foo:Unreachable code:UNDEFINED
37+
unreachable:364:8:364:17:Foo.foo:Unreachable code:HIGH
3838
useless-param-doc:368:4:368:55:Foo.test_useless_docs_ignored_argument_names_sphinx:"""_, _ignored"" useless ignored parameter documentation":HIGH
3939
useless-type-doc:368:4:368:55:Foo.test_useless_docs_ignored_argument_names_sphinx:"""_"" useless ignored parameter type documentation":HIGH
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
unreachable:25:4:25:25:test_ignores_raise_uninferable:Unreachable code:UNDEFINED
1+
unreachable:25:4:25:25:test_ignores_raise_uninferable:Unreachable code:HIGH
22
missing-raises-doc:28:0:28:45:test_ignores_returns_from_inner_functions:"""RuntimeError"" not documented as being raised":HIGH
3-
unreachable:42:4:42:25:test_ignores_returns_from_inner_functions:Unreachable code:UNDEFINED
3+
unreachable:42:4:42:25:test_ignores_returns_from_inner_functions:Unreachable code:HIGH
44
raising-bad-type:54:4:54:22:test_ignores_returns_use_only_names:Raising int while only classes or instances are allowed:UNDEFINED
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
missing-raises-doc:6:0:6:35:test_find_missing_google_raises:"""RuntimeError"" not documented as being raised":HIGH
2-
unreachable:13:4:13:25:test_find_missing_google_raises:Unreachable code:UNDEFINED
2+
unreachable:13:4:13:25:test_find_missing_google_raises:Unreachable code:HIGH
33
missing-raises-doc:38:0:38:46:test_find_valid_missing_google_attr_raises:"""error"" not documented as being raised":HIGH
4-
unreachable:83:4:83:25:test_find_all_google_raises:Unreachable code:UNDEFINED
5-
unreachable:94:4:94:25:test_find_multiple_google_raises:Unreachable code:UNDEFINED
6-
unreachable:95:4:95:30:test_find_multiple_google_raises:Unreachable code:UNDEFINED
7-
unreachable:96:4:96:27:test_find_multiple_google_raises:Unreachable code:UNDEFINED
4+
unreachable:83:4:83:25:test_find_all_google_raises:Unreachable code:HIGH
5+
unreachable:94:4:94:25:test_find_multiple_google_raises:Unreachable code:HIGH
6+
unreachable:95:4:95:30:test_find_multiple_google_raises:Unreachable code:HIGH
7+
unreachable:96:4:96:27:test_find_multiple_google_raises:Unreachable code:HIGH
88
missing-raises-doc:99:0:99:36:test_find_rethrown_google_raises:"""RuntimeError"" not documented as being raised":HIGH
99
missing-raises-doc:113:0:113:45:test_find_rethrown_google_multiple_raises:"""RuntimeError, ValueError"" not documented as being raised":HIGH
1010
missing-raises-doc:148:4:148:18:Foo.foo_method:"""AttributeError"" not documented as being raised":HIGH
11-
unreachable:158:8:158:17:Foo.foo_method:Unreachable code:UNDEFINED
12-
unreachable:180:8:180:17:Foo.foo_method:Unreachable code:UNDEFINED
11+
unreachable:158:8:158:17:Foo.foo_method:Unreachable code:HIGH
12+
unreachable:180:8:180:17:Foo.foo_method:Unreachable code:HIGH
1313
missing-raises-doc:183:4:183:18:Foo.foo_method:"""AttributeError"" not documented as being raised":HIGH
1414
using-constant-test:190:11:190:15:Foo.foo_method:Using a conditional statement with a constant value:INFERENCE
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
missing-raises-doc:11:0:11:34:test_find_missing_numpy_raises:"""RuntimeError"" not documented as being raised":HIGH
2-
unreachable:20:4:20:25:test_find_missing_numpy_raises:Unreachable code:UNDEFINED
3-
unreachable:34:4:34:25:test_find_all_numpy_raises:Unreachable code:UNDEFINED
2+
unreachable:20:4:20:25:test_find_missing_numpy_raises:Unreachable code:HIGH
3+
unreachable:34:4:34:25:test_find_all_numpy_raises:Unreachable code:HIGH
44
missing-raises-doc:37:0:37:35:test_find_rethrown_numpy_raises:"""RuntimeError"" not documented as being raised":HIGH
55
missing-raises-doc:53:0:53:44:test_find_rethrown_numpy_multiple_raises:"""RuntimeError, ValueError"" not documented as being raised":HIGH
66
missing-raises-doc:111:0:111:45:test_find_valid_missing_numpy_attr_raises:"""error"" not documented as being raised":HIGH
77
missing-raises-doc:146:4:146:11:Foo.foo:"""AttributeError"" not documented as being raised":HIGH
8-
unreachable:158:8:158:17:Foo.foo:Unreachable code:UNDEFINED
9-
unreachable:182:8:182:17:Foo.foo:Unreachable code:UNDEFINED
8+
unreachable:158:8:158:17:Foo.foo:Unreachable code:HIGH
9+
unreachable:182:8:182:17:Foo.foo:Unreachable code:HIGH
1010
missing-raises-doc:185:4:185:11:Foo.foo:"""AttributeError"" not documented as being raised":HIGH
11-
unreachable:215:8:215:17:Foo.foo:Unreachable code:UNDEFINED
11+
unreachable:215:8:215:17:Foo.foo:Unreachable code:HIGH
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
missing-raises-doc:7:0:7:35:test_find_missing_sphinx_raises:"""RuntimeError"" not documented as being raised":HIGH
2-
unreachable:13:4:13:25:test_find_missing_sphinx_raises:Unreachable code:UNDEFINED
3-
unreachable:36:4:36:25:test_find_all_sphinx_raises:Unreachable code:UNDEFINED
4-
unreachable:37:4:37:30:test_find_all_sphinx_raises:Unreachable code:UNDEFINED
5-
unreachable:38:4:38:27:test_find_all_sphinx_raises:Unreachable code:UNDEFINED
6-
unreachable:48:4:48:25:test_find_multiple_sphinx_raises:Unreachable code:UNDEFINED
2+
unreachable:13:4:13:25:test_find_missing_sphinx_raises:Unreachable code:HIGH
3+
unreachable:36:4:36:25:test_find_all_sphinx_raises:Unreachable code:HIGH
4+
unreachable:37:4:37:30:test_find_all_sphinx_raises:Unreachable code:HIGH
5+
unreachable:38:4:38:27:test_find_all_sphinx_raises:Unreachable code:HIGH
6+
unreachable:48:4:48:25:test_find_multiple_sphinx_raises:Unreachable code:HIGH
77
missing-raises-doc:51:0:51:37:test_finds_rethrown_sphinx_raises:"""RuntimeError"" not documented as being raised":HIGH
88
missing-raises-doc:64:0:64:46:test_finds_rethrown_sphinx_multiple_raises:"""RuntimeError, ValueError"" not documented as being raised":HIGH
99
missing-raises-doc:90:0:90:55:test_find_missing_sphinx_raises_infer_from_instance:"""RuntimeError"" not documented as being raised":HIGH
10-
unreachable:97:4:97:25:test_find_missing_sphinx_raises_infer_from_instance:Unreachable code:UNDEFINED
10+
unreachable:97:4:97:25:test_find_missing_sphinx_raises_infer_from_instance:Unreachable code:HIGH
1111
missing-raises-doc:100:0:100:55:test_find_missing_sphinx_raises_infer_from_function:"""RuntimeError"" not documented as being raised":HIGH
12-
unreachable:110:4:110:25:test_find_missing_sphinx_raises_infer_from_function:Unreachable code:UNDEFINED
12+
unreachable:110:4:110:25:test_find_missing_sphinx_raises_infer_from_function:Unreachable code:HIGH
1313
missing-raises-doc:133:0:133:46:test_find_valid_missing_sphinx_attr_raises:"""error"" not documented as being raised":HIGH
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
redundant-returns-doc:43:0:43:11:my_func:Redundant returns documentation:HIGH
22
redundant-returns-doc:52:0:52:11:my_func:Redundant returns documentation:HIGH
33
redundant-returns-doc:61:0:61:11:my_func:Redundant returns documentation:HIGH
4-
unreachable:95:8:95:17:Foo.foo_method:Unreachable code:UNDEFINED
5-
unreachable:112:8:112:17:Foo.foo_method:Unreachable code:UNDEFINED
4+
unreachable:95:8:95:17:Foo.foo_method:Unreachable code:HIGH
5+
unreachable:112:8:112:17:Foo.foo_method:Unreachable code:HIGH
66
useless-param-doc:167:4:167:18:Foo.foo_method:"""_, _ignored"" useless ignored parameter documentation":HIGH
77
useless-type-doc:167:4:167:18:Foo.foo_method:"""_"" useless ignored parameter type documentation":HIGH

tests/functional/ext/docparams/return/missing_return_doc_required_Google.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ missing-return-doc:25:0:25:11:my_func:Missing return documentation:HIGH
44
missing-return-type-doc:25:0:25:11:my_func:Missing return type documentation:HIGH
55
missing-return-doc:34:0:34:11:my_func:Missing return documentation:HIGH
66
missing-return-type-doc:50:4:50:18:Foo.foo_method:Missing return type documentation:HIGH
7-
unreachable:57:8:57:17:Foo.foo_method:Unreachable code:UNDEFINED
7+
unreachable:57:8:57:17:Foo.foo_method:Unreachable code:HIGH
88
missing-return-doc:66:4:66:18:Foo.foo_method:Missing return documentation:HIGH
99
missing-return-type-doc:66:4:66:18:Foo.foo_method:Missing return type documentation:HIGH
10-
unreachable:74:8:74:17:Foo.foo_method:Unreachable code:UNDEFINED
10+
unreachable:74:8:74:17:Foo.foo_method:Unreachable code:HIGH

tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ missing-return-doc:22:0:22:11:my_func:Missing return documentation:HIGH
33
missing-return-type-doc:22:0:22:11:my_func:Missing return type documentation:HIGH
44
missing-return-doc:33:0:33:11:my_func:Missing return documentation:HIGH
55
missing-return-type-doc:50:4:50:16:Foo.foo_prop:Missing return type documentation:HIGH
6-
unreachable:59:8:59:17:Foo.foo_prop:Unreachable code:UNDEFINED
6+
unreachable:59:8:59:17:Foo.foo_prop:Unreachable code:HIGH
77
missing-return-doc:68:4:68:18:Foo.foo_method:Missing return documentation:HIGH
88
missing-return-type-doc:68:4:68:18:Foo.foo_method:Missing return type documentation:HIGH
9-
unreachable:78:8:78:17:Foo.foo_method:Unreachable code:UNDEFINED
9+
unreachable:78:8:78:17:Foo.foo_method:Unreachable code:HIGH
1010
missing-return-doc:87:4:87:18:Foo.foo_method:Missing return documentation:HIGH
11-
unreachable:97:8:97:17:Foo.foo_method:Unreachable code:UNDEFINED
11+
unreachable:97:8:97:17:Foo.foo_method:Unreachable code:HIGH

tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ missing-return-doc:32:0:32:31:warn_missing_sphinx_returns:Missing return documen
44
missing-return-type-doc:32:0:32:31:warn_missing_sphinx_returns:Missing return type documentation:HIGH
55
missing-return-doc:43:0:43:11:my_func:Missing return documentation:HIGH
66
missing-return-type-doc:58:4:58:11:Foo.foo:Missing return type documentation:HIGH
7-
unreachable:64:8:64:17:Foo.foo:Unreachable code:UNDEFINED
7+
unreachable:64:8:64:17:Foo.foo:Unreachable code:HIGH
88
missing-return-doc:72:4:72:52:Foo.test_ignores_non_property_return_type_sphinx:Missing return documentation:HIGH
99
missing-return-type-doc:72:4:72:52:Foo.test_ignores_non_property_return_type_sphinx:Missing return type documentation:HIGH

tests/functional/u/unreachable.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
unreachable:7:4:7:24:func1:Unreachable code:UNDEFINED
2-
unreachable:12:8:12:28:func2:Unreachable code:UNDEFINED
3-
unreachable:18:8:18:28:func3:Unreachable code:UNDEFINED
4-
unreachable:22:4:22:16:func4:Unreachable code:UNDEFINED
5-
unreachable:35:4:35:24:func6:Unreachable code:UNDEFINED
1+
unreachable:7:4:7:24:func1:Unreachable code:HIGH
2+
unreachable:12:8:12:28:func2:Unreachable code:HIGH
3+
unreachable:18:8:18:28:func3:Unreachable code:HIGH
4+
unreachable:22:4:22:16:func4:Unreachable code:HIGH
5+
unreachable:35:4:35:24:func6:Unreachable code:HIGH

0 commit comments

Comments
 (0)