2010-11-10 2 views
8

C'è un modo rapido per trovare tutto il codice commentato su file Java in Eclipse? Qualche opzione in Cerca, forse, o qualche add-on che può fare questo?Ricerca di codice commentato su file in Eclipse

Dovrebbe essere possibile trovare solo il codice che viene commentato, ma non i commenti ordinari.

+0

Dubito che troverai qualcosa del genere. Come detto, potrebbe esserci un plugin che lo fa, ma nessuno che io abbia mai incontrato. –

+2

La tua domanda non è chiara. Trovare i commenti è facile: cerca "/ *" o "//". E poiché i commenti non hanno una relazione formale con il codice, quando un commento "riguarda" il codice vicino, e quando si tratta solo di un commento ("un sonetto per ...")? Cosa vuoi veramente fare? –

+1

Penso che voglia trovare il codice che viene commentato, non il codice che ha un commento. – Jorn

risposta

-1

È possibile eseguire una ricerca in Eclipse.

Tutto ciò che serve per cercare gli è /* e //

Tuttavia, troverete solo i file che contengono tale espressione, e non l'effettivo contenuto che credo che siete dopo.

Tuttavia, se si utilizza Linux è possibile ottenere facilmente tutti i commenti con un solo rivestimento.

+0

Cura di condividere l'unico rivestimento? –

0

@Jorn detto:

Penso che [l'OP] vuole trovare il codice che viene commentata, non il codice che ha un commento.

Se l'intenzione è quello di trovare commentate codice, quindi non credo che sia possibile in generale. Il problema è che è impossibile distinguere tra commenti scritti come codice o pseudo-codice e codice che è commentato. Fare questa distinzione richiede intelligenza umana.

Ora gli IDE dispongono in genere di una funzione "attiva/disattiva commenti" che commenta il codice in un modo particolare. Sarebbe possibile scrivere uno strumento/plugin che corrisponda allo stile prodotto da un particolare IDE . Ma probabilmente non è abbastanza buono, specialmente dal momento che la riformattazione del codice in genere elimina le caratteristiche che rendono riconoscibile il codice commentato.

+0

Perché il voto negativo? –

1

È possibile contrassegnare il proprio codice commentato con un tag di attività. È possibile creare i propri tag attività in Eclipse.

Dal menu, selezionare Finestra -> Preferenze. Nella finestra di dialogo Preferenze, vai su Generale -> Editor -> Editor di testo strutturato -> Tag delle attività.

Aggiungere un tag attività appropriato, ad esempio COMMENTO. Imposta la priorità su Basso.

Quindi, qualsiasi codice commentato, è possibile contrassegnare con il tag di attività COMMENTATA. Un elenco di questi tag attività, insieme alle relative posizioni, viene visualizzato nella visualizzazione Attività.

0

Se il problema è trovare il codice commentato, è necessario un modo per trovare commenti e un modo per decidere se un commento potrebbe contenere codice.

Un modo semplice per eseguire questa operazione consiste nella ricerca di commenti contenenti elementi simili al codice. Sarei tentato di cacciare per i commenti contenenti un ";" carattere (o qualche altro indicatore raro come "="); sarà piuttosto difficile avere qualche codice commentato interessante che non contenga questo e nella mia esperienza con i commenti, non vedo molte persone che scrivono che contengono questo. Una ricerca regolare per questo dovrebbe essere piuttosto semplice, anche se ha rilevato alcuni falsi positivi aggiuntivi (ad es. // in una stringa letterale).

Un modo più sofisticato per eseguire ciò è utilizzare un lexer o parser Java.Se si dispone di un lexer che restituisce i commenti ai token (non tutti lo fanno, i compilatori Java non sono interessati ai commenti), quindi è sufficiente eseguire la scansione dei lessemi per un commento e eseguire il controllo punto e virgola descritto sopra. Con questo approccio non otterrai alcun risultato di falsi positivi per commenti come cose in stringhe letterali.

Se si dispone di un parser re-engineering che cattura i commenti come parte della AST (come il nostro SD Java Front End), è possibile eseguire la scansione meccanicamente l'albero sintattico per i commenti, alimentare il contesto commento torna al parser a verificare se il contenuto è simile al codice e segnalare qualsiasi passaggio che supera tale modulo di test con un tasso di errore dipendente dalla dimensione (10 errori in 15 caratteri implica "è davvero un commento"). Ora il test "simile al codice" richiede che il parser di reingegnerizzazione sia disposto a riconoscere qualsiasi sottostringa della lingua (Java). DMS Software Reengineering Toolkit il nostro front-end Java può effettivamente farlo, utilizzando l'accesso alla grammatica sepolto nel front-end, poiché è disposto ad avviare un'analisi per qualsiasi terminale (non) della lingua, e questa domanda è "puoi trovare un sequenza di terminali (non) che consuma la stringa? ".

Gli approcci lesser e parser sono rispettivamente piccole e grandi mazze. Se OP lo farà una volta sola, può attenersi alla ricerca regex manuale. Se il problema è controllare ripetutamente il codice base (necessario nelle grandi organizzazioni), vorrebbe uno strumento che possa essere eseguito regolarmente.

16

In Eclipse, ho solo fare una ricerca di file con la casella di controllo espressione regolare acceso:

(/\*.*;.*\*/)|(//.*;) 

Esso troverà il punto e virgola in

// Questi ;

e/* questi; */

Lavori per me.

+1

È un buon inizio, anche se tt potrebbe fornire alcuni falsi positivi come String s = "http : // some.site "; –

+1

Per evitare i falsi positivi dagli URL, utilizzo '/\*.*;.*\*/ | [^:] //.*; |^//. *;', Che richiede // di non venire dopo un: – KevinL

+2

@KevinL, non penso che funzionerà con gli URL del modulo 'file: /// somefile' –