PyCologne Treffen Mai 2020
Datum: 13.05.2020, 19:00 Uhr
Themenabend zu Tools für Codequalität und Codeanalyse: Reimar stellte
pyreverse zum Plotten von UML-Diagrammen vor, dazu ein Überblick über die
Python Code Quality Authority mit Flake8, Pylint und Bandit, Linting in
Editoren, Codeformatter wie Black und Yapf sowie eine Diskussion über
technische Schulden und ein Tool zur Prüfung der Python-Versionskompatibilität
ungetesteter Projekte. Zum Abschluss ein kurzer Blick auf namedtuple und die
Idee, künftige Sessions auch per Videocall zu öffnen.
pyreverse - Reimar
Reimar stellt kurz pyreverse vor (Plotten von UML-Diagrammen mittels graphviz).
Python Code Quality Authority
https://meta.pycqa.org/en/latest/introduction.html
flake8 + pylint
Flake8
pyflakes + pep8
Pylint
https://docs.pylint.org/en/1.6.0/tutorial.html
Pedantischer als Flake8, weil es auch schlechten Codestil erkennt und Verbesserungen empfiehlt.
Bandit
https://pypi.org/project/bandit/
Security-orientierter statischer Analyzer für Python-Code.
Linting in VS Code/Editoren
- https://github.com/microsoft/python-language-server
- https://code.visualstudio.com/docs/python/linting
Codeanalyse
Python Antipatterns: https://github.com/quantifiedcode
Autopep8
Codeformatter
- https://github.com/psf/black (kaum Optionen, "opinionated", dafür auch keine Diskussionen)
- https://github.com/google/yapf (sehr flexibel an eigene Styleguides anpassbar, von Google)
Technische Schulden
Technical Depth / Code Smell. Links: ?
Softwareästhetik: https://www.innoq.com/de/articles/2016/09/consumer-driven-contracts/
"Why is there no goto? Design and History FAQ, Python 3.6.6rc1 documentation" [Internet, zitiert 26. Juni 2018]. Verfügbar unter: https://docs.python.org/3/faq/design.html#why-is-there-no-goto (Statement von Guido van Rossum zum Design von Python)
"I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages." - Alan Kay, Erfinder von Smalltalk, zur Bedeutung von "objektorientierter Programmierung"
Technische Schulden. In: Wikipedia [Internet]. 2018 [zitiert 15. Januar 2019]. Verfügbar unter: https://de.wikipedia.org/w/index.php?title=Technische_Schulden&oldid=182035209
Guter Artikel (Spoiler: vom Hersteller eines Tools):
- Sharma T. Four Strategies for Managing Technical Debt [Internet]. Designite. 2018 [zitiert 15. Januar 2019]. Verfügbar unter: http://www.designite-tools.com/designite/four-strategies-for-managing-technical-debt/
- Quelle: www.designite-tools.com via Daniel Widerin
Python-Versionskompatibilität ohne Tests
Gibt es ein Tool, das ein Python-Projekt ohne Tests scannt und berichtet, mit welchen Python-Versionen es nicht kompatibel ist? In Linux-Distributionen gibt es das Problem, dass Projekte oft keine Tests mitliefern. Wir möchten sehen, für welche Python-Versionen ein Paket nicht läuft, wenn nichts angegeben ist.
- https://stackoverflow.com/questions/23079702/how-to-detect-minimum-version-of-python-that-a-script-required
- https://github.com/netromdk/vermin
namedtuple
from collections import namedtuple
Ausgabe direkt mit Beschreibung, direkt über Attribut adressierbar, und wie ein Tuple.
Ideen und Ankündigungen
Idee für Sessions nach Corona: Einbinden von Videosession in normale Session.
Nächste Woche ist das Django-Meetup, ebenfalls remote: https://www.meetup.com/de-DE/Koln-Django-Meetup-Gruppe/events/270173878/
Protokoll des Treffens, gemeinsam im Etherpad mitgeschrieben und aus dem Archiv der Jahre 2013 bis 2020 übernommen.