github / github/codeql

LGTM.com - false positive: py/unreachable-statement after context manager with while True loop

Open
#7,256 1 comment 0 reactions 0 assignees View on GitHub
false-positive not security Python
Dominant language
CodeQL
Stars
10.1k
Forks
2.1k
Avg merge
2d 15h
Merged PRs (30d)
141

Description

**Description of the false positive**

The code looks like this:

```python
with trio.CancelScope() as cscope:
task_status.started(cscope)

while True:
# ...
await trio.sleep(0.5)

do_more_things() # This code is marked as unreachable
```

A trio `Cancelled` exception is expected to break out of the loop, and then be caught by the `CancelScope` being used as a context manager. Trio's `CancelScope` is also used to build other context managers like `with trio.move_on_after(5):`, which implements a timeout by raising a `Cancelled` error and then catching it.

See also the discussion on #2351 - it's not only `contextlib.suppress` that can catch exceptions.

**URL to the alert on the project page on LGTM.com**

https://lgtm.com/projects/g/European-XFEL/sfollow/snapshot/2b50fa3bd622a5ed2dd5bf12948cee0174d55faa/files/sfollow/sfollow.py?sort=name&dir=ASC&mode=heatmap#x7fd2565924064ca:1

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.