使用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命令选项,可以找到
funcA @ line#3
funcB @ line#4
ctags中是否有任何选项可以在第9行找到'if'循环,'else'@ line#13。同样,'while'@ line#18?
如果不是ctags,任何其他工具来解析代码以找出这样的条件循环?编写自己的解析器是另一种选择,但随后在评论中确定关键字是否具有挑战性。
答案 0 :(得分:0)
如果您愿意编写自己的正则表达式,那么您应该可以使用Exuberant Ctags执行此操作。请参阅手册中Options下的--regex-<LANG>
。
作为替代方案,您可以尝试libclang将代码解析为abstract syntax tree (AST),并以编程方式查找有趣的元素。