Seite 1 von 2

pep8 Code Style Checker

Verfasst: Sonntag 21. März 2010, 20:31
von burli
Ich bin gerade beim stöbern in den Ubuntu Repositories (Lucid Lynx Beta 1) auf einen pep8 Code Style Checker gestoßen.

Hab es unter anderen mal mit dem Programm miniterm.py getestet. Ohne weitere Parameter spuckt das Programm folgende Ergebnisse aus.

Code: Alles auswählen

dev/Python/miniterm.py:11:11: E401 multiple imports on one line
dev/Python/miniterm.py:27:1: E302 expected 2 blank lines, found 0
dev/Python/miniterm.py:66:80: E501 line too long (82 characters)
dev/Python/miniterm.py:71:5: E301 expected 1 blank line, found 0
dev/Python/miniterm.py:127:12: E221 multiple spaces before operator
dev/Python/miniterm.py:364:40: W291 trailing whitespace
dev/Python/miniterm.py:386:82: E202 whitespace before ')'
dev/Python/miniterm.py:385:16: E251 no spaces around keyword / parameter equals
dev/Python/miniterm.py:527:24: E701 multiple statements on one line (colon)
Taugt das was?

Verfasst: Sonntag 21. März 2010, 20:34
von DasIch
Letztendlich musst du selbst wissen was gut lesbar ist und was nicht, da hilft dir ein code checker nicht.

Verfasst: Sonntag 21. März 2010, 20:38
von burli
Schon klar, aber pep8 wurde ja nicht umsonst definiert. Die Frage ist eher allgemein, ob das Programm dabei helfen kann, wenn man sich an pep8 halten will

Verfasst: Sonntag 21. März 2010, 20:52
von derdon
Ich sehe es genauso wie DasIch. Von solche Programmen halte ich allgemein nichts. Den Stil vom Code können Menschen viel besser bewerten als Maschinen.

Verfasst: Sonntag 21. März 2010, 20:57
von Pascal
Viel wichtiger als Leerzeichen einhalten usw. ist eine aussagekräftige Bezeichnung der Variablen. Und das kann ein Programm niemals überprüfen.

Verfasst: Sonntag 21. März 2010, 21:00
von ms4py
derdon hat geschrieben:Ich sehe es genauso wie DasIch. Von solche Programmen halte ich allgemein nichts. Den Stil vom Code können Menschen viel besser bewerten als Maschinen.
Allerdings sind einige Fehler von Maschinen viel deutlicher erkennbar (z.B. wann ein Space kommt und wann nicht). Ich verwende Eclipse + Pydev + Pylint und bin damit sehr zufrieden. Wobei ich einige Warnungen auch strikt ignoriere.

Mein Fazit: Programm um Warnungen zu generieren ist generell sinnvoll, wenn man das Ergebnis kritisch betrachtet und ggf. auch nicht alles fixed, was das Programm will ;-)

Verfasst: Sonntag 21. März 2010, 22:38
von philistion
Danke für den Tipp, ich halte solche Tools für sehr sinnvoll, gerade wenn man an freien Projekten mitarbeitet wo Pep8 gefordert wird.
Erkennt Pylint neben offensichtlichen Fehlern denn auch ob der Code korrekt formatiert ist?

Verfasst: Sonntag 21. März 2010, 23:07
von burli
Ich sehe es so. Jedes Tool, das einem die Arbeit erleichtert, ist ein nützliches Tool. Ich denke, wenn für ein Projekt pep8 gefordert ist, dann sowas zumindest helfen. Das Denken nimmt es einem nicht ab, dass ist klar.

Verfasst: Montag 22. März 2010, 09:03
von Gabelmensch
Cooles Tool. :D

Ich habe eben in einem eigenen 6,5k Zeilenprogramm 17 Fehler gefunden die ich nicht umbedingt alle fixen werde.

Ich stimme uebrigens zu, es erstezt kein Denken. Gibt aber Ansaetzte wo sich ein Blick nochmal Lohnen wuerde.

