Esistono browser di origine in stile CScope per altri linguaggi oltre a C/C++ su Windows?

StackOverflow https://stackoverflow.com/questions/65456

  •  09-06-2019
  •  | 
  •  

Domanda

Sono particolarmente interessato agli strumenti che possono essere collegati a Vim per consentire la navigazione del codice sorgente in stile CScope (comandi da 1-2 tasti per individuare definizioni di funzioni, chiamanti, simboli globali e così via) per linguaggi oltre a C/C++ come Java e C# (poiché Vim e Cscope si integrano già molto bene per la navigazione in C/C++).Non sono interessato agli strumenti basati su IDE poiché so che Microsoft e altri fornitori si occupano già di questo spazio: preferisco usare Vim per la modifica e la navigazione, ma non conosco strumenti per C# e/o Java che mi diano la stessa potenza di CScope.

La risposta originale a questa domanda includeva un puntatore all'applicazione CSWrapper che apparentemente risolve un bug riscontrato da alcuni utenti nell'integrazione di Vim e CScope.Tuttavia, la mia installazione Vim/CScope funziona correttamente;Sto solo cercando di espandere la funzionalità per consentire l'utilizzo di Vim per modificare il codice in altre lingue.

È stato utile?

Soluzione

CScope funziona per Java.

Da http://cscope.sourceforge.net/cscope_vim_tutorial.html:

Sebbene CSPOPE fosse originariamente inteso solo per l'uso con il codice C, in realtà è uno strumento molto flessibile che funziona bene con lingue come C ++ e Java.Puoi pensarlo come un database "grep" generico, con la capacità di riconoscere alcuni costrutti aggiuntivi come chiamate di funzione e definizioni variabili.Per impostazione predefinita CSCOPE solo analizza i file C, Lex e YACC (.C, .H, .L, .Y) nella directory corrente (e le sottodirectory, se si passa il flag -r) e attualmente non c'è modo di cambiarlo Elenco delle estensioni dei file (sì, dovremmo cambiarlo).Quindi invece devi fare un elenco dei file che si desidera analizzare e chiamarlo "cscope.files" (puoi chiamarlo qualsiasi cosa tu voglia se invochi "cscope -i foofile").Un modo semplice (e molto flessibile) per farlo è tramite il fidato comando "Trova":

find . -name '*.java' > cscope.files

Ora esegui 'CSCOPE -B' per ricostruire il database (il -b crea semplicemente il database senza avviare la GUI CSPO) e sarai in grado di sfogliare tutti i simboli nei file Java.Apparentemente ci sono persone là fuori che usano CSPOPE per navigare e modificare grandi volumi di file di documentazione, che mostrano quanto sia flessibile il parser di cscope.

Altri suggerimenti

Affermare che Cscope supporti Java è un'esagerazione estrema.Sembra trattare un metodo come una funzione, quindi non ha idea che A.foo(), A.foo(Object) e B.foo() siano tutti diversi.Questo è un grosso problema con una codebase di grandi dimensioni (incluse librerie di terze parti) con molti metodi con lo stesso nome.(Non ho guardato il sorgente Cscope, ma questo è quello che ho trovato provando l'ultimo Cscope, versione 15.7a-3.3 di Debian unstable.)

Ho provato Cscope su un grande progetto Java e non mi è stato affatto utile a causa di questa limitazione.È triste che non possiamo ottenere una risposta rapida a una domanda fondamentale come "chi chiama questo metodo", utilizzando software libero al di fuori dei grandi IDE, ma possiamo anche accettarlo.(Mi piacerebbe se sbaglio.Ricorro ad hack come commentare il metodo e ricompilare.)

Un po' tardi per la festa qui, ma mio https://github.com/eapache/starscope/ project fornisce un buon framework per generare database cscope per più lingue.Attualmente supporta Ruby e Go e Javascript è in fase di elaborazione.Aggiungere Java/C# non dovrebbe essere così difficile.

Modificare:Javascript è ora completamente supportato.

Sono d'accordo con Andrew: provare a ottenere una gerarchia delle chiamate per un metodo restituisce tutte le chiamate con lo stesso nome, anche se provengono da una classe diversa.

È possibile utilizzare Eclim per collegare Eclipse a VIM

http://eclim.org/

che i sostenitori chiamano gerarchia

http://eclim.org/vim/java/inspection.html#call-hierarchy

Questo potrebbe essere quello che stai cercando:

http://www.vim.org/scripts/script.php?script_id=1783

Puoi anche imitare alcune funzionalità CScope nel tuo file .vimrc utilizzando le varie versioni di carta geografica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top