Eclipse conta le righe di codice


107

Ho provato il plug-in Metrics e sebbene sia carino e tutto il resto, non è quello che sta cercando il mio capo. Conta una riga con una sola }riga e non vuole che venga considerata "non è una riga, è una scelta di stile". Devo anche generare una qualche forma di rapporto sulle metriche fornite. Esistono buoni strumenti per questo?


1
Domanda secondaria: deve essere utilizzato come metrica per mostrare quanto bene stanno lavorando i tuoi sviluppatori di software? In tal caso, il conteggio di caratteri / non spazi potrebbe essere migliore. Anche ancora sembra una metrica davvero arbitraria ... Come ha affermato un amico: "in generale più righe di codice per risolvere un problema non è meglio (o peggio) di meno righe di codice per risolvere lo stesso problema"
Sancarn

Risposte:


93

Installa il plugin Eclipse Metrics . Per creare un report HTML (con XML e CSV opzionali) right-click a project -> Export -> Other -> Metrics.

È possibile regolare le metriche delle linee di codice ignorando le righe vuote e di solo commento o escludendo Javadoc, se lo si desidera. Per fare ciò, controlla la scheda in Preferences -> Metrics -> LoC.

Questo è tutto. Non esiste un'opzione speciale per escludere le parentesi graffe {}.

Il plug-in offre una metrica alternativa a LoC chiamata Numero di dichiarazioni . Questo è ciò che l'autore ha da dire al riguardo:

Questa metrica rappresenta il numero di istruzioni in un metodo. Lo considero una misura più robusta rispetto alle linee di codice poiché quest'ultima è fragile rispetto alle diverse convenzioni di formattazione.

Modificare:

Dopo aver chiarito la tua domanda, capisco che hai bisogno di una visualizzazione per le violazioni delle metriche in tempo reale, come gli avvisi o gli errori del compilatore. È inoltre necessaria una funzionalità di reporting per creare rapporti per il tuo capo. Il plug-in che ho descritto sopra è per i rapporti perché devi esportare le metriche quando vuoi vederle.


Esattamente quello che stavo cercando e una bella funzionalità di esportazione.
george_h

1
La versione corrente di questo plugin (3.14.1) non sembra funzionare con Eclipse Luna (4.4). Sorprendentemente, l'antico plug-in Metrics di Sourceforge funziona ancora ...
ejain

Molte persone riferiscono che non funziona più, ma nessuno segnala un bug su SourceForge ...
Thomas Weller

6
Si. Non riesco a vedere alcuna opzione sotto right click a project -> Export, ho installato il plug-in direttamente dal marketplace di eclipse - la versione è - Eclipse Metrics 3.12.0, qualcuno può aiutarmi. Grazie!
OverrockSTAR


263

C'è sempre la "forza bruta":

  1. Ricerca-> File

  2. Digita quanto segue in "Contenente testo" -> ^.*$. Quindi seleziona la casella di controllo "Espressione regolare"

  3. Digita quanto segue in "Modelli nome file" -> *.java

  4. Fare clic su "Cerca"

  5. Controlla il numero di corrispondenze nella scheda "Cerca".


11
Questo ha fatto esattamente quello che stavo cercando. Non esclude parentesi o altro, ma dà la risposta che stavo cercando, IN eclipse, SENZA plugin. Grazie!
Luca

24
Puoi anche usare \n[\s]*e ignorerà anche le righe vuote
Ascalonian

3
Soluzione molto bella senza la necessità di un altro plugin! +1
Stephan

2
Funziona con l'ultimo (neon) eclipse ma il plug-in delle metriche no
Anatoly Yakimchuk

2
Anche i commenti di @omerio devono essere digitati e sono parte necessaria di qualsiasi codice sorgente. Senza contare quelli induce che non sarebbero importanti o sono solo testo cieco, il che è un grave errore.
Axel Amthor

23

Se su OSX o * NIX usa

Ottieni tutte le righe effettive di codice java dai file * .java

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

Ottieni tutte le righe dai file * .java, che include righe vuote e commenti

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

Ottieni informazioni per file, questo ti darà [percorso del file + "," + numero di righe]

find . -name "*.java" -exec wc -l {} \;

Eseguendo il primo comando su OSX ottengo: grep: intervallo di caratteri non valido 0
omerio

