2016-12-15 4 views
0

ctagsを使用すると、関数、変数、構造体、およびコードに含まれないものを検索できますfor e.g.。コードですべての条件付きループが呼び出される行番号を取得したかったのです。例えばのためにコード内の条件付きループを検索できます

:例のコードスニペットで

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 

、ctagsのコマンドオプションで、1は

てfuncA @ライン#3

funcBのの@ライン#4

を見つけることができます

ctagsに、行番号9、 'else' @ line#13で 'if'ループを呼び出すオプションがありますか?同様に、 'while' @ line#18?

ctagsでなければ、コードを解析してそのような条件ループを見つける他のツールはありますか?自分のパーサーを書くことも別の選択肢ですが、コメントの中で挑戦的になるかどうかをキーワードで判断します。

答えて

0

独自の正規表現を作成したい場合は、Exuberant Ctagsでこれを行うことができます。マニュアルのOptions--regex-<LANG>を参照してください。

代わりにlibclangを試して、コードをabstract syntax tree (AST)に解析し、興味深い要素をプログラムで見つけることができます。

関連する問題