Trouver une fonction dans du code

Portrait de furet

De manière générale

Vous avez plusieurs fichiers de code et vous recherchez une fonction particulière, vous connaissez sa signature, mais vous ne savez pas où elle se trouve.
grep peut vous aider !

grep mafonction *.c

Exemple :

furet@clubnix9 ~/bidon/trunk/src $ grep fillInitData *.c
conf.c: * \fn void fillInitData(log *infos)
conf.c:void fillInitData(log *infos){
main.c:         fillInitData(infos);

Il est même possible de coupler ça avec find, si plusieurs niveaux de dossiers :

find . -name "*\.[ch]" -exec grep -nH --color '{}' \;

La commande ultime :D

En C

Les fonctions précédentes fonctionnent bien évidement, mais il est également possible d'utiliser cscope qui est spécialement prévu pour ça.

Trouver le bon exemple

Dans votre dossier de sources vous cherchez un exemple de l'utilisation d'une fonction X. Oula chercher dans tous les fichiers c'est long, mais nous avons vu comment les choisir. Mais vous être encore plus fainéant que ça, vous voulez avoir le fichier le plus court. La commande ultime de la mort qui tue !

find . -iname "Makefile.am" -exec grep -q "check_PROGRAM" {} \; -printf "%s %h/%f\n" |sort -n 

find . -iname "Makefile.am" ne demande que les fichiers Makefile.am

-exec grep -q "check_PROGRAM" '{}' \; cherche la chaine "check_PROGRAM" dans les fichiers trouvés en n'affichant rien "-q"

-printf "%s %h/%f\n" Pour chaque fichier ou grep a réussit sa recherche imprime : la taille en octet ("%s") les dossiers menant au fichier ("%h") et le nom du fichier ("%f")