fix(source-generators-tests): 修复PR269引用元数据唯一性回归测试

- 修正 SchemaConfigGeneratorTests 的 reference metadata 唯一性用例,改用合法 schema 路径碰撞覆盖后缀分配逻辑

- 更新 analyzer-warning-reduction 跟踪与 trace,记录 PR #269 failed-test follow-up 和定向验证结果
This commit is contained in:
gewuyou 2026-04-23 08:51:38 +08:00
parent 050f4321c6
commit 2fc8442bd4
3 changed files with 51 additions and 9 deletions

View File

@ -2473,7 +2473,7 @@ public class SchemaConfigGeneratorTests
}
/// <summary>
/// 验证引用元数据成员名在不同路径规范化后发生碰撞时,生成器仍会分配全局唯一的成员名。
/// 验证引用元数据成员名在不同合法字段路径规范化后发生碰撞时,生成器仍会分配全局唯一的成员名。
/// </summary>
[Test]
public void Run_Should_Assign_Globally_Unique_Reference_Metadata_Member_Names()
@ -2534,12 +2534,21 @@ public class SchemaConfigGeneratorTests
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"drop-items": {
"type": "array",
"items": { "type": "string" },
"x-gframework-ref-table": "item"
"drop": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": { "type": "string" },
"x-gframework-ref-table": "item"
},
"items1": {
"type": "string",
"x-gframework-ref-table": "item"
}
}
},
"drop_items": {
"dropItems": {
"type": "array",
"items": { "type": "string" },
"x-gframework-ref-table": "item"
@ -2568,6 +2577,7 @@ public class SchemaConfigGeneratorTests
Assert.That(generatedSources.TryGetValue("MonsterConfigBindings.g.cs", out var bindingsSource), Is.True);
Assert.That(bindingsSource, Does.Contain("public static readonly ReferenceMetadata DropItems ="));
Assert.That(bindingsSource, Does.Contain("public static readonly ReferenceMetadata DropItems1 ="));
Assert.That(bindingsSource, Does.Contain("public static readonly ReferenceMetadata DropItems2 ="));
Assert.That(bindingsSource, Does.Contain("public static readonly ReferenceMetadata DropItems11 ="));
}

View File

@ -7,8 +7,8 @@
## 当前恢复点
- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-025`
- 当前阶段:`Phase 25`
- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-026`
- 当前阶段:`Phase 26`
- 当前焦点:
- 已完成 `GFramework.Core` 当前 `MA0016` / `MA0002` / `MA0015` / `MA0077` 低风险收口批次
- 已复核 `net10.0` 下的 `MA0158` 基线:`GFramework.Core` / `GFramework.Cqrs` 当前共有 `16` 个 object lock
@ -30,6 +30,9 @@
- 已完成当前 PR #269 第五轮 follow-up`SchemaConfigGenerator` 补上归一化后属性名冲突诊断并新增
`GF_ConfigSchema_014``CqrsHandlerRegistryGenerator``dynamic` 归一化为 `global::System.Object`
同时收紧相关 generator regression tests
- 已完成当前 PR #269 failed-test follow-up修正 `SchemaConfigGeneratorTests`
`Run_Should_Assign_Globally_Unique_Reference_Metadata_Member_Names` 的测试输入,使其继续覆盖
reference metadata 成员名全局去冲突,但不再依赖现已被 `GF_ConfigSchema_014` 拦截的非法同层 schema key 冲突
- 已更新 `AGENTS.md`:变更模块必须运行对应 `dotnet build -c Release`,并处理或显式报告模块构建 warning
不再默认留给长期 warning 清理分支
- `CoroutineScheduler` 的 tag/group 字典已显式使用 `StringComparer.Ordinal`,保持既有区分大小写语义
@ -70,6 +73,8 @@
已分别在 `CqrsHandlerRegistryGenerator``SchemaConfigGenerator` 中收口,并补齐定向 generator regression tests
- 已完成当前 PR #269 的第五轮 review follow-up收口 `SchemaConfigGenerator` 的归一化字段名冲突诊断、
`CqrsHandlerRegistryGenerator``dynamic` 类型引用风险,并同步更新 `AGENTS.md` 的模块 build / warning 治理规范
- 已完成当前 PR #269 的 failed-test follow-up将 reference metadata 成员名唯一性回归测试改为合法 schema 路径组合,
并重新通过定向 generator test
- 已完成 `GFramework.Game.SourceGenerators``SchemaConfigGenerator` 的第一批 `MA0051` 收口warnings-only 基线剩余 `9`
`MA0051`
@ -144,7 +149,8 @@
- 缓解措施:继续以被修改 generator 项目的独立 warnings-only build 作为主验收,并用 focused generator test 验证行为
- source generator test warning 治理风险:`GFramework.SourceGenerators.Tests` 当前仍有既有 `MA0051` / `MA0004` / `MA0048`
warning本轮 focused test 已通过,但测试项目整包 warning 尚未进入本轮写集
- 缓解措施:后续若继续修改该测试项目,应按新增 `AGENTS.md` 规则先跑其独立 build并在进入下一轮实现前明确 warning 收口范围
- 缓解措施:本轮已在 failed-test follow-up 的定向 `dotnet test` 中再次确认这些 warning 仍为既有基线;后续若继续修改该测试项目,
应按新增 `AGENTS.md` 规则先明确 warning 收口范围,再决定是否进入专门清理切片
- Godot 资产文件环境风险:当前 worktree 的 `GFramework.Godot` restore/build 仍会命中 Windows fallback package folder
- 缓解措施:后续若继续触达 Godot 模块,先用 Linux 侧 restore 资产或 Windows-hosted 构建链刷新该项目,再补跑定向 build
- 并行实现风险:批量收敛时若 subagent 写入边界不清晰,容易引入命名冲突或重复重构

View File

@ -1,5 +1,31 @@
# Analyzer Warning Reduction 追踪
## 2026-04-23 — RP-026
### 阶段PR #269 failed-test follow-upRP-026
- 启动复核:
- 使用 `$gframework-pr-review` 抓取当前分支 PR #269 的 test report确认最新失败信号来自
`SchemaConfigGeneratorTests.Run_Should_Assign_Globally_Unique_Reference_Metadata_Member_Names`
- 本地复测前先对 `GFramework.SourceGenerators.Tests` 执行 `dotnet restore -p:RestoreFallbackFolders=""`
规避当前 WSL worktree 仍残留的 Windows NuGet fallback package folder 资产干扰
- 决策:
- 保持 `SchemaConfigGenerator` 当前 `GF_ConfigSchema_014` 语义不变PR 失败是测试输入陈旧,而不是生成器行为回退
- 将用例改写为“合法 schema 路径在 reference metadata member name 上碰撞”的场景,继续覆盖全局唯一后缀分配逻辑
- 实施调整:
- 将测试 schema 从根级 `drop-items` / `drop_items` 非法同层冲突改为 `drop.items``drop.items1``dropItems`
`dropItems1` 的合法组合
- 更新断言,验证 `MonsterConfigBindings.g.cs` 中继续生成 `DropItems``DropItems1``DropItems2``DropItems11`
- 验证结果:
- `dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders="" -nologo`
- 结果:通过
- `dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~Run_Should_Assign_Globally_Unique_Reference_Metadata_Member_Names -m:1 -p:RestoreFallbackFolders="" -nologo`
- 结果:`1 Passed``0 Failed`
- 说明:`GFramework.SourceGenerators.Tests` 在构建阶段仍会打印既有 `MA0048``MA0051``MA0004` warning本轮未扩展到该测试项目的 warning 清理
- 下一步建议:
- 若继续收口 PR #269,可再次抓取最新 test report / open thread确认是否还有新的 CI 失败信号
- 若回到 analyzer 主线,优先决定是否为 `GFramework.SourceGenerators.Tests` 单独开一轮 warning 清理切片
## 2026-04-23 — RP-025
### 阶段PR #269 第五轮 review follow-up 与模块 build / warning 治理补充RP-025