it-swarm.com.de

Wie kann ich Python Code analysieren, um problematische Bereiche zu identifizieren?

Ich habe ein großes Quellrepository, das auf mehrere Projekte aufgeteilt ist. Ich möchte einen Bericht über den Zustand des Quellcodes erstellen und dabei Problembereiche identifizieren, die behoben werden müssen.

Insbesondere möchte ich Routinen mit hoher zyklomatischer Komplexität aufrufen, Wiederholungen identifizieren und möglicherweise eine fusselartige statische Analyse durchführen, um verdächtige (und damit wahrscheinlich fehlerhafte) Konstrukte zu erkennen.

Wie kann ich einen solchen Bericht erstellen?

98
Jerub

Für die Messung der zyklomatischen Komplexität steht unter traceback.org ein Nice-Tool zur Verfügung. Die Seite bietet auch einen guten Überblick über die Interpretation der Ergebnisse.

+1 für Pylint . Die Einhaltung von Kodierungsstandards (sei es PEP8 oder die Variante Ihrer eigenen Organisation) zu überprüfen, kann letztendlich helfen, die Komplexität der Zyklomatik zu reduzieren.

36
Mike Griffith

Für die zyklomatische Komplexität können Sie radon: https://github.com/rubik/radon verwenden

(Verwenden Sie pip, um es zu installieren: pip install radon)

Zusätzlich hat es auch diese Funktionen:

  • rohkennzahlen (dazu gehören SLOC, Kommentarzeilen, Leerzeilen usw.)
  • Halstead-Metriken (alle)
  • Wartbarkeitsindex (der in Visual Studio verwendete)
28
Dave Halter

Für die statische Analyse gibt es Pylint und Pychecker . Ich persönlich benutze Pylint, da es umfassender zu sein scheint als Pychecker.

Für die zyklomatische Komplexität können Sie versuchen, dieses Perl-Programm oder Artikel , das ein python-Programm einführt, um dasselbe zu tun

18
freespace

Pycana wirkt wie ein Zauber, wenn Sie ein neues Projekt verstehen müssen!

PyCAna (Python Code Analyzer) ist ein ausgefallener Name für einen einfachen Code Analyzer für python=, der nach Ausführung des Codes ein Klassendiagramm erstellt.

So funktioniert es: http://pycana.sourceforge.net/

ausgabe:

alt text

11
msemelman

Dank Pydev können Sie Pylint sehr einfach in Eclipse IDE integrieren und erhalten jedes Mal einen Codebericht, wenn Sie eine geänderte Datei speichern.

6

Verwenden Sie flake8 , um pep8-, pyflakes- und zyklomatische Komplexitätsanalysen in einem Tool durchzuführen

5
Wes Kendall

Es gibt ein Tool namens CloneDigger , mit dem Sie ähnliche Codeausschnitte finden können.

4
Anonymous