Verfasst: Montag 22. März 2010, 11:13
von ms4py
philistion hat geschrieben:Danke für den Tipp, ich halte solche Tools für sehr sinnvoll, gerade wenn man an freien Projekten mitarbeitet wo Pep8 gefordert wird.
Erkennt Pylint neben offensichtlichen Fehlern denn auch ob der Code korrekt formatiert ist?
Ja! AFAIK ist PEP8 komplett abgedeckt.

Verfasst: Montag 22. März 2010, 12:58
von lunar
@ms4py: Bei mir hat sich pylint noch nie über "blank lines" oder Leerzeichen vor Klammern beschwert. Ich bezweifele auch stark, dass pylint sich mit so einem Schmarrn aufhält :)

Verfasst: Montag 22. März 2010, 13:00
von jbs
lunar hat geschrieben:@ms4py: Bei mir hat sich pylint noch nie über "blank lines" oder Leerzeichen vor Klammern beschwert. Ich bezweifele auch stark, dass pylint sich mit so einem Schmarrn aufhält :)
Ein PEP-8 checker sollte auch PEP-8 abdecken.

Verfasst: Montag 22. März 2010, 13:08
von burli
jbs hat geschrieben:
lunar hat geschrieben:@ms4py: Bei mir hat sich pylint noch nie über "blank lines" oder Leerzeichen vor Klammern beschwert. Ich bezweifele auch stark, dass pylint sich mit so einem Schmarrn aufhält :)
Ein PEP-8 checker sollte auch PEP-8 abdecken.
Eben
[...]
Trenne Funktions- und Klassendefinitionen auf höchster Ebene mit zwei Leerzeilen.

Methodendefinitionen innerhalb einer Klasse werden durch eine einzelne Leerzeile getrennt.
[...]

Verfasst: Montag 22. März 2010, 13:12
von lunar
@jbs und burli: Ja und? Pylint behauptet von sich nicht, PEP 8 zu prüfen.

Verfasst: Montag 22. März 2010, 13:28
von ms4py
lunar hat geschrieben:@ms4py: Bei mir hat sich pylint noch nie über "blank lines" oder Leerzeichen vor Klammern beschwert. Ich bezweifele auch stark, dass pylint sich mit so einem Schmarrn aufhält :)
Ok, PEP8 ist nicht vollständig abgedeckt ;)
Aber IMHO werden die wichtigen Konventionen überprüft.

Verfasst: Montag 22. März 2010, 13:32
von lunar
@ms4py: Das sehe ich genauso.

Verfasst: Montag 22. März 2010, 13:34
von jbs
@lunar: Du hast es aber als "Schmarrn" bezeichnet und da wollte ich dem Checker nur zu Gute halten, dass es halt nur PEP-8 prüft.

Verfasst: Montag 22. März 2010, 19:09
von BlackJack
@lunar: Wobei "schmarrn" ziemlich hart ist. In der Beispielausgabe sind 0 Leerzeilen gefunden worden. Bei Klassen, Funktionen, oder Methodendefinitionen kann sowas schonmal dazu führen das man eine Funktion oder Methode übersieht, einfach weil man mit einer Leerzeile rechnet.

Verfasst: Montag 22. März 2010, 19:19
von lunar
"Schmarrn" war so dahin gesagt, und keinesfalls todernst gemeint. Soll ich das nächste Mal einen nackten, tanzenden Smilie nutzen, damit das noch offensichtlicher ist? :)

Fürs Protokoll: Ich stimme BlackJack natürlich zu, und halte PEP 8 im Allgemeinen und zur Gänze für sinnvoll, und achte auch persönlich darauf, dass immer anständig viele Leerzeilen im Quelltext zu finden sind. Andeuten wollte ich nur, dass pylint sich auf andere Dinge spezialisiert, und beileibe nicht alle Regeln von PEP 8, insbesondere hinsichtlich der Formatierung des Quelltexts, prüft.

Verfasst: Dienstag 23. März 2010, 14:19
von jbs
lunar hat geschrieben:"Schmarrn" war so dahin gesagt, und keinesfalls todernst gemeint. Soll ich das nächste Mal einen nackten, tanzenden Smilie nutzen, damit das noch offensichtlicher ist? :)
Wenn du das so hinschreibst musst du auch damit rechnen, dass es missverstanden wird. ;)