Como encontrar todos os arquivos que incluem uma determinada função?

2

Estou tentando listar todos os arquivos que incluem uma função, por exemplo, matrixCal .

Como posso fazer isso no linux?

    
por bit-question 16.06.2011 / 20:40

3 respostas

5

O grep estaria bem?

grep -R matrixCal /location/of/your/code
    
por 16.06.2011 / 21:24
2

Você pode estar interessado no programa ack . Ele é projetado especificamente para pesquisar por diretórios de código-fonte e retornar coisas úteis em um formato fácil de ler. Basicamente, faz o mesmo que grep , mas num formato muito mais amigável.

    
por 16.06.2011 / 22:49
1

A abordagem tradicional é criar um índice de definições de funções e variáveis para o seu código-fonte e usar seu editor para pesquisar este índice. O comando de indexação tradicional é chamado de ctags e cria um arquivo chamado tags que pode ser usado no vi. O Emacs vem com um etags command semelhante (o arquivo é chamado TAGS ).

Por exemplo, para uma árvore de código-fonte C, veja como você pode gerar o arquivo TAGS para o Emacs:

find -type f -name '*.[hc]' -exec etags {} +

Para uma grande árvore de fontes registrada no Subversion, aqui estão dois refinamentos: ignore .svn diretórios e lide com hierarquias de arquivo que são tão longas que o limite de comprimento da linha de comando seria excedido (resultando em um arquivo truncado porque cada a invocação sucessiva de etags iria reescrever o arquivo do zero).

: >TAGS
find -type d -name .svn -prune -o \
     -type f -name '*.[hc]' -exec etags -a {} +

Em seguida, no Emacs, execute M-x visit-tags-table uma vez e selecione o arquivo TAGS . Coloque o cursor sobre a palavra matrixCal e pressione M-. ( find-tag ) para pular para a definição (abrindo o arquivo contendo a definição, se necessário). Para iterar entre ocorrências, execute M-x tags-search , digite ^matrixCal$ para ir para uma ocorrência e use M-, ( tags-loop-continue ) para ir para a próxima ocorrência. No TAGS buffer, M-x occur RET matrixCal RET fornecerá uma visão geral de onde o símbolo é usado.

    
por 17.06.2011 / 23:17