Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5417 > unrolled thread
| Started by | "Michael S." <michaely@bigfoot.de> |
|---|---|
| First post | 2019-01-27 18:57 +0100 |
| Last post | 2019-04-18 09:06 +0200 |
| Articles | 12 — 10 participants |
Back to article view | Back to de.comp.lang.python
Fehler vor Ausführung finden "Michael S." <michaely@bigfoot.de> - 2019-01-27 18:57 +0100
Re: [Python-de] Fehler vor Ausführung finden Dinu Gherman <gherman@darwin.in-berlin.de> - 2019-01-27 19:25 +0100
Re: [Python-de] Fehler vor Ausführung finden Christopher Arndt <chris@chrisarndt.de> - 2019-01-27 19:44 +0100
Re: [Python-de] Fehler vor Ausführung finden "Michael S." <michaely@bigfoot.de> - 2019-01-27 23:10 +0100
Re: [Python-de] Fehler vor Ausführung finden Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2019-01-28 12:30 +0100
Re: [Python-de] Fehler vor Ausführung finden Raymond Czerny <chip@raymisoft.de> - 2019-05-01 20:58 +0200
Re: [Python-de] Fehler vor Ausführung finden Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2019-05-01 22:31 +0200
Re: [Python-de] Fehler vor Ausführung finden robert <robert@redcor.ch> - 2019-01-27 19:40 +0100
Re: Fehler vor Ausführung finden Christoph Brinkhaus <C.Brinkhaus@t-online.de> - 2019-01-28 19:47 +0000
Re: Fehler vor Ausführung finden Thomas Dreher <thodre@dustpuppy.ddns.net> - 2019-04-18 06:30 +0000
Re: [Python-de] Fehler vor Ausführung finden Reimar Bauer <rb.proj@gmail.com> - 2019-04-18 08:43 +0200
Re: [Python-de] Fehler vor Ausführung finden Frank Grellert <frank.grellert@gmail.com> - 2019-04-18 09:06 +0200
| From | "Michael S." <michaely@bigfoot.de> |
|---|---|
| Date | 2019-01-27 18:57 +0100 |
| Subject | Fehler vor Ausführung finden |
| Message-ID | <gb69o9F5uqU1@mid.individual.net> |
Hallo Leute, ich habe hier seit vielen Jahren einen Raspberry PI als Heizungsgregler eingesetzt. Alles ist in Python umgesetzt. Was mich nervt, ist, dass bestimmte Programmierfehler durch Python erst dann entdeckt werden, wenn die Programmausführung diesen Codeteil durchläuft. Das passiert teilweise aber extrem selten oder jahrelang auch mal nicht. 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. Offenbar analysiert Python den Code vor Ausführung nicht tief genug, um sowas zu entdecken. Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. Ich nutze Python bisher nur auf dem Raspberry PI ohne Entwicklungsumgebung. Code wird per Editor geschrieben, ausgeführt dann direkt in der Konsole. Michael
[toc] | [next] | [standalone]
| From | Dinu Gherman <gherman@darwin.in-berlin.de> |
|---|---|
| Date | 2019-01-27 19:25 +0100 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.386.1548613678.4816.python-de@python.org> |
| In reply to | #5417 |
Type Annotations in Python 3 könnten einiges in die Richtung abfangen. Dabei muss man aber einiges an Arbeit reinstecken, wenn die Codebasis groß ist. Man kann diese Annotations aber auch aus laufendem Code erzeugen (siehe MonkeyType), und sollte die dann aber auch manuell prüfen und ggf. korrigieren. Manche verbreiteten Typen sind aber nur umständlich, wenn überhaupt, zu beschreiben, z.B. ein Äquivalent zu JSON... Gruß, Dinu -- Sent on the move. Von unterwegs gesendet. > Am 27.01.2019 um 18:57 schrieb Michael S. <michaely@bigfoot.de>: > > Hallo Leute, > ich habe hier seit vielen Jahren einen Raspberry PI als Heizungsgregler eingesetzt. Alles ist in Python umgesetzt. > Was mich nervt, ist, dass bestimmte Programmierfehler durch Python erst dann entdeckt werden, wenn die Programmausführung diesen Codeteil durchläuft. Das passiert teilweise aber extrem selten oder jahrelang auch mal nicht. > 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. Offenbar analysiert Python den Code vor Ausführung nicht tief genug, um sowas zu entdecken. > > Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. > > Ich nutze Python bisher nur auf dem Raspberry PI ohne Entwicklungsumgebung. Code wird per Editor geschrieben, ausgeführt dann direkt in der Konsole. > > Michael > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de
[toc] | [prev] | [next] | [standalone]
| From | Christopher Arndt <chris@chrisarndt.de> |
|---|---|
| Date | 2019-01-27 19:44 +0100 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.387.1548614700.4816.python-de@python.org> |
| In reply to | #5417 |
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
[toc] | [prev] | [next] | [standalone]
| From | "Michael S." <michaely@bigfoot.de> |
|---|---|
| Date | 2019-01-27 23:10 +0100 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <gb6oijF3cntU1@mid.individual.net> |
| In reply to | #5419 |
Am 27.01.2019 um 19:44 schrieb Christopher Arndt: > 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: Soo, nach vielen Stunden ... Dem Raspberry habe ich schon seit Jahren kein Update mehr gegönnt, never Touch a running Heizung ... Deshalb lies sich pylint darauf nicht installieren, ohne dass ich vorher Updates fahre, was ich aber definitiv auf den Sommer schieben möchte. Also ein 2015er Lubuntu aus der VirtualBox hervorgekramt und versucht, pylint, da zu installieren. Fehlanzeige, System nicht aktuell. Allerdings auch zu alt, um ein Upgrade auf ein 2018er Lubuntu zu machen. Deshalb ne neue virtuelle Maschine aufgesetzt und aktuelles Lubuntu installiert. Darauf dann pylint und das Code-Verzeichnis des Raspberrys. pylint Main.py -> tausende Meldungen pylint Main.py -E -> nix Das dann mit allen eingebundenen py-Files einzeln gemacht und tatsächlich ist noch ein Fehler aufgetaucht. Kann man pylint auch sagen, dass es sich da selbst durchhangeln soll und alle Files, die importet sind, mitscannt? Michael
[toc] | [prev] | [next] | [standalone]
| From | Stefan Schwarzer <sschwarzer@sschwarzer.net> |
|---|---|
| Date | 2019-01-28 12:30 +0100 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.396.1548675043.4816.python-de@python.org> |
| In reply to | #5422 |
On 27/01/2019 23.10, Michael S. wrote: > Am 27.01.2019 um 19:44 schrieb Christopher Arndt: >> Am 27.01.19 um 18:57 schrieb Michael S.: > Deshalb ne neue virtuelle Maschine aufgesetzt und aktuelles Lubuntu > installiert. Darauf dann pylint und das Code-Verzeichnis des Raspberrys. > > pylint Main.py -> tausende Meldungen > pylint Main.py -E -> nix > > Das dann mit allen eingebundenen py-Files einzeln gemacht und > tatsächlich ist noch ein Fehler aufgetaucht. > > Kann man pylint auch sagen, dass es sich da selbst durchhangeln soll und > alle Files, die importet sind, mitscannt? Das weiß ich nicht, aber du kannst statt eines einzelnen Moduls ein Package angeben, in der Praxis also ein Verzeichnis. Pylint hier möchte eine `__init__.py` in dem Verzeichnis, kennt in der Hinsicht also keine Namespace Packages (PEP 420). Viele Grüße Stefan
[toc] | [prev] | [next] | [standalone]
| From | Raymond Czerny <chip@raymisoft.de> |
|---|---|
| Date | 2019-05-01 20:58 +0200 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <giu8ipFfps1U1@mid.individual.net> |
| In reply to | #5422 |
Nun, eine Syntaxprüfung allein ist nur ein Placebo, denn über das Verhalten von Funktionen erfährt man so nichts. Zu Qualitätssicherung sollte man testgetrieben entwickeln. Die trifft übrigens auf alle Programmiersprachen zu. Hierfür greift man am besten auf Testframeworks zurück, um das Verhalten aller Funktionen zu testen. Bei Unittest wird nicht nur das Verhalten auf gültige Eingabewerte geprüft, sondern auch die Fehlerverarbeitung mit mit ungültigen Werten. Siehe: https://wiki.python.org/moin/PyUnit Startet man diese Unittest bei jedem Entwicklungsschritt, erkennt man auch schnell Seiteneffekte: Änderung in Funktion A() ändert Verhalten von Funktion B(). Gruß Raymond Am 27.01.19 um 23:10 schrieb Michael S.: > Am 27.01.2019 um 19:44 schrieb Christopher Arndt: >> 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: > > Soo, nach vielen Stunden ... > Dem Raspberry habe ich schon seit Jahren kein Update mehr gegönnt, never > Touch a running Heizung ... > Deshalb lies sich pylint darauf nicht installieren, ohne dass ich vorher > Updates fahre, was ich aber definitiv auf den Sommer schieben möchte. > > Also ein 2015er Lubuntu aus der VirtualBox hervorgekramt und versucht, > pylint, da zu installieren. Fehlanzeige, System nicht aktuell. > Allerdings auch zu alt, um ein Upgrade auf ein 2018er Lubuntu zu machen. > > Deshalb ne neue virtuelle Maschine aufgesetzt und aktuelles Lubuntu > installiert. Darauf dann pylint und das Code-Verzeichnis des Raspberrys. > > pylint Main.py -> tausende Meldungen > pylint Main.py -E -> nix > > Das dann mit allen eingebundenen py-Files einzeln gemacht und > tatsächlich ist noch ein Fehler aufgetaucht. > > Kann man pylint auch sagen, dass es sich da selbst durchhangeln soll und > alle Files, die importet sind, mitscannt? > > Michael > >
[toc] | [prev] | [next] | [standalone]
| From | Stefan Schwarzer <sschwarzer@sschwarzer.net> |
|---|---|
| Date | 2019-05-01 22:31 +0200 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.82.1556742665.24672.python-de@python.org> |
| In reply to | #5476 |
On 01/05/2019 20.58, Raymond Czerny wrote: > Zu Qualitätssicherung sollte man testgetrieben entwickeln. > Die trifft übrigens auf alle Programmiersprachen zu. Ich finde testgetriebene Entwicklung vor allem dann sinnvoll, wenn man schon genau weiß, wo man hin will. Wenn ich noch mit dem Design experimentiere und Dinge noch während der Entwicklung hin- und herschiebe, schreibe ich noch keine Tests für diesen Code. Ich schreibe die Tests dann aber, wenn sich das Design einigermaßen stabilisiert hat. Ein Kompromiss ist unter Umständen, auch schon während einer solchen Design-Phase ein paar "High-Level-Tests", also eher Integrationstests zu schreiben, so dass man wenigstens ein bisschen Qualitätskontrolle hat. > Bei Unittest wird nicht nur das Verhalten auf gültige > Eingabewerte geprüft, sondern auch die Fehlerverarbeitung > mit mit ungültigen Werten. Wichtiger Hinweis, ja. :-) In dem Zusammenhang ist auch interessant, wenn es keine "falschen" Werte für einzelne Argumente gibt, sondern ein Fehler durch bestimmte Argument-Kombinationen zustandekommt. In dem Fall sollte man möglichst versuchen, das Design zu vereinfachen, so dass es möglichst keine "Querabhängigkeiten" zwischen Argumenten gibt bzw. sie unabhängig voneinander getestet werden können. Viele Grüße Stefan
[toc] | [prev] | [next] | [standalone]
| From | robert <robert@redcor.ch> |
|---|---|
| Date | 2019-01-27 19:40 +0100 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.388.1548615020.4816.python-de@python.org> |
| In reply to | #5417 |
>> Am 27.01.2019 um 18:57 schrieb Michael S. <michaely@bigfoot.de>: >> >> Hallo Leute, >> ich habe hier seit vielen Jahren einen Raspberry PI als Heizungsgregler eingesetzt. Alles ist in Python umgesetzt. >> Was mich nervt, ist, dass bestimmte Programmierfehler durch Python erst dann entdeckt werden, wenn die Programmausführung diesen Codeteil durchläuft. Das passiert teilweise aber extrem selten oder jahrelang auch mal nicht. >> 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. Offenbar analysiert Python den Code vor Ausführung nicht tief genug, um sowas zu entdecken. >> >> Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. Eine grosse Hilfe ist ein guter Editor mit Python und pylint Unterstützung. Z.B. vs code von Microsoft (opensource) Der hätte Dir bereits beim Schreiben des Codes zuverlässig angezeigt, dass State für self nicht definiert ist. robert >> >> Ich nutze Python bisher nur auf dem Raspberry PI ohne Entwicklungsumgebung. Code wird per Editor geschrieben, ausgeführt dann direkt in der Konsole. >> >> Michael >> _______________________________________________ >> python-de maillist - python-de@python.org >> https://mail.python.org/mailman/listinfo/python-de > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de
[toc] | [prev] | [next] | [standalone]
| From | Christoph Brinkhaus <C.Brinkhaus@t-online.de> |
|---|---|
| Date | 2019-01-28 19:47 +0000 |
| Message-ID | <q2nm8p$mee$1@tota-refugium.de> |
| In reply to | #5417 |
Michael S. <michaely@bigfoot.de> schrieb: Hallo Michael! > Hallo Leute, > ich habe hier seit vielen Jahren einen Raspberry PI als Heizungsgregler > eingesetzt. Alles ist in Python umgesetzt. > Was mich nervt, ist, dass bestimmte Programmierfehler durch Python erst > dann entdeckt werden, wenn die Programmausführung diesen Codeteil > durchläuft. Das passiert teilweise aber extrem selten oder jahrelang > auch mal nicht. > 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. Offenbar analysiert Python den Code vor Ausführung > nicht tief genug, um sowas zu entdecken. > > Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer > analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. Probier mal pylint aus. In dem oben beschriebenen Fall sollte pylint über das nicht in __init__ gelistete self.State berichten. > > Ich nutze Python bisher nur auf dem Raspberry PI ohne > Entwicklungsumgebung. Code wird per Editor geschrieben, ausgeführt dann > direkt in der Konsole. Ich bin auch nur auf der Konsole und Editor unterwegs. In vielen Fällen ist es auch nützlich, Testroutinen für einzelne Python Dateien zu erstellen, die im if __name__ == '__main__': Konstrukt abgearbeitet werden. Damit habe ich mir auch vorab die eine oder andere Überraschung erspart. Viele Grüße, Christoph
[toc] | [prev] | [next] | [standalone]
| From | Thomas Dreher <thodre@dustpuppy.ddns.net> |
|---|---|
| Date | 2019-04-18 06:30 +0000 |
| Message-ID | <slrnqbg6c8.m33.thodre@dustpuppy.linuxsumpf.de> |
| In reply to | #5417 |
Michael S. <michaely@bigfoot.de> schrieb: > Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer > analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. Eine IDE wird dir solche Fheler normalerweise zumindest als Warnung markieren. Gruß Thomas
[toc] | [prev] | [next] | [standalone]
| From | Reimar Bauer <rb.proj@gmail.com> |
|---|---|
| Date | 2019-04-18 08:43 +0200 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.67.1555569845.2982.python-de@python.org> |
| In reply to | #5470 |
Wenn ihr Code Fans seit, und alles FOSS ist, macht es keinen Unterschied ansonsten vllt etwas ohne Telemetrie nutzen. https://www.fossmint.com/vscodium-clone-of-visual-studio-code-for-linux/ Ich selbst nutze pycharm. Liebe Grüße Reimar Thomas Dreher <thodre@dustpuppy.ddns.net> schrieb am Do., 18. Apr. 2019, 08:35: > Michael S. <michaely@bigfoot.de> schrieb: > > > Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer > > analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. > > Eine IDE wird dir solche Fheler normalerweise zumindest als Warnung > markieren. > > > Gruß > > Thomas > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de >
[toc] | [prev] | [next] | [standalone]
| From | Frank Grellert <frank.grellert@gmail.com> |
|---|---|
| Date | 2019-04-18 09:06 +0200 |
| Subject | Re: [Python-de] Fehler vor Ausführung finden |
| Message-ID | <mailman.72.1555576035.2982.python-de@python.org> |
| In reply to | #5470 |
Hallo Michael, wenn Du den Python-Code mit emacs erstellst und die Erweiterung elpy/flycheck installiert hast, werden schon bei der Eingabe sehr viele Fehler abgefangen. Natürlich ist das nur eine formale, keine inhaltliche Überprüfung Deines Codes. Grüße Frank Am 18.04.19 um 08:30 schrieb Thomas Dreher: > Michael S. <michaely@bigfoot.de> schrieb: > >> Gibt es eine einfache Möglichkeit, den Python Code dahingehend tiefer >> analysieren zu lassen? Jeder C-Compiler bekommt sowas ja auch hin. > Eine IDE wird dir solche Fheler normalerweise zumindest als Warnung > markieren. > > > Gruß > > Thomas > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de -- *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* Frank Grellert Email: frank.grellert@gmail.com Webseite: http://fotoblog.57ps.de/ Öffentlicher Schlüssel: http://fotoblog.57ps.de/contact.html Fingerprint: 2A41 9AAB AAF2 1ACD 6E2D 5961 2081 5B08 42AF 47B5 *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.lang.python
csiph-web