2016-07-13 17 views
2

Ich habe ein relativ großes Python-Projekt, an dem ich arbeite, und wir haben keine zyklomatischen Komplexitätstools als Teil unseres automatisierten Test- und Bereitstellungsprozesses.Cyclomatic complexity Metrikpraktiken für Python

Wie wichtig sind Cyclomatic-Komplexitätswerkzeuge in Python? Benutzt du oder dein Projekt sie und finde sie effektiv? Ich hätte gerne eine schöne Vorher/Nachher-Geschichte, wenn jemand eine hat, also können wir ein wenig von der Subjektivität aus den Antworten nehmen (dh bevor wir auch kein Cyclo-Comp-Tool hatten, und nachdem wir es eingeführt hatten, eine gute Sache Ein geschehenes, schlechtes B passiert, usw.). Es gibt viele andere allgemeine Antworten auf diese Art von Frage, aber ich habe keine speziell für Python-Projekte gefunden.

Ich versuche letztendlich zu entscheiden, ob es sich für mich lohnt, es unseren Prozessen hinzuzufügen, und welche Metrik und welches Werkzeug/welche Bibliothek für große Python-Projekte am besten geeignet ist. Eines unserer Hauptziele ist die langfristige Wartung.

Antwort

4

Wir haben das RADON-Tool in einem unserer Projekte verwendet, das sich auf Testautomatisierung bezieht.

RADON

Je nach neuen Funktionen und Anforderungen, müssen wir hinzufügen/ändern/update/delete-Codes in diesem Projekt. Außerdem arbeiteten fast 4-5 Leute daran. Als Teil des Überprüfungsprozesses haben wir RADON-Tools identifiziert und verwendet, da unser Code wartbar und lesbar sein soll.

Abhängig von der Ausgabe des RADON-Tools wurden einige Male unser Code neu berechnet, weitere Methoden hinzugefügt und das Looping modifiziert.

Bitte lassen Sie mich wissen, wenn dies für Sie nützlich ist.

+1

Ich habe angefangen, Radon zu mögen. Es ist zwar schwieriger, dies in den automatischen Build-Prozess einzubeziehen, aber der Aufwand lohnt sich. – iankit

3

Python ist nicht speziell, wenn es um zyklomatische Komplexität geht. CC misst, wie viel Verzweigungslogik in einem Codeblock enthalten ist.

Die Erfahrung zeigt, dass, wenn die Verzweigung "hoch" ist, dieser Code schwerer zu verstehen und zuverlässig zu ändern ist als Code, in dem die Verzweigung niedriger ist.

Bei Metriken spielen normalerweise keine absoluten Werte eine Rolle; Es sind relative Werte, wie sie von Ihrer Organisation erfahren werden. Was Sie tun sollten, ist, verschiedene Metriken zu messen (CC ist eins) und nach einem Knie in der Kurve zu suchen, das diese Metrik mit Fehlern in Zusammenhang bringt, die im Code gefunden wurden. Sobald Sie wissen, wo das Knie ist, bitten Sie die Programmierer, Module zu schreiben, deren Komplexität unterhalb des Knies liegt. Dies ist die Verbindung zur langfristigen Wartung.

Was Sie nicht messen, können Sie nicht kontrollieren.

+0

Verwenden Sie ein bestimmtes Tool in Python? Ist Radon gut? Wie haben Sie Ihre cyclo comp metrische Schwelle herausgefunden? War es nur durch das Verfolgen von Problemen auf JIRA und am Ende jeder Veröffentlichung/Sprints gehen Sie zurück und manuell herausfinden, was Sie Fehler/Hotfixes? – mwm314

+0

Wir * bauen * Metriken-Tools mit ungewöhnlichen Programmier-DSLs, für die CC nicht so viel Sinn macht. (Wir sind eigentlich an Produktivität interessiert, die wir durch den Aufbau besserer interner DSLs erreichen). Die meisten Personen, die Metriken zu verstehen versuchen, kombinieren in der Regel Informationen aus mehreren Quellen: dem Versionskontrollsystem (z. B. dem Quellcode), das zur Berechnung von Metriken in Modulen verwendet wird, und Informationen aus Fehlerverfolgung (Fehlern, die einem Modul zugeordnet werden). Sie führen diese Datensammlung regelmäßig aus, um Trends zu verfolgen. (Für Metriken-Tools, siehe mein Bio und folgen Sie Links zu meiner Website). –