2010-01-26 22 views
19

scrivo/modificare il codice in diversi formati di file come Perl, HTML, CSS, PHP, Javascript, lo script AutoHotkey, ... eccCome si cerca nelle proprie librerie del codice sorgente?

Spesso cerco la mia biblioteca personale di codice sorgente di alcuni esempi di sintassi o logica complessa per riutilizzare il nuovo codice. Oppure, cercherò attraverso un albero di directory per i riferimenti di codice a una stringa particolare (ad esempio tutti i riferimenti a uno stile css particolare in perl, php, html e javascript). A volte cerco anche stringhe criptiche come = ~, perché sto cercando una particolare espressione regolare in uno dei miei programmi perl.

A volte ricerco il codice esistente utilizzando copernico, ma sfortunatamente può cercare solo parole e ignora automaticamente qualsiasi sintassi di programmazione. La ricerca di file di Windows 7 sembra peggio della ricerca di file di Windows XP.

La mia domanda è ... Come si cerca nelle proprie librerie del codice sorgente?

+3

Le domande sul sondaggio devono essere in CW. Inoltre, questo è un po 'troppo vicino ad essere materiale SU. –

+0

Non proprio un duplicato, ma strettamente correlati: http://stackoverflow.com/questions/4101/where-do-you-store-your-code-snippets http://stackoverflow.com/questions/78756/what-do -si-usa-per-tenere-note-come-uno-sviluppatore-chiuso http://stackoverflow.com/questions/33994/what-code-snippet-editor-do-you-use http://stackoverflow.com/questions/212634/best-application-for-storage-code-snippets – dmckee

risposta

5

Di solito uso la funzione di ricerca nel mio IDE (nuSphere phpEd). È abbastanza veloce e mi consente di filtrare per tipi di file. La funzione di ricerca di Windows è inutile e in qualche modo riesce a peggiorare in ogni nuova versione.

In ogni caso, ho fatto una domanda su programming-friendly search programs qualche tempo fa. Forse una delle risposte aiuta.

+0

Grazie a Pekka ... il collegamento è molto utile. – panofish

3

Utilizzare il desktop di Google per indicizzare e cercare nel testo i file di origine.

+0

Google Desktop è stato interrotto. http://googleblog.blogspot.com/2011/09/fall-spring-clean.html –

6

con Cygwin:

$ find /path/to/lib -name \*.pm | xargs grep -l foo 

è assolutamente necessario indicare operatori funky modo che la shell li lascia soli, per esempio ,

$ find . | xargs grep '=~' 
0

Quando devo fare questo tipo di ricerca (cioè voglio trovare una porzione esatta di un codice), ho Eiter utilizzare la "ricerca nella directory", o "la ricerca nella directory regex "fonctionnality di Eclipse PDT (l'IDE con cui sto lavorando) o termina utilizzando grep sulla riga di comando.

(Per coloro che sono su Windows e/o non piace il CLI, ci sono alcuni strumenti grafici che agiscono come grep - Ho visto alcuni colleghi li usano)

3

Scarica Cygwin e impara a usare Grep che è incluso con esso. Potresti essere in grado di ottenere una versione nativa di grep ma Cygwin ha un sacco di cose utili quindi installo solo tutti i pacchetti disponibili.

1

Aprire il/i progetto/i Credo che il codice desiderato sia incluso e utilizzare l'opzione "Trova nel progetto" del mio editor.

1

OSX ha qualcosa chiamato SpotLight e un'interfaccia di comando chiamata mdfind. Quelli sono i migliori strumenti di ricerca locali che puoi avere se sei su un Mac.

+0

+1 per Spotlight - Ho più di 25 anni di codice che ho scritto sul mio Mac, che posso cercare istantaneamente usando Spotlight –

13

Ho usato il trucco find | xargs grep finché non ho trovato ack. Ora lo uso un bel po '.

+0

Verificherò in questo. – panofish

+3

È davvero meglio di grep. L'unico problema per me è che a volte lavoro con lingue meno comuni e non riconosce i loro file sorgente come file che dovrebbe leggere. Puoi aggiungere altri tipi di file all'elenco dei tipi supportati, quindi non è male. – pib

0

Avere uno schema di denominazione coerente. È memset() o setmem()? InitializeUart() o UartInitialize() o UARTInitialize() o UARTInit()?

0

In ambiente Windows utilizzo Examine32. È un cercatore di stringhe generico molto utile (è una frase valida? :-)).

0

Per il codice C, io uso lo stile di codifica BSD, in cui si afferma che una funzione denominata foo dovrebbe essere definita così:

 
char * 
foo(int x) 
{ 
    ... 
} 

Con questo stile, la definizione della funzione è l'unico posto nel codice sorgente in cui il nome della funzione può apparire all'inizio di una riga. Allora è solo una questione di usare grep:

 
grep '^foo' **/*.c 

Questo trucco filtra usi della funzione, di concentrarsi sulla definizione di .

Quando **/*.c cede troppi nomi di file (per davvero grandi alberi di codice sorgente), quindi find deve essere utilizzato:

 
find src -name \*.c -exec grep '^foo' '{}' + 

Nota qui l'uso di + con -exec: questo sostituisce l'uso di xargs.

0

io in genere so che sto per fare qualcosa di un po' schizzinoso, quindi mi Whack un commento vicina sezione. Il commento dovrebbe sempre avere abbastanza parole chiave in esso per me per trovare quello che sto cercando.

Quindi è solo un caso di qualche combinazione di find/grep.

0

Dal momento che ho trascorso la maggior parte della giornata freneticamente digitando bit casuali di codice in Emacs nella vana speranza che uno di loro fare qualcosa di utile, io uso spesso le emacs find-dired comando:

  • Meta-x find-dired
  • immettere il percorso della directory sotto la quale credo che troverò il codice interessante
  • Quando mi chiede per trovare argomenti, digitare (ad esempio): -name '*.rb'
  • Wh it fa apparire l'elenco dei file corrispondenti, %m. per selezionarli tutti (yay per l'evidente mappatura dei tasti di Emacs)
  • Quindi immettere meta-A e immettere una stringa di ricerca.
  • Meta-, (c'è un'altra evidente mappatura dei tasti per te) per passare alla prossima partita.

Se questo non è un grande esempio di uno strumento da $ 20 utilizzato per risolvere un problema di dieci centesimi, non so cosa sia.

0

Il collegamento fornito da Pekka ha fornito la risposta migliore per me finora.

Powergrep è la soluzione più vicina a ciò che stavo cercando. Non è perfetto, ma per una soluzione GUI di Windows ... mi piace.

0

Vedere SD Source Code Search Engine.Ciò interrompe il codice sorgente in frammenti corrispondenti agli elementi di ciascuna lingua (parole chiave, identificatori, stringhe, costanti, numeri, operatori). Puoi formulare ricerche limitate a un solo tipo (di codice) di file, a un particolare insieme di file, a identificatori corrispondenti a pippo su tutti i file, setc.

Il motore di ricerca preindicizza il codice per abilitare le ricerche su migliaia di file molto più velocemente di grep, mostra i risultati in una finestra della GUI e il codice sorgente completo di un hit selezionato in un altro. Puoi avviare il tuo editor sul codice sorgente.

Problemi correlati