Wie kann ich Änderungen in einer großen Code-Basis Qualität visualisieren?
-
28-09-2019 - |
Frage
Eines der Dinge, die wir sind Gedanken über viel aus und ist, wie wir Metriken irgendeine Art Änderung messen verwenden können, gehen wir zurück oder nicht? Dies ist im Rahmen einer großen, Legacy-Code-Basis, die wir verbessern. Die meiste Code ist C ++ mit einem C Erbe. Einige neue Funktionen und die GUI in C # geschrieben.
Beginn konnten wir zumindest überprüft werden, wenn der einfache Komplexitätsgrad wurde im Laufe der Zeit in dem Code zu ändern. Die Schwierigkeit besteht darin, eine Darstellung in mit -. Können wir vielleicht eine 3D-Oberfläche tun, wo eine 2D-Karte den Code darstellt und wir haben eine Wärme-Karte Farbe darstellt Komplexität, die mit der 3D-Oberfläche in und um zu zeigen, ändern prall
Nachdem Sie einige matrics von Zahlen erzeugen können sich eine Tonne Mathe-Systeme sind um Pflege von Sachen zu nehmen wie diese.
Im Laufe der Zeit, ich mag anspruchsvollere Zahlen haben, dort aber die gleichen Visualisierungstechniken verwendet Veränderung darzustellen.
Ich mag die Idee, in Crap4j auf dem Verhältnis der Fokussierung zwischen Komplexität und Anzahl der Unit-Tests, dass Code abdeckt.
Ich möchte auch Onkel Bobs SOLID Metriken und einige der Chidamber aufzunehmen und Kemerer OO-Metriken. Der schwierige Teil ist das Auffinden Werkzeuge, um diese für C ++ zu generieren. Die einzige Option scheint zu sein, Krakatau Wesentliche Metrics (ich habe nichts dagegen, für Werkzeuge zu zahlen). Mein Wunsch, die CK-Metriken zu verwenden, kommt zum Teil aus den Büchern Object-Oriented Metrics: Maßnahmen der Komplexität von Henderson-Sellers und der frühere Objektorientierte Software-Metriken .
Wenn wir eine Reihe dieser Metriken beginnen könnten wir mit zehn oder so Zahlen am Ende, die über Zeit variieren. Ich bin ziemlich unwissend von Statistiken, aber es scheint, es könnte interessant sein, ein Bündel solcher Metriken zu verfolgen und dann achten Sie auf die diejenigen neigen dazu, zu variieren.
Beachten Sie, dass eine relevante Frage ist über Mess Code Qualität über eine große Code-Basis . Ich bin mehr daran interessiert, bei der Messung der Veränderung .
Lösung
würde ich erwägen, einen mit Kiviat Diagramm mehrere Software-Metriken Dimensionen darzustellen im Laufe der Zeit weiterentwickelt. Diese Diagramme stellen mehrere Datenpunkte in einer konkaven Hülle um einen Mittelpunkt. Sichtprüfung zeigt, wo eine bestimmte Metrik geht nach oben oder nach unten, und man sollte in der Lage sein ein Gesamtverhältnis von Fläche von metrischen Wert mit einigen hueristic Flächenberechnung voreingenommen zu berechnen.
Andere Tipps
Sie können auch einen Blick auf NDepend Dokumentation über Code-Metriken . Disclaimer:. Ich bin einer der Entwickler des Werkzeugs NDepend
Mit der -Code-Regel und Abfrage über LINQ (CQLinq) Einrichtung ist es möglich, Code-Metrik evolution / Trending über zwei verschiedene Schnappschüsse in der Zeit der Code-Basis zu stellen. Zum Beispiel gibt es eine Standardregel vorgeschlagen: komplexe Methoden vermeiden, dass auch komplexere von dem Screenshot unten dargestellt:
Mehrere metrischen Trending Regeln vorgeschlagen wie:
- Vermeiden Code-Coverage-Abnahme von [enter Link Beschreibung hier] 5 Tests von Typen
- Typen, die verwendet 100% abgedeckt werden, aber nicht mehr
- und auch, da Sie erwähnen Crap4J der Metrik MIST mit CQLinq geschrieben werden, und die Abfrage leicht gezwickt werden, um das Trending in MIST metrisch .
In Bezug auf die Visualisierung von Code-Metrik, läßt NDepend visualize Code-Metriken Wert durch eine interaktive treemap :