LGTM.com - false positive when raising Optional guarded by flag
- 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
Đánh giá
Issue này chưa được đánh giá.