Wie kann ich Python-Code analysieren Problembereiche zu identifizieren?
-
01-07-2019 - |
Frage
Ich habe eine große Quellrepository Split über mehrere Projekte hinweg. Ich möchte einen Bericht über die Gesundheit des Quellcodes erzeugen, Problembereiche zu identifizieren, die angegangen werden müssen.
Insbesondere würde Ich mag Routinen rufen mit einer hohen zyklomatische Komplexität, identifizieren Wiederholung, und vielleicht einige Flusen artige statische Analyse laufen zu erkennen verdächtige (und damit wahrscheinlich fehlerhaft) konstruiert.
Wie kann ich mich über einen solchen Bericht konstruieren?
Lösung
Für zyklomatische Komplexität zu messen, gibt es ein nettes Tool verfügbar unter traceback.org . Die Seite gibt auch einen guten Überblick darüber, wie die Ergebnisse zu interpretieren.
1 für Pylint . Es ist großartig, zu verifizieren Einhaltung Standards Codierung (sei es PEP8 oder eigene Organisation Variante), die am Ende Hilfe zyklomatische Komplexität zu reduzieren.
Andere Tipps
Für zyklomatische Komplexität können Sie radon
verwenden: https://github.com/rubik/radon
(Benutzen Sie pip
installieren: pip install radon
)
Darüber hinaus hat es auch die folgenden Funktionen:
- Roh-Metriken (dazu gehören SLOC, Kommentarzeilen, Leerzeilen, usw.)
- Halstead-Metriken (alle)
- Wartbarkeit Index (die in Visual Studio verwendet wird)
Für die statische Analyse gibt es Pylint und pychecker . Ich persönlich verwende Pylint wie es als pychecker umfassender zu sein scheint.
Für zyklomatische Komplexität können Sie dieses Perl-Programm versuchen, oder das Artikel die führt ein python-Programm, das gleiche zu tun
Pycana funktioniert wie Charme, wenn Sie ein neues Projekt verstehen müssen!
PyCAna (Python Code Analyzer) ist ein ausgefallener Name für einen einfachen Code Analysator für Python, die eine schafft Klassendiagramm nach der Ausführung Ihres Code.
Sehen Sie, wie es funktioniert: http://pycana.sourceforge.net/
Ausgabe:
Dank Pydev , können Sie Pylint im Eclipse-IDE wirklich leicht integrieren und eine bekommen Code Bericht jedes Mal, wenn Sie eine geänderte Datei speichern.
Verwenden Sie flake8 , die PEP8 bietet, Pyflakes und zyklomatische Komplexität Analyse in einem Werkzeug
Es gibt ein Tool namens CloneDigger , das hilft Ihnen, einen ähnlichen Code-Schnipsel.
finden Für zyklomatische Komplexität Überprüfung, gibt es natürlich auch die mccabe
Paket.
Installation:
$ pip install --upgrade mccabe
Verbrauch:
$ python -m mccabe --min=6 path/to/myfile.py
Beachten Sie die Schwelle von 6 oben. Per href="https://stackoverflow.com/a/1365185/832230">, Partituren> 5 wahrscheinlich vereinfacht werden soll.
Eine Beispielausgabe mit --min=3
:
68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3
Es kann auch über Pylint-mccabe oder pytest-mccabe , etc.