2016-12-15 1 views
0

Avec ctags, on peut rechercher des fonctions, des variables, des structures et quoi pas dans le code, for e.g.. Je voulais obtenir les numéros de ligne où toutes les boucles conditionnelles sont appelées dans le code.Can ctags recherche de boucles conditionnelles dans le code

Pour exemple:

1  #include <stdio.h> 
2  
3  void funcA() {} 
4  void funcB(int a){} 
5  
6  int main() { 
7   int a = 0; 
8   
9   if(a == 1) 
10   { 
11    funcA(); 
12   } 
13   else 
14   { 
15    funcB(a); 
16   } 
17  
18   while(1); 
19   
20   return 0; 
21  } 
22 

Dans l'extrait de code exemple, avec des options de commande ctags, on peut trouver

FoncA @ ligne # 3

FoncB ligne @ # 4

Y a-t-il une option dans ctags pour trouver la boucle 'if' appelée à la ligne numéro 9, 'else' @ ligne # 13. De même, «tandis que» @ ligne # 18?

Si ce n'est pas ctags, tout autre outil pour analyser le code pour trouver de telles boucles conditionnelles? L'écriture d'un analyseur est une autre alternative, mais déterminer les mots-clés dans les commentaires peut s'avérer difficile.

Répondre

0

Vous devriez être capable de le faire avec Exuberant Ctags si vous êtes prêt à écrire vos propres expressions régulières. Voir --regex-<LANG> sous Options dans le manuel. Comme alternative, vous pouvez essayer libclang pour analyser votre code dans un abstract syntax tree (AST), et de trouver les éléments intéressants par programmation.