2008-09-15 9 views
14

Estoy especialmente interesado en las herramientas que se pueden conectar a Vim para permitir la exploración de fuentes de estilo CScope (comandos 1-2 teclas para localizar definiciones de funciones, llamadores, símbolos globales, etc.) para idiomas además de C/C++ como Java y C# (ya que Vim y Cscope ya se integran muy bien para navegar en C/C++). No me interesan las herramientas basadas en IDE porque sé que Microsoft y otros proveedores ya abordan ese espacio. Prefiero usar Vim para editar y navegar, pero no conozco las herramientas para C# y/o Java que me dan el mismo poder que CScope.¿Hay navegadores fuente de estilo CScope para otros idiomas además de C/C++ en Windows?

La respuesta original a esta pregunta incluía un puntero a la aplicación CSWrapper que aparentemente corrige un error que algunos usuarios experimentan al integrar Vim y CScope. Sin embargo, mi instalación de Vim/CScope funciona bien; Solo estoy tratando de expandir la funcionalidad para permitir el uso de Vim para editar código en otros idiomas.

+0

para Python: http://stackoverflow.com/questions/3718868/using-cscope-to-browse-python-code-with-vim – idbrii

Respuesta

3

CScope funciona para Java.

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

Aunque Cscope inicialmente estaba destinado sólo para uso con el código C, es en realidad una herramienta muy flexible que funciona bien con lenguajes como C++ y Java . Puede considerarlo como una base de datos 'grep' genérica, con la capacidad de reconocer ciertas construcciones adicionales, como llamadas a funciones y definiciones de variables. De forma predeterminada, Cscope solo analiza C, lex y archivos yacc (.c, .h, .l, .y) en el directorio actual (y subdirectorios, si pasa el distintivo -R), y actualmente no hay forma de para cambiar esa lista de extensiones de archivos (sí, debemos cambiar eso). Entonces, en su lugar, debe hacer una lista de los archivos que desea analizar, y llamarlo 'cscope.files' (puede llamarlo como quiera si invoca 'cscope -i foofile'). Una manera fácil (y muy flexible) a de hacer esto es mediante el comando de confianza Unix 'hallazgo':

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

Ahora Run '-b cscope' para reconstruir la base de datos (el -b simplemente construye la base de datos sin iniciar la GUI de Cscope), y podrá explorar todos los símbolos en sus archivos Java. Aparentemente hay personas usando Cscope para navegar y editar grandes volúmenes de archivos de documentación , que muestra qué tan flexible es el analizador de Cscope.

5

Afirmar que Cscope admite Java es un tramo extremo. Parece tratar un método como una función, por lo que no tiene idea de que A.foo(), A.foo (Object) y B.foo() son todos diferentes. Este es un gran problema con una gran base de código (incluidas bibliotecas de terceros) con muchos métodos del mismo nombre. (No he consultado la fuente Cscope, pero esto es lo que encontré probando el último Cscope, versión 15.7a-3.3 de Debian inestable.)

Probé Cscope en un gran proyecto Java, y no fue en todo es útil para mí debido a esta limitación.Es triste que no podamos obtener una respuesta rápida a una pregunta básica como "quién llama a este método", utilizando software libre fuera de los IDEs grandes, pero también podemos aceptarlo. (Me encantaría si estoy equivocado. Recurro a hacks como comentar el método y volver a compilar.)

3

Un poco tarde a la fiesta aquí, pero mi proyecto https://github.com/eapache/starscope/ proporciona una agradable marco para generar bases de datos cscope para más idiomas. Actualmente es compatible con Ruby and Go, y Javascript está en progreso. Agregar Java/C# no debería ser tan difícil.

Editar: Javascript ahora es totalmente compatible.

+0

Gracias, a echar un vistazo! –

Cuestiones relacionadas