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?


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:


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


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.


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.


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 .


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.)


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.



2

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

Alt-Text
(Quelle: teel.ws )


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




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.


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


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.


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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.