You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多目录的.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:25:30