Code-Metriken berechnen [geschlossen]

87

Gibt es Tools, mit denen Code-Metriken (z. B. Anzahl der Codezeilen, zyklomatische Komplexität, Kopplung, Kohäsion) für Ihr Projekt berechnet und im Laufe der Zeit ein Diagramm mit den Trends erstellt werden können?

Björn Reppen
quelle
Abhängig von der Sprache, welche Sprache verwenden Sie?
Valentin Rocher

Antworten:

67

Bei meinem letzten Projekt habe ich SourceMonitor verwendet . Es ist ein schönes kostenloses Tool für die Analyse von Codemetriken.
Hier ist ein Auszug aus der offiziellen SourceMonitor-Website:

  • Sammelt Metriken in einem schnellen Durchlauf durch Quelldateien.
  • Misst Metriken für Quellcode, der in C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) oder HTML geschrieben ist.
  • Enthält Metriken auf Methoden- und Funktionsebene für C ++, C, C #, VB.NET, Java und Delphi.
  • Speichert Metriken in Prüfpunkten zum Vergleich während Softwareentwicklungsprojekten.
  • Zeigt Metriken in Tabellen und Diagrammen an und druckt sie aus.
  • Funktioniert in einer Standard-Windows-GUI oder in Ihren Skripten mithilfe von XML-Befehlsdateien.
  • Exportiert Metriken in XML- oder CSV-Dateien (Comma-Separated-Value) zur weiteren Verarbeitung mit anderen Tools.

Für .NET neben NDepend, das einfach das beste Tool ist, kann ich vil empfehlen .

Folgende Tools können Trendanalysen durchführen:

aku
quelle
SourceMonitor scheint ein reines Windows-Tool zu sein. Gibt es etwas Ähnliches für andere Betriebssysteme (Linux, BSD, Mac)?
Mnementh
Mnementh, ich bin Windows-Entwickler, ich kenne keine solchen Tools für FOSS-Leute. Vielleicht können Sie versuchen, SourceMonitor unter Wine Emulator auszuführen?
Aku
2
Jetzt gibt es ein NDepend-Tool für C ++, CppDepend
Goosey
SourceMonitor wird nur nicht kommerziell verwendet.
Scott 20 理论
2
@ Kevin 混合 理论 Lesen Sie die Lizenz sorgfältig durch - Sie können sie in jeder Umgebung verwenden, in der Sie sie einfach nicht verkaufen können. "Das heißt, Sie können diese ausführbare Datei als Teil Ihrer eigenen Softwareentwicklungsbemühungen (kommerziell oder anderweitig) verwenden, aber Sie dürfen sie nicht verkaufen ..."
Natalie Adams
12

Sonar ist definitiv ein Tool, das Sie berücksichtigen müssen, insbesondere für Java-Projekte. Es wird jedoch auch PHP- oder C / C ++ -, Flex- und Cobol-Code verarbeiten.

Hier ist ein Screenshot, der einige Metriken für ein Projekt zeigt:

Alternativtext http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Beachten Sie, dass Sie das Tool über die Demo-Site unter http://nemo.sonarsource.org testen können

Romain Linsolas
quelle
Anscheinend lässt SO mich den Link nicht reparieren - der Link sollte sein: nemo.sonarsource.org
Natalie Adams
8

Ich suchte auch nach einem Code-Metrik-Tool / Plugin für meine IDE, aber meines Wissens gibt es keines (für Eclipse), das auch ein Diagramm der Komplexität über einen bestimmten Zeitraum zeigt. Ich habe jedoch das Eclipse-Metrik-Plugin gefunden , das Folgendes verarbeiten kann:

  • McCabes zyklomatische Komplexität
  • Efferente Kupplungen
  • Mangel an Kohäsion in Methoden
  • Codezeilen in der Methode
  • Anzahl der Felder
  • Anzahl der Ebenen
  • Anzahl der Einheimischen im Geltungsbereich
  • Anzahl der Parameter
  • Anzahl der Aussagen
  • Gewichtete Methoden pro Klasse

Und während ich es benutzte, habe ich die Grafikoption, die Sie auch suchen, nicht verpasst.
Ich denke, wenn Sie keine Plugins / Tools finden, die die grafische Darstellung im Laufe der Zeit verarbeiten können, sollten Sie sich das Tool ansehen, das am besten zu Ihnen passt und Ihnen alle Informationen bietet, die Sie benötigen. auch wenn die angegebenen Informationen nur für den aktuellen Build Ihres Projekts gelten.

Nebenbei bemerkt, mit dem Eclipse-Metrik-Plugin können Sie die Daten in eine externe Datei exportieren (Link führt zu einem Beispiel). Wenn Sie also ein Versionsverwaltungs-Tool verwenden und dies sollten, können Sie die Daten immer für die jeweilige Datei exportieren Erstellen und speichern Sie die Datei zusammen mit dem Quellcode. Auf diese Weise haben Sie immer noch eine (grundlegende) Möglichkeit, in die Vergangenheit zu reisen und die Unterschiede zu überprüfen.

sven
quelle
4

Denken Sie daran, was Sie messen, ist was Sie bekommen. loc sagt nichts über Produktivität oder Effizienz aus.

Bewerten Sie einen Programmierer nach Codezeilen und Sie erhalten .. Codezeilen. Das gleiche Argument gilt für andere Metriken.

otoh .. http://www.crap4j.org/ ist eine sehr konservative und nützliche Metrik. es legt die Komplexität in Bezug auf die Abdeckung fest.

Andreas Petersson
quelle
2
Bewerten Sie einen Programmierer anhand von Kommentarzeilen und Sie erhalten ... Kommentarzeilen.
EML
3

