我不确定这个问题是否适合SO。如果不是,我会删除。
我必须检查一些KLOC的代码。作为其中的一部分,我必须找出循环的深度和条件检查。 [请参阅下面的例子]
如果超过五个意味着我需要记下来。
我的问题是“有什么工具可以帮我吗?”我确实搜索了谷歌,但没有得到答案。
Ex 1:for {}
//阻止深度1
Ex 2:for { if () {} }
//阻止深度2
例3:for () { for () { if() {} } }
//阻挡深度3
答案 0 :(得分:2)
简单计算的程序
//>prog file
//>prog file max_depth
#include <stdio.h>
#include <stdlib.h>
#define DEPTH_MAX 5 //no count top level
int main(int argc, char *argv[]) {
FILE *fp;
int depth_max = DEPTH_MAX;
if(argc > 1){
if(NULL==(fp = fopen(argv[1], "r"))){
perror("fopen");
exit( EXIT_FAILURE);
}
} else {
fp = stdin;
}
if(argc == 3)
depth_max = atoi(argv[2]);
int ch, level = 0;
size_t line_no = 1;
while(EOF!=(ch=fgetc(fp))){
if(ch == '\n'){
++line_no;
} else if(ch == '{'){
if(++level > depth_max)
printf("found at number of line : %zu\n", line_no);
} else if(ch == '}'){
--level;
}
}
exit(EXIT_SUCCESS);
return 0;
}