SuperAPI AI 工具集

schema-coverage

智能体与模型

查看项目

更新于 10-15 21:37

技能介绍

用途:给定一个 Terraform 资源,将其 schema 中的属性/块与验收测试所配置和断言的内容进行对比,找出可改进覆盖率的点,并按固定顺序输出报告:无覆盖属性、弱覆盖属性。

输入:可由用户提供资源名(如 elasticstack_elasticsearch_security_api_key)、schema 文件或验收测试文件路径,或包含资源与 *_acc_test.go 的 Go 包目录;若用户打开了验收测试,可从 resource.Test(...)、resource.ParallelTest(...) 步骤或 testAcc...Resource... 等配置构建函数名推断被测资源。

工作流程:一、定位并解析 schema,收集顶层属性及 Elem、列表/集合/映射中的嵌套块,记录路径、Required/Optional/Computed、ForceNew、类型、MaxItems/MinItems。二、收集测试中属性的两种独立信号:HCL 配置中被显式设置的属性,以及检查中被引用的属性(值断言、仅存在断言、缺失断言、集合断言),并检测同一资源多个 TestStep 间的更新覆盖。三、构建覆盖矩阵:是否配置、是否断言、断言质量(值精确、仅存在、缺失)、取值多样性、可选未设置覆盖、空集合覆盖、更新覆盖。四、按模板输出报告。

报告含范围、无覆盖属性、弱覆盖属性等部分,每项给出 schema 标志、观察到的用法、差距与具体改进建议,并附按最小改动优先的后续步骤:为仅存在检查补充值断言、增加未设置可选属性步骤与 TestCheckNoResourceAttr、增加空集合步骤与断言、增加更新步骤及更新后断言。

判断原则:优先值精确断言;Optional 属性至少有一处省略并断言缺失或默认行为;集合补充空或省略情形;更新行为需多步骤且断言新状态;仅 Computed 属性在取值不确定时可接受仅存在断言。

限制:部分 schema 通过 helper 构建,需沿引用追查到所有属性键;检查中的属性路径常带 block.0.attr 索引,匹配时需统一归一化;仅出现在原生 HCL 中而未断言的属性视为弱覆盖。其余细节暂未提供。