github / github/codeql

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

未关闭
#7,256 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
false-positive not security Python
主要语言
CodeQL
星标
10.1k
派生
2.1k
平均合并
2 天 15 小时
30 天内合并 PR
141

描述

**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

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。