github / github/codeql

LGTM.com - false positive when raising Optional guarded by flag

Đang mở
#3,066 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
false-positive Python
Ngôn ngữ chính
CodeQL
Star
10.1k
Fork
2.1k
Merge trung bình
2 ngày 15 giờ
Pull request đã merge (30 ngày)
141

Mô tả

**Description of the false positive**

LGTM complains that the ``raise exc_val`` will raise a ``NoneType`` (which would be wrong indeed). However, the type is actually ``exc_val: Optional[BaseException]`` with a flag ``reraise_exc`` indicating whether ``exc_val`` is actually filled. The critical code section cannot be entered unless ``exc_val`` actually contains a valid value.

A simplified version of the code in question (unrelated parts removed) looks like this. Note that ``reraise_exc`` and ``exc_val`` are always set together.

```
reraise_exc = False
exc_type = exc_val = tb = ...
for callback in callbacks:
try:
if callback(exc_type, exc_val, tb):
reraise_exc = False
exc_type = exc_val = tb = None
except BaseException as exc:
reraise_exc = True
exc_type, exc_val, tb = type(exc), exc, exc.__traceback__
if reraise_exc:
raise exc_val
```

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

https://lgtm.com/projects/g/maxfischer2781/asyncstdlib/snapshot/0ad1b5599b80c4beae23cd5252c7a04203238fca/files/asyncstdlib/contextlib.py#x3f56861048e9ce14:1

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.