In Bezug auf das Tool NDepend enthält es 82 verschiedene Codemetriken , von Anzahl der Codezeilen über Methodenrang (Beliebtheit), zyklomatische Komplexität, mangelnde Kohäsion der Methoden, prozentuale Abdeckung (extrahiert aus NCover oder VSTS), Vererbungstiefe. .

Mit seinem Regelsystem kann NDepend auch Probleme finden und schätzt technische Schulden , die ein interessanter Code Metrik (Menge von dev-Aufwand zu beheben Problemen vs. Menge von dev-Zeit pro Jahr verwöhnte Probleme nicht fixiertes lassen).

Alle diese Metriken werden hier detailliert beschrieben .

Patrick vom NDepend-Team
quelle
2

Wenn Sie sich im .NET-Bereich befinden, bietet CodeRush von Developer Express LOC, Cyclomatic Complexity und die ( meiner Meinung nach ausgezeichnete) Analyse der Wartungskomplexität von Code in Echtzeit.

(Entschuldigung für den Link "Wartungskomplexität". Er wird in den Cache von Google verschoben. Das Original scheint ein Offline-Geldautomat zu sein.)

Moobaa
quelle
2

Atlassian FishEye ist ein weiteres hervorragendes Werkzeug für diesen Job. Es lässt sich in Ihr Versionsverwaltungssystem integrieren (unterstützt derzeit CVS, SVN und Perforce) und analysiert alle Ihre Dateien auf diese Weise. Die Analyse ist jedoch ziemlich einfach und das Produkt selbst ist kommerziell (aber sehr preisgünstig, IMO).

Sie können auch ein Add-On namens Crucible erwerben, das Peer-Code-Überprüfungen erleichtert.

Jack Leow
quelle
2

Für Visual Studio .NET (mindestens C # und VB.NET) finde ich die kostenlosen StudioTools äußerst nützlich für Metriken. Außerdem werden eine Reihe von Funktionen hinzugefügt, die in kommerziellen Tools wie ReSharper enthalten sind .

Von oben nach unten
quelle
2

Code Analyzer ist ein einfaches Tool, das diese Art von Metriken generiert.

Alt-Text
(Quelle: teel.ws )

Prakash
quelle
3
Während die GUI nett erscheint, scheinen die Metriken, die generiert werden, ziemlich nutzlos zu sein - z. B. "Leerzeichen pro Datei"?
Kizzx2
1

Ich würde Code Metrics Viewer Exention für Visual Studio empfehlen .

Es ist sehr einfach, die Lösung sofort zu analysieren und auch zu vergleichen, wenn Sie Fortschritte gemacht haben ;-)

Lesen Sie hier mehr über die Funktionen

Baljeetsingh
quelle
0

Auf der PHP-Seite glaube ich, dass phpUnderControl beispielsweise Metriken über phpUnit enthält (wenn ich mich nicht irre).

Beachten Sie, dass Metriken häufig fehlerhaft sind. Zum Beispiel wird ein Codierer, der an trivialen Problemen arbeitet, mehr Code produzieren und dort besser in Ihren Diagrammen aussehen als ein Codierer, der die komplexen Probleme löst.

Bis
quelle
0

Wenn Sie nach einer Trendanalyse suchen, bedeutet dies wirklich etwas, das über SLOC hinaus gemessen werden kann?

Selbst wenn Sie nur einen Grep durchführen, um Semikolons zu verfolgen und die Anzahl der zurückgegebenen Zeilen zu zählen, suchen Sie nach Konsistenz in der SLOC-Messtechnik. Auf diese Weise kann die heutige Messung auf sinnvolle Weise mit der Messung des letzten Monats verglichen werden.

Ich kann nicht wirklich sehen, was ein Trend der zyklometrischen Komplexität von McCabe geben würde. Ich denke, dass CC eher für eine Momentaufnahme der Qualität verwendet werden sollte, um den Entwicklern Feedback zu geben.

Edit: Ooh. Ich dachte nur an ein paar andere Messungen, die nützlich sein könnten. Kommentare als Prozentsatz des SLOC und der Testabdeckung. Keiner von denen willst du ausrutschen lassen. Eine der beiden nachzurüsten ist niemals so gut wie "in der Hitze des Augenblicks"!

HTH.

Prost,

rauben

Rob Wells
quelle
0

Scitools 'Understand bietet die Möglichkeit, viele Codemetriken für Sie zu generieren. Ich habe nicht viel Erfahrung mit den Funktionen für Codemetriken, aber die Funktionen für die statische Analyse waren im Allgemeinen gut und der Preis war sehr vernünftig. Die Unterstützung war ausgezeichnet.

andreas buykx
quelle
0

Project Code Meter bietet einen differenziellen Entwicklungsverlaufsbericht (im Excel-Format), der Ihre Codierungsfortschrittsmetriken in SLOC, Zeit- und Produktivitätsprozentsatz anzeigt (die Zeitschätzung basiert auf der zyklomatischen Komplexität und anderen Metriken). Dann können Sie in Excel einfach das gewünschte Diagramm erstellen.

Weitere Informationen finden Sie in diesem Artikel, in dem Schritt für Schritt beschrieben wird: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

Benji
quelle
0

Für Java können Sie unser Tool QualityGate ausprobieren , das mehr als 60 Quellcodemetriken berechnet, alle Änderungen im Laufe der Zeit verfolgt und außerdem eine Gesamtbewertung für die Wartbarkeit des Quellcodes bereitstellt.

Tibor Bakota - FrontEndART
quelle