¿Cómo encontrar las personas que llaman y el destinatario de una función en código C en vi/vim?

¿Cómo encontrar las personas que llaman y el destinatario de una función en código C en vi/vim?

ejemplo mínimo de cscope

Ingo lo mencionó, aquí hay un ejemplo.

Primero debes establecer en tu .vimrc :

set cscopequickfix=s-,c-,d-,i-,t-,e-

Luego al directorio base de su proyecto y ejecute:

cscope -Rb

Esto genera un cscope.out archivo que contiene la información analizada. La generación es razonablemente rápida, incluso para grandes proyectos como el kernel de Linux.

Abre vim y ejecuta:

:cs add cscope.out
:cs find c my_func

c es un mnemotécnico para callers . Los otros cscope siempre que las consultas también sean posibles, los nemotécnicos se enumeran en:

help cscope

Esto agrega una lista de personas que llamaron a la lista de soluciones rápidas, que puede abrir con:

:copen

Vaya a la línea que le interese y presione enter para saltar allí.

Para encontrar a las personas que llaman con el nombre de la función actualmente debajo del cursor, agregue a su .vimrc :

function! Csc()
  cscope find c <cword>
  copen
endfunction
command! Csc call Csc()

e ingresa :Csc<enter> cuando el cursor está encima de la función.

POR HACER:

  • hazlo para la función actual debajo del cursor con un solo comando. Relacionado:Mostrar el nombre de la función en la línea de estado
  • agregue automáticamente la base de datos más cercana (directorios principales) cuando ingrese un archivo:cómo cargar automáticamente cscope.out en vim
  • abra de forma interactiva el gráfico de llamadas como Eclipse. Relacionado:Generar árbol de llamadas desde la base de datos de cscope

Un consejo:me encanta vim, pero es demasiado complicado para mí configurar este tipo de cosas. Y no tiene en cuenta las clases, p. en C++. Si un proyecto le importa lo suficiente, intente que funcione en algún "IDE". Puede implicar algunos gastos generales si el proyecto no realiza un seguimiento de los archivos de configuración IDE (que son blobs que cambian automáticamente y contaminan el repositorio...), pero para mí vale la pena. Para C/C++, mi favorito hasta ahora fue KDevelop 4.


Para eso, Vim se integra con el cscope herramienta; ver :help cscope para más información.