Ich habe ein großes Quell-Repository, das auf mehrere Projekte aufgeteilt ist. Ich möchte einen Bericht über den Zustand des Quellcodes erstellen und Problembereiche identifizieren, die angegangen werden müssen.
Insbesondere möchte ich Routinen mit einer hohen zyklomatischen Komplexität aufrufen, Wiederholungen identifizieren und möglicherweise eine fusselartige statische Analyse durchführen, um verdächtige (und daher wahrscheinlich fehlerhafte) Konstrukte zu erkennen.
Wie kann ich einen solchen Bericht erstellen?
https://flakehell.readthedocs.io/config.html
es heutzutage tatsächlich empfehlen , da das Ausführungsmodell viel robuster und konfigurierbarer ist.Für die zyklomatische Komplexität können Sie Folgendes verwenden
radon
: https://github.com/rubik/radon(Verwenden Sie
pip
installieren es:pip install radon
)Zusätzlich hat es auch diese Funktionen:
quelle
Für die statische Analyse gibt es Pylint und Pychecker . Persönlich benutze ich Pylint, da es umfassender zu sein scheint als Pychecker.
Aus Gründen der zyklomatischen Komplexität können Sie dieses Perl-Programm oder diesen Artikel ausprobieren , in dem ein Python-Programm vorgestellt wird, um dasselbe zu tun
quelle
Pycana wirkt wie ein Zauber, wenn Sie ein neues Projekt verstehen müssen!
Sehen Sie, wie es funktioniert: http://pycana.sourceforge.net/
Ausgabe:
quelle
Dank Pydev können Sie Pylint ganz einfach in die Eclipse-IDE integrieren und jedes Mal, wenn Sie eine geänderte Datei speichern, einen Codebericht erhalten.
quelle
Verwenden Sie flake8 , das pep8, pyflakes und die zyklomatische Komplexitätsanalyse in einem Tool bereitstellt
quelle
Es gibt ein Tool namens CloneDigger , mit dem Sie ähnliche Codefragmente finden können.
quelle
Zur Überprüfung der zyklomatischen Komplexität gibt es natürlich das
mccabe
Paket.Installation:
Verwendung:
Beachten Sie den Schwellenwert von 6 oben. Gemäß dieser Antwort sollten Punktzahlen> 5 wahrscheinlich vereinfacht werden.
Beispielausgabe mit
--min=3
:Optional kann es auch über Pylint-McCabe oder Pytest-McCabe usw. verwendet werden.
quelle