¿Existen navegadores de código fuente estilo CScope para otros lenguajes además de C/C++ en Windows?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Estoy específicamente interesado en herramientas que se pueden conectar a Vim para permitir la exploración de fuentes al estilo CScope (1 o 2 comandos de pulsación de teclas para ubicar definiciones de funciones, llamadores, símbolos globales, etc.) para lenguajes además de C/C++, como Java y C#. (dado que Vim y Cscope ya se integran muy bien para navegar por C/C++).No estoy interesado en las herramientas basadas en IDE porque sé que Microsoft y otros proveedores ya abordan ese espacio. Prefiero usar Vim para editar y explorar, pero no conozco herramientas para C# y/o Java que me brinden La misma potencia que CScope.

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 intentando ampliar la funcionalidad para permitir el uso de Vim para editar código en otros idiomas.

¿Fue útil?

Solución

CScope funciona para Java.

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

Aunque CSCOPE se pretendía originalmente solo para usar con código C, en realidad es una herramienta muy flexible que funciona bien con idiomas como C ++ y Java.Puede considerarlo como una base de datos genérica de 'GREP', con la capacidad de reconocer ciertas construcciones adicionales como llamadas de funciones y definiciones variables.Por defecto, los archivos CSCOPE solo C, LEX y YACC (.C, .H, .L, .y) en el directorio actual (y subdirectorios, si pasa el indicador -r), y actualmente no hay forma de cambiar eso 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 lo que quiera si invoca 'cscope -i foofile').Una forma fácil (y muy flexible) de hacerlo es a través del confiable comando 'Find' UNIX:

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

Ahora ejecute 'CSCOPE -B' para reconstruir la base de datos (el -B simplemente construye la base de datos sin iniciar la GUI CSCOPE), y podrá explorar todos los símbolos en sus archivos Java.Aparentemente, hay personas que usan CSCOPE para navegar y editar grandes volúmenes de archivos de documentación, lo que muestra cuán flexible es el analizador CSCOPE.

Otros consejos

Afirmar que Cscope es compatible con Java es una exageración.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 base de código grande (incluidas bibliotecas de terceros) con muchos métodos con el mismo nombre.(No he mirado la fuente de Cscope, pero esto es lo que encontré al probar el último Cscope, versión 15.7a-3.3 de Debian inestable).

Probé Cscope en un gran proyecto Java y no me resultó del todo útil 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 grandes IDE, pero también podemos aceptarlo.(Me encantaría si me equivoco.Recurro a trucos como comentar el método y volver a compilar).

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

Editar:Javascript ahora es totalmente compatible.

Estoy de acuerdo con Andrew: intentar obtener una jerarquía de llamadas para un método devuelve todas las llamadas con el mismo nombre, incluso si son de una clase diferente.

Puedes usar Eclim para conectar Eclipse a VIM

http://eclim.org/

lo que sus partidarios llaman jerarquía

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

Esto puede ser lo que estás buscando:

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

También puede imitar algunas funciones de CScope en su propio archivo .vimrc utilizando los distintos tipos de mapa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top