2009-03-01 14 views
5

Ich wurde vor kurzem gebeten, ein Projekt zu analysieren und 20 Klassen zu identifizieren, die am höchsten gefährdet sind, basierend auf den Entwurfsmetriken.Projekt mit Quellmonitor analysieren

Ich habe begonnen, das Projekt zu analysieren, und ich habe beschlossen, die Klassen mit der höchsten maximalen Komplexität auszuwählen. Sollte ich außer der maximalen Komplexität noch etwas anderes suchen? d.h. Anzahl der Aufrufe, Anweisungen, Klassen, Methoden/Klassen, maximale Tiefe usw. Bin ich in die richtige Richtung? Wenn nicht, was sollte ich sonst noch ansehen?

Vielen Dank im Voraus.

Antwort

5

Ich würde in erster Linie maximale Komplexität, maximale Tiefe und Anzahl der Anweisungen betrachten. Diese drei Metriken werden wirklich schlecht geschriebene Methoden erkennen (lange, tief verschachtelte und mit vielen Entscheidungen und Abhängigkeiten).

Sortieren Sie SourceMonitor-Berichte über jede dieser drei Metriken und notieren Sie die Top-20-30-Klassen und wählen Sie dann die in allen drei Listen hochrangigen aus.

+0

Vielleicht hängt das von der Projektsprache ab, aber in C++ sehe ich, dass * Display Method Metrics ... * die besten Ergebnisse für einen bestimmten Prüfpunkt liefert. BTW: Würden Sie vorschlagen, diese drei Kriterien ("wc": Gewicht der Komplexität, 'wd': Gewicht der Tiefe,' ws': Gewicht der Aussagen) zu bewerten und dann 'max (wc * C + wd * D + ws * S) 'oder ist das nicht pragmatisch? – Wolf

+1

@Wolf Ich denke, Sie sind Dinge zu kompliziert. Dieses Tool gibt Ihnen nur Metriken zu einer Reihe von verschiedenen Kriterien. Wählen Sie einfach die Messwerte aus, die Sie am besten für die Beschreibung des Status Ihres Codes benötigen, und führen Sie dann die schlechtesten Quelldateien gemäß diesen Messwerten aus. Ich glaube nicht, dass es eine genaue Formel für dieses Problem gibt. – zendar

1

Dies ist ein guter Anfang, aber ich würde sagen, dass das Risiko auch mit der Menge an Code gekoppelt ist, die Komponententests enthält.

Zum Beispiel eine Funktion mit Cyc. Die Komplexität von 20, die 100% Unit Test Code Coverage hat, ist sicherer als eine Funktion mit Cyc. Komplexität von 10 ohne Unit-Tests.

+0

Die 100% -Überdeckungsfunktion ist viel wahrscheinlicher "korrekt" als die ohne Tests; aber seine höhere Komplexität bedeutet, dass es wahrscheinlich mehr Arbeit (Anstrengung) erfordert, um es zu modifizieren oder zu erweitern. – Schollii

+0

Wahr, aber der Quellmonitor unterstützt keine Testabdeckung. Vielleicht nicht das beste Werkzeug, um die Aufgabe optimal zu lösen * "Identifizieren Sie 20 Klassen, die aufgrund der Design-Metriken am stärksten gefährdet sind" * ... – Wolf