Eclipse zählt Codezeilen

106

Ich habe das Metrics-Plugin ausprobiert und obwohl es nett ist, ist es nicht das, wonach mein Chef sucht. Es zählt eine Linie mit nur einer }als Linie und er möchte nicht, dass dies als "es ist keine Linie, es ist eine Stilwahl" zählt. Ich muss auch eine Art Bericht über die bereitgestellten Metriken erstellen. Gibt es dafür gute Werkzeuge?

verwirrt
quelle
1
Nebenfrage: Soll dies als Metrik verwendet werden, um zu zeigen, wie gut Ihre Softwareentwickler arbeiten? In diesem Fall ist die Anzahl der Zeichen / Nicht-Leerzeichen möglicherweise besser. Trotzdem scheint es eine wirklich willkürliche Metrik zu sein ... Wie ein Freund sagte: "Im Allgemeinen sind mehr Codezeilen zur Lösung eines Problems nicht besser (oder schlechter) als weniger Codezeilen zur Lösung desselben Problems"
Sancarn

Antworten:

92

Installieren Sie das Eclipse Metrics Plugin . So erstellen Sie einen HTML-Bericht (mit optionalem XML und CSV) right-click a project -> Export -> Other -> Metrics.

Sie können die Metriken für Codezeilen anpassen, indem Sie leere Zeilen und Kommentare ignorieren oder Javadoc ausschließen, wenn Sie möchten. Überprüfen Sie dazu die Registerkarte unter Preferences -> Metrics -> LoC.

Das ist es. Es gibt keine spezielle Option, um geschweifte Klammern auszuschließen {}.

Das Plugin bietet eine alternative Metrik zu LoC namens Number of Statements . Dies ist, was der Autor dazu zu sagen hat:

Diese Metrik repräsentiert die Anzahl der Anweisungen in einer Methode. Ich halte es für eine robustere Maßnahme als Codezeilen, da letztere in Bezug auf unterschiedliche Formatierungskonventionen fragil ist.

Bearbeiten:

Nachdem Sie Ihre Frage geklärt haben, benötigen Sie meines Erachtens eine Ansicht für Verstöße gegen Echtzeitmetriken, z. B. Compiler-Warnungen oder -Fehler. Sie benötigen außerdem eine Berichtsfunktion, um Berichte für Ihren Chef zu erstellen. Das oben beschriebene Plugin dient zur Berichterstellung, da Sie die Metriken exportieren müssen, wenn Sie sie anzeigen möchten.

aliopi
quelle
Genau das, wonach ich gesucht habe und eine schöne Exportfunktion.
George_h
1
Die aktuelle Version dieses Plugins (3.14.1) scheint nicht mit Eclipse Luna (4.4) zu funktionieren. Überraschenderweise funktioniert das alte Metrics-Plugin von Sourceforge immer noch ...
Ejain
Viele Leute berichten, dass es nicht mehr funktioniert, aber niemand meldet einen Fehler bei SourceForge ...
Thomas Weller
6
Ja. Ich kann keine Optionen unter sehen right click a project -> Export, ich habe das Plug-In direkt vom Eclipse-Marktplatz installiert - Version ist - Eclipse Metrics 3.12.0, kann mir bitte jemand helfen. Vielen Dank!
OverrockSTAR
2
Es gibt eine funktionierende Version - github.com/qxo/eclipse-metrics-plugin/blob/master/updatesite/…
Damian
262

Es gibt immer die "Brute Force":

  1. Suche-> Datei

  2. Geben Sie Folgendes unter "Text enthalten" -> ein ^.*$. Aktivieren Sie dann das Kontrollkästchen "Regulärer Ausdruck"

  3. Geben Sie Folgendes unter "Dateinamenmuster" -> ein *.java

  4. Klicken Sie auf "Suchen"

  5. Überprüfen Sie die Anzahl der Übereinstimmungen auf der Registerkarte "Suchen".

Christian
quelle
11
Dies tat genau das, wonach ich suchte. Es schließt keine Klammern oder etwas Besonderes aus, aber es gibt die Antwort, nach der ich gesucht habe, IN Eclipse, OHNE Plugins. Vielen Dank!
Luke
24
Sie können auch verwenden \n[\s]*und es wird auch leere Zeilen ignorieren
Ascalonian
3
Sehr schöne Lösung ohne ein weiteres Plugin! +1
Stephan
2
Dies funktioniert mit der neuesten (Neon-) Sonnenfinsternis, das Metrik-Plugin jedoch nicht
Anatoly Yakimchuk,
2
@ omerio-Kommentare müssen ebenfalls eingegeben werden und sind Bestandteil jedes Quellcodes. Ohne diese Induktionen wären sie nicht wichtig oder nur blinder Text - was ein schwerwiegender Fehler ist.
Axel Amthor
23

Wenn unter OSX oder * NIX verwenden

Holen Sie sich alle aktuellen Zeilen von Java-Code aus * .java-Dateien

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Ruft alle Zeilen aus den * .java-Dateien ab, die leere Zeilen und Kommentare enthalten

find . -name "*.java" -exec cat | wc -l

Holen Sie sich Informationen pro Datei, dies gibt Ihnen [Pfad zur Datei + "," + Anzahl der Zeilen]