Questo ha funzionato per me, trovare. -name "* .java" | gatto xargs | grep '[alnum]' | wc -l
omerio

2
dovrebbe esserefind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

Un altro modo sarebbe usare un'altra utilità loc, come LocMetrics per esempio.
Elenca anche molti altri strumenti loc . L'integrazione con Eclipse non sarebbe sempre presente (come sarebbe con Metrics2 , che puoi controllare perché è una versione più recente di Metrics ), ma almeno quegli strumenti possono ragionare in termini di linee logiche (calcolate sommando i punti e virgola terminali e le parentesi graffe terminali).
Puoi anche verificare con eclipse-metrics è più adatto a ciò che ti aspetti.


7

Un altro strumento è Google Analytix , che ti permetterà anche di eseguire metriche anche se non puoi costruire il progetto in caso di errori


Sebbene il sito dica che è solo per le versioni precedenti di eclipse, per me funziona perfettamente su Luna. Grazie per questo.
CamHart

7

Un modo possibile per contare le righe di codice in Eclipse:

utilizzando il menu Cerca / File ..., selezionare la scheda Ricerca file, specificare \ n [\ s] * per Contenente testo (questo non conterà le righe vuote) e spuntare Espressione regolare.

Punta di cappello: www.monblocnotes.com/node/2030


wow, è super geniale. bello non contare le righe vuote, purché non vieni pagato dal numero ...
JohnnyB

1

Ho creato un plugin Eclipse, che può contare le righe del codice sorgente. Supporta Kotlin, Java, Java Script, JSP, XML, C / C ++, C # e molti altri tipi di file.

Per favore, dai un'occhiata. Qualsiasi feedback sarebbe apprezzato!

il repository git-hub è qui


0

ProjectCodeMeter conta LLOC (righe logiche di codice) esattamente come descritto (solo righe effettive). si integra in eclipse come strumento di metrica del codice esterno , tuttavia non è in tempo reale, genera un report. in realtà conta molte metriche del codice sorgente come complessità, complessità aritmetica, stringhe codificate, costanti numeriche .. stima anche il tempo di sviluppo in ore .


0

Per l'analisi statica, ho usato e consigliato SonarQube che esegue quasi tutte le metriche che potresti desiderare su una vasta gamma di lingue ed è gratuito nella versione base (devi pagare per analizzare il tipo di lingue che vorrei codice solo con una pistola alla testa).

Devi installarlo come un'app Web che esegue l'analisi dal tuo repository di codice sorgente, ma ha anche un plug-in Eclipse .

È eccessivo se vuoi solo sapere, una tantum, quante righe di codice ci sono nel tuo progetto. Se vuoi tenere traccia delle metriche nel tempo, confrontare tra progetti, avvisi di incendio quando viene superata una soglia, ecc., È fantastico.

Divulgazione: non ho alcun rapporto finanziario con SonarSource.


0

La prima cosa da fare è determinare la propria definizione di "riga di codice" (LOC). In entrambe le tue domande

Conta una riga con un solo} come riga e non vuole che venga considerata come "non è una riga, è una scelta di stile"

e nelle risposte, ad esempio,

È possibile regolare le metriche delle linee di codice ignorando le righe vuote e di solo commento o escludendo Javadoc, se lo si desidera

si può dire che le persone hanno opinioni diverse su ciò che costituisce una riga di codice. In particolare, le persone sono spesso imprecise sul fatto che vogliano davvero il numero di righe di codice o il numero di istruzioni. Ad esempio, se hai la seguente riga molto lunga piena di dichiarazioni, cosa vuoi segnalare, 1 LOC o centinaia di dichiarazioni?

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

E quando qualcuno ti chiede come stai chiamando LOC, assicurati di poter rispondere, anche se è solo "la mia definizione di LOC è la definizione di Metrics2". In generale, per il codice formattato più comunemente (a differenza del mio esempio), gli strumenti popolari forniranno numeri abbastanza simili, quindi Metrics2, SonarQube, ecc. Dovrebbero andare tutti bene, purché li usi in modo coerente. In altre parole, non contare la LOC di un codice utilizzando uno strumento e confrontare quel valore con una versione successiva di quel codice che è stata misurata con uno strumento diverso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.