False Negative - Python `abc.ABC` makes method's `getACall` unavailable
- 主要言語
- CodeQL
- スター
- 10.1k
- フォーク
- 2.1k
- 平均マージ
- 2日 15時間
- マージ済み PR(30日)
- 141
説明
If we have this Python code:
```python
class MyClass():
def method(self):
print("xxx")
def wrapper(self):
self.method()
mc = MyClass()
mc.method()
```
and this query:
```codeql
import python
from PythonFunctionValue method
select method.getACall()
```
It's OK that `self.method()` and `mc.method()` will be marked as positive.
However, those will be false negative as long as the class `MyClass` inherits `abc.ABC`. It looks like:
```python
from abc import ABC
class MyClass(ABC):
def method(self):
print("xxx")
def wrapper(self):
self.method()
mc = MyClass()
mc.method()
```
Why does the `abc.ABC` make the result wrong?
コントリビューションガイド
調査の方向性
Reproduce the two Python examples and run the shown CodeQL query importing PythonFunctionValue. Compare whether getACall() reports method calls with and without abc.ABC inheritance, then inspect the Python library behavior responsible for the difference. Done means the query consistently recognizes the calls in both examples or the issue documents the supported limitation.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100