如何在多目录的.c文件中批量校验注释与变量值的一致性?
C文件注释与变量值一致性校验脚本开发问题
场景说明
需要开发一个bash脚本,用于在pre-commit阶段检查指定目录及子目录下所有.c文件中,自动生成的注释块内@! DEFAULT值与对应变量赋值的数值是否一致。部分.c文件包含如下结构:
/* @@ SYMBOL = some_symbol1 @@ A2L_TYPE = PARAMETER . . . @! DEFAULT = some_value1 @@ END */ some_symbol1 = some_value1 /* @@ SYMBOL = some_symbol2 @@ A2L_TYPE = PARAMETER . . . @! DEFAULT = some_value2 @@ END */ some_symbol2 = some_value2
每个符合条件的.c文件可能包含数百组这类变量对。
核心校验需求
- 遍历根目录下所有子目录的.c文件,识别包含上述结构的文件,检查注释中
@! DEFAULT的值与对应变量赋值的值是否一致,不一致则抛出错误 - 数值类型匹配:变量值带F后缀(如
0.06F)需与注释中的纯数值(如0.06)视为一致 - 数组类型匹配:变量值带F后缀的数组(如
{ 0.0F, 0.45F, 0.3F })需与注释中的数组(如[ 0.0, 0.45, 0.3 ],无F、括号类型不同)视为一致 - 注释块内
A2L_TYPE与DEFAULT之间可存在任意无关内容
当前尝试的问题
当前编写的脚本运行报错,提示部分grep目标为目录,脚本内容如下:
#!/bin/bash shopt -s globstar for d in */**/*.c do while IFS="" read -r p || [ -n "$p" ] do grep -P "@! DEFAULT" $d done < $d done
内容的提问来源于stack exchange,提问作者urkovic
相关产品推荐
相关产品推荐

