github / github/codeql

False Negative - Python `abc.ABC` makes method's `getACall` unavailable

Abierto
#18,725 3 comentarios 0 reacciones 0 asignados Ver en GitHub
question
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 18 h
PR fusionados (30 d)
152

Descripción

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?

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Reproduce los dos ejemplos de Python y ejecuta la consulta de CodeQL mostrada que importa PythonFunctionValue. Compara si getACall() informa de llamadas a métodos con y sin herencia de abc.ABC y, a continuación, inspecciona el comportamiento de la biblioteca de Python responsable de la diferencia. Se considera completado cuando la consulta reconoce sistemáticamente las llamadas en ambos ejemplos o el issue documenta la limitación admitida.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
devtools
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.