[Python-de] Fehler vor Ausführung finden

Christopher Arndt chris at chrisarndt.de
So Jan 27 13:44:39 EST 2019


Am 27.01.19 um 18:57 schrieb Michael S.:
> Heute wieder einmal einen Fehler entdeckt, wo ich von "self.State"
> gelesen habe, statt von "State". "self.State" gab es gar nicht, wird
> nirgends angelegt und nie verwendet. Das war einfach falsch
> runtergeschrieben.

Diesen Fehler hätte z.B. "pylint" gefunden:

https://github.com/PyCQA/pylint

> Offenbar analysiert Python den Code vor Ausführung
> nicht tief genug, um sowas zu entdecken.

Die dynamische Natur von Python macht so etwas schwierig. Z.B. lassen
sich Attribute zu Klassen und Instanzen problemlos während der Laufzeit
hinzufügen und nicht nur von Code, der in der Klasse "lebt". Dabei muss
nicht mal der Name des Attributs als Identifier im Code auftauchen:

    class Foo:
        pass

    f = Foo()
    setattr(Foo, '\x73\x70\x61\x6d\x6d', 'ham')
    print(f.spamm)

Da ist es für eine Code-Analyzer schwer nachzuvollziehen, dass 'spamm'
in der letzten Zeile ein valider Attributwert ist.


Chris


Mehr Informationen über die Mailingliste python-de