find . -name "*.java" -exec wc -l {} \;
ZOXIS
quelle
Wenn
Das hat bei mir funktioniert gefunden. -name "* .java" | xargs cat | grep '[alnum]' | wc -l
omerio
2
sollte seinfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
Krieger107
8

Eine andere Möglichkeit wäre die Verwendung eines anderen Dienstprogramms loc, z. B. LocMetrics .
Es werden auch viele andere Loc-Tools aufgelistet . Die Integration mit Eclipse wäre nicht immer vorhanden (wie bei Metrics2 , das Sie überprüfen können, da es sich um eine neuere Version als Metrics handelt ), aber zumindest diese Tools können logische Zeilen (berechnet durch Summieren) begründen die terminalen Semikolons und terminalen geschweiften Klammern).
Sie können auch überprüfen, ob Eclipse-Metriken besser an Ihre Erwartungen angepasst sind.

VonC
quelle
7

Ein weiteres Tool ist Google Analytix , mit dem Sie auch Metriken ausführen können, wenn Sie das Projekt im Fehlerfall nicht erstellen können

ılǝ
quelle
Obwohl die Seite sagt, dass es nur für ältere Versionen von Eclipse ist, funktioniert es auf Luna für mich einwandfrei. Danke dafür.
CamHart
6

Eine Möglichkeit, Codezeilen in Eclipse zu zählen:

Wählen Sie im Menü Suchen / Datei ... die Registerkarte Dateisuche, geben Sie \ n [\ s] * für Text an (dies zählt keine leeren Zeilen) und aktivieren Sie den Befehl Regulärer Ausdruck.

Hutspitze : www.monblocnotes.com/node/2030

ccleve
quelle
Wow, das ist super genial. Schön, dass es keine leeren Zeilen zählt, solange Sie nicht mit der Nummer bezahlt werden ...
JohnnyB
1

Ich habe ein Eclipse-Plugin erstellt, das die Zeilen des Quellcodes zählen kann. Es unterstützt Kotlin, Java, Java Script, JSP, XML, C / C ++, C # und viele andere Dateitypen.

Bitte schauen Sie es sich an. Jedes Feedback wäre dankbar!

Das Git-Hub-Repository ist hier

Li Ying
quelle
0

ProjectCodeMeter zählt LLOC (logische Codezeilen) genau wie beschrieben (nur effektive Zeilen). Es lässt sich als externes Code-Metrik-Tool in Eclipse integrieren. Es ist jedoch nicht in Echtzeit, sondern generiert einen Bericht. Tatsächlich werden viele Quellcode-Metriken wie Komplexität, arithmetische Komplexität, fest codierte Zeichenfolgen, numerische Konstanten gezählt. Die Entwicklungszeit wird sogar in Stunden geschätzt .

Benjamin
quelle
0

Für die statische Analyse habe ich SonarQube verwendet und empfohlen, das nahezu alle Metriken ausführt, die Sie möglicherweise für eine Vielzahl von Sprachen benötigen , und in der Basisversion kostenlos ist (Sie müssen bezahlen, um die Arten von Sprachen zu analysieren, die ich möchte Code nur mit einer Waffe an meinem Kopf).

Sie müssen es als Web-App installieren, die die Analyse von Ihrem Quellcode-Repository aus ausführt, aber es verfügt auch über ein Eclipse-Plugin .

Es ist übertrieben, wenn Sie nur einmal wissen möchten, wie viele Codezeilen sich in Ihrem Projekt befinden. Wenn Sie Metriken über die Zeit verfolgen, projektübergreifende Vergleiche durchführen, Warnungen auslösen möchten, wenn ein Schwellenwert überschritten wird usw., ist dies fantastisch.

Offenlegung: Ich habe keine finanzielle Beziehung zu SonarSource.

Andrew Spencer
quelle
0

Als erstes müssen Sie Ihre Definition von "Codezeile" (LOC) festlegen. In beiden deiner Frage

Es zählt eine Linie mit nur einer} als Linie und er möchte nicht, dass dies als "es ist keine Linie, es ist eine Stilwahl" zählt.

und in den Antworten, z.

Sie können die Metriken für Codezeilen anpassen, indem Sie leere Zeilen und Kommentare ignorieren oder Javadoc ausschließen, wenn Sie möchten

Sie können feststellen, dass Menschen unterschiedliche Meinungen darüber haben, was eine Codezeile ausmacht. Insbesondere sind die Leute oft ungenau, ob sie wirklich die Anzahl der Codezeilen oder die Anzahl der Anweisungen wollen. Wenn Sie beispielsweise die folgende wirklich lange Zeile mit Anweisungen gefüllt haben, was möchten Sie melden, 1 LOC oder Hunderte von Anweisungen?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

Und wenn Sie jemand fragt, wie Sie ein LOC nennen, stellen Sie sicher, dass Sie antworten können, auch wenn es nur "meine Definition eines LOC ist die Definition von Metrics2" ist. Im Allgemeinen geben die gängigen Tools für den am häufigsten formatierten Code (im Gegensatz zu meinem Beispiel) ziemlich ähnliche Zahlen an, sodass Metrics2, SonarQube usw. in Ordnung sein sollten, solange Sie sie konsistent verwenden. Mit anderen Worten, zählen Sie den LOC eines Codes nicht mit einem Werkzeug und vergleichen Sie diesen Wert mit einer späteren Version dieses Codes, die mit einem anderen Werkzeug gemessen wurde.

kc2001
quelle