mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:39:00 +08:00
- 重构 HiddenGenericEnvelopeResponse 场景的共享 source fixture,清理当前 MA0051 位点 - 更新 analyzer-warning-reduction 的 tracking 与 trace,记录第五个有效 subagent 写集和基线降至 10 条
56 KiB
56 KiB
Analyzer Warning Reduction 跟踪
目标
继续以“优先低风险、保持行为兼容”为原则收敛当前仓库的 Meziantou analyzer warnings,并在首轮大规模清理完成后, 判断剩余结构性 warning 是否值得在下一轮继续推进。
当前恢复点
- 恢复点编号:
ANALYZER-WARNING-REDUCTION-RP-041 - 当前阶段:
Phase 41 - 当前焦点:
- 已通过第五个有效 subagent 切片完成
CqrsHandlerRegistryGeneratorTests.csGenerates_Precise_Service_Type_For_Hidden_Generic_Type_Definitions()的MA0051收口: 将内联source文本提取为类级常量,保持既有 expected 常量和断言语义不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从11条降到10条; 行号680已从MA0051输出中消失,剩余热点继续集中在CqrsHandlerRegistryGeneratorTests.cs - 已通过第四个有效 subagent 切片完成
CqrsHandlerRegistryGeneratorTests.csGenerates_Precise_Service_Type_For_Hidden_Array_Type_Arguments()的MA0051收口: 将内联source文本提取为类级常量,保持既有 expected 常量和断言语义不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从12条降到11条; 行号607已从MA0051输出中消失,剩余热点继续集中在CqrsHandlerRegistryGeneratorTests.cs - 已通过第三个有效 subagent 切片完成
CqrsHandlerRegistryGeneratorTests.csGenerates_Direct_Interface_Registrations_For_Hidden_Implementation_When_Handler_Interface_Is_Public()的MA0051收口:将内联source文本提取为类级常量,保持既有 expected 常量和断言语义不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从13条降到12条; 行号536已从MA0051输出中消失,剩余热点继续集中在CqrsHandlerRegistryGeneratorTests.cs - 已通过第二个有效 subagent 切片完成
CqrsHandlerRegistryGeneratorTests.csGenerates_Visible_Handlers_And_Self_Registers_Private_Nested_Handler_When_Assembly_Contains_Hidden_Handler()的MA0051收口:将内联source文本提取为类级常量,保持既有 expected 常量和断言语义不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从14条降到13条; 行号454已从MA0051输出中消失,剩余热点继续集中在CqrsHandlerRegistryGeneratorTests.cs - 已通过 subagent 循环的首个可交付切片完成
GFramework.SourceGenerators.Tests/Cqrs/CqrsHandlerRegistryGeneratorTests.csGenerates_Assembly_Level_Cqrs_Handler_Registry()的MA0051收口: 将内联source/expected文本提取为类级常量,保持生成文本、断言语义和文件名不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从15条降到14条; 行号337已从MA0051输出中消失,剩余热点仍全部集中在CqrsHandlerRegistryGeneratorTests.cs - 已确认当前分支相对
origin/main的唯一变更文件数仍只有3;按该统计口径距离用户要求的 “接近75个文件变更”仍很远,需要继续多轮切片 - 已完成
GFramework.SourceGenerators.Tests/Config/SchemaConfigGeneratorTests.cs的MA0051收口: 将共享 consumer runtime fixture 提取到类级常量,并把生成结果收集与 catalog 契约断言拆成小 helper, 保持 schema 文本、断言语义与生成输出契约不变 - 当前
GFramework.SourceGenerators.TestsRelease warnings-only 基线已从22条降到15条;SchemaConfigGeneratorTests.cs已不再出现在MA0051列表中,剩余热点全部集中在CqrsHandlerRegistryGeneratorTests.cs - 已完成
SchemaConfigGeneratorTests定向验证:串行重跑50个用例全部通过;并确认先前并行 build/test 触发的MSB3030/CS0006属于共享输出竞争噪音,不是代码回归 - 已按
gframework-boot重新恢复当前 worktree:确认分支fix/analyzer-warning-reduction-batch仍映射到analyzer-warning-reduction,且当前不存在ai-plan/private/私有恢复上下文 - 已重新抓取当前分支关联的 PR #273 review 状态:PR 已处于
CLOSED,latest-head review 仍显示2条 CodeRabbit open thread,但本地复核后GeneratorSnapshotTest的 snapshot 路径空值防御已显式改为InvalidOperationException防御,SchemaConfigGenerator的dependentSchemas/allOf/ conditional helper 也已补齐 XML 文档,当前更像历史线程未随已关闭 PR 一起收敛 - 已重新以
GFramework.SourceGenerators.TestsRelease warnings-only build 复核当前MA0051热点: 基线现为22条,且已不再落在GeneratorSnapshotTest、ContextRegistrationAnalyzerTests或ContextGetGeneratorTests,而是集中在CqrsHandlerRegistryGeneratorTests.cs(15条)与SchemaConfigGeneratorTests.cs(7条) - 已完成
GFramework.Core当前MA0016/MA0002/MA0015/MA0077低风险收口批次 - 已复核
net10.0下的MA0158基线:GFramework.Core/GFramework.Cqrs当前共有16个 object lock 建议点,属于跨 target 兼容性风险,不在本轮直接批量替换 - 已完成
GFramework.Core.SourceGenerators/Rule/ContextAwareGenerator.cs的剩余MA0051结构拆分,生成输出保持不变 - 已完成
GFramework.Cqrs.SourceGenerators/Cqrs/CqrsHandlerRegistryGenerator.cs的MA0051结构拆分,生成输出保持不变 - 已完成
GFramework.Game.SourceGenerators/Config/SchemaConfigGenerator.cs的MA0006低风险收口,schema 关键字比较显式使用StringComparison.Ordinal - 已完成
SchemaConfigGenerator.cs的第一批MA0051结构拆分:schema 入口解析、属性解析、schema 遍历、数组属性解析、 约束文档生成与若干生成代码发射 helper 已拆出语义阶段 - 已完成当前 PR #269 review follow-up:
CqrsHandlerRegistryGenerator按职责拆分为 partial 生成器文件,ContextAwareGenerator已补上字段名去冲突与锁内读取修正,Option<T>补齐<remarks>契约说明 - 已完成当前 PR #269 第二轮 follow-up:恢复
EasyEvents、CollectionExtensions、LoggingConfiguration与FilterConfiguration的公共 API 兼容形状,并将 analyzer 兼容性处理收敛到局部 pragma - 已完成当前 PR #269 第三轮 follow-up:继续收口
SchemaConfigGenerator的根类型标识符校验与 XML 文档转义, 并补齐LoggingConfigurationTests、CollectionExtensionsTests、Cqrshelper 抽取与ai-plan命令文本修正 - 已完成当前 PR #269 第四轮 follow-up:将
CqrsHandlerRegistryGenerator的 Roslyn error type 直接引用改为 运行时精确查找路径,并为SchemaConfigGenerator补上根type非字符串时的防御与回归测试 - 已完成当前 PR #269 第五轮 follow-up:
SchemaConfigGenerator补上归一化后属性名冲突诊断并新增GF_ConfigSchema_014,CqrsHandlerRegistryGenerator将dynamic归一化为global::System.Object, 同时收紧相关 generator regression tests - 已完成当前 PR #269 failed-test follow-up:修正
SchemaConfigGeneratorTestsRun_Should_Assign_Globally_Unique_Reference_Metadata_Member_Names的测试输入,使其继续覆盖 reference metadata 成员名全局去冲突,但不再依赖现已被GF_ConfigSchema_014拦截的非法同层 schema key 冲突 - 已完成当前 PR #269 Greptile follow-up:
ContextAwareGenerator现在会把基类链显式成员名也纳入_gFrameworkContextAware*字段分配冲突检测,并新增 inherited-field collision 快照回归测试 - 已完成当前分支与
main的CqrsHandlerRegistryGenerator.cs文件级冲突收口:确认main侧新增的是OrderedRegistrationKind/RuntimeTypeReferenceSpec的 XML 文档,现已按当前 partial 拆分结构迁移到CqrsHandlerRegistryGenerator.Models.cs,不回退已完成的生成器拆分 - 已完成
SchemaConfigGenerator.cs剩余MA0051收口:将dependentRequired/allOf/ conditional schema 校验 拆成更小的验证阶段,并将GenerateTableClass、GenerateBindingsClass、AppendGeneratedConfigCatalogType拆成稳定的代码发射 helper,保持生成输出与快照一致 - 已更新
AGENTS.md:变更模块必须运行对应dotnet build -c Release,并处理或显式报告模块构建 warning, 不再默认留给长期 warning 清理分支 CoroutineScheduler的 tag/group 字典已显式使用StringComparer.Ordinal,保持既有区分大小写语义EasyEvents.AddEvent<T>()的重复注册路径已恢复为ArgumentException,以保持既有异常契约Option<T>已声明IEquatable<Option<T>>,与已有强类型Equals(Option<T>)契约对齐- 当前
GFramework.Corenet8.0warnings-only 基线已降到0条 - 当前
GFramework.Core.SourceGeneratorswarnings-only 基线已降到0条 - 当前
GFramework.Cqrs.SourceGeneratorswarnings-only 基线已降到0条 - 当前
GFramework.Game.SourceGeneratorswarnings-only 基线已从46条降到0条 - 已完成
GFramework.SourceGenerators.Tests低风险MA0004/MA0048收口:测试辅助器改为直接返回Task, 文件 I/O 显式补齐ConfigureAwait(false),AnalyzerTestDriver文件名与类型名重新对齐 - 当前
GFramework.SourceGenerators.Testswarnings-only 基线已从61条降到49条,剩余 warning 均为MA0051 - 已完成
GFramework.SourceGenerators.Tests/Logging/LoggerGeneratorSnapshotTests.cs的MA0051收口:同构 snapshot 场景已收敛为模板化 helper,保留原有快照目录与生成器输入语义不变 - 当前
GFramework.SourceGenerators.TestsRelease build 基线已从49条降到43条;LoggerGeneratorSnapshotTests.cs已不再出现在MA0051列表中 - 已完成
GFramework.SourceGenerators.Tests/Architectures/AutoRegisterModuleGeneratorTests.cs的MA0051收口: 将内联测试源码与期望快照抽到类级常量、补齐测试类 XML 文档,并将仅作转发的异步测试改为直接返回Task - 当前
GFramework.SourceGenerators.TestsRelease build 基线已从43条降到40条;AutoRegisterModuleGeneratorTests.cs已不再出现在MA0051列表中 - 已完成
GFramework.SourceGenerators.Tests/Config/SchemaConfigGeneratorSnapshotTests.cs的MA0051收口: 将 monster 场景的运行时契约与 schema 输入提取为类级常量,并把生成结果与快照目录解析拆成小 helper,保持 生成文件名、快照目录和断言语义不变 - 当前
GFramework.SourceGenerators.TestsRelease build 基线已从40条降到39条;SchemaConfigGeneratorSnapshotTests.cs已不再出现在MA0051列表中 - 已完成当前 PR #273 review follow-up 首轮核对:确认本地仍成立的问题集中在
SchemaConfigGeneratorhelper XML 文档、GeneratorSnapshotTest的StringComparison.Ordinal/ snapshot 路径空值防御、AutoRegisterModuleGeneratorTests的 XML 文档位置,以及SchemaConfigGeneratorSnapshotTests的 monster 快照覆盖缺口 - 已将 monster 快照场景扩展到
dependentRequired、dependentSchemas、allOf与 object-focusedif/then/else,以便把新增 schema 约束文档纳入 snapshot 验证 - 已完成本轮定向验证:
GFramework.Game.SourceGeneratorsRelease build 通过;GFramework.SourceGenerators.Tests在-m:1 --no-restore下 Release build 通过;SchemaConfigGeneratorSnapshotTests与AutoRegisterModuleGeneratorTests定向测试共4项全部通过 - 当前验证仍受环境/基线约束:
GFramework.SourceGenerators.TestsRelease build 保留既有MA0051warning 基线; NuGet vulnerability audit 在离线环境下产生NU1900 GFramework.Godot的Timing.cs已同步适配新事件签名,但当前 worktree 的 Godot restore 资产仍受 Windows fallback package folder 干扰,独立 build 需在修复资产后补跑- 后续继续按 warning 类型和数量批处理,而不是回退到按单文件切片推进
- 下一轮默认重新抓取 PR #273 最新 review 线程,并确认本轮 snapshot 更新后是否还存在剩余 open thread 或
dotnet-format细项 - 单次
boot的工作树改动上限控制在约100个文件以内,避免 recovery context 与 review 面同时失控 - 若任务边界互不冲突,允许使用不同模型的 subagent 并行处理不同 warning 类型或不同目录,但必须遵守显式 ownership
- 已通过第五个有效 subagent 切片完成
当前状态摘要
- 已完成
GFramework.Core、GFramework.Cqrs、GFramework.Godot与部分 source generator 的低风险 warning 清理 - 已完成多轮 CodeRabbit follow-up 修复,并用定向测试与项目/解决方案构建验证了关键回归风险
- 已完成当前 PR #265 review follow-up:修复
CoroutineScheduler的零容量扩容边界,并补上Storedispatch 作用域的异常安全回滚 - 已继续完成当前 PR #265 review follow-up:修复
Event<T>与Event<T, TK>监听器计数的 off-by-one,并补充回归测试 - 已增强
gframework-pr-review脚本与 skill 文档,降低超长 JSON 直出导致的 review 信号漏看风险 - 已完成
GFramework.Core当前MA0046批次:将阶段、协程与异步日志事件统一迁移到EventHandler<TEventArgs>形状, 并同步更新GFramework.Godot订阅点、定向测试与docs/zh-CN示例 - 已完成当前 PR #267 review follow-up:修复
AsyncLogAppender的ILogAppender.Flush()双重完成通知,并补齐PhaseChanged/CoroutineExceptionEventArgsXML 文档、PhaseChanged迁移说明和ai-plan基线注释 - 已完成当前 PR #267 failed-test follow-up:修复
AsyncLogAppender.Flush()在队列已被后台线程提前清空时仍可能 等待满默认超时并返回false的竞态,并通过整包GFramework.Core.Tests重新验证 - 已完成当前
GFramework.Corenet8.0剩余低风险 analyzer warning 批次;warnings-only 基线已降到0条 - 已完成
GFramework.Core.SourceGenerators中ContextAwareGenerator的剩余MA0051收口;warnings-only 基线已降到0条 - 已完成
GFramework.Cqrs.SourceGenerators中CqrsHandlerRegistryGenerator的剩余MA0051收口;warnings-only 基线已降到0条 - 已完成当前 PR #269 的 review follow-up:收口
ContextAwareGenerator的字段命名冲突 / 锁内读取契约、CqrsHandlerRegistryGenerator的运行时类型 null 防御与超大文件拆分、SchemaConfigGenerator的取消语义, 并恢复EasyEvents/CollectionExtensions/ logging 配置模型的公共 API 兼容形状 - 已完成当前 PR #269 的第四轮 review follow-up:确认 5 个 latest-head 未解决线程中仅剩 2 个本地仍成立,
已分别在
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
- 已完成当前 PR #269 的 Greptile follow-up:修复
ContextAwareGenerator未覆盖基类成员名冲突的问题,并补齐 inherited-collision 快照测试 - 已完成当前分支与
main的CqrsHandlerRegistryGenerator.cs冲突化解:保留当前 partial 结构,并把main侧新增的模型文档合并到CqrsHandlerRegistryGenerator.Models.cs - 已完成
GFramework.Game.SourceGenerators中SchemaConfigGenerator的剩余MA0051收口;warnings-only 基线已降到0条 - 已完成
GFramework.SourceGenerators.Tests的首轮低风险 warning 清理;当前项目已清空MA0004/MA0048,剩余 warning 全部收敛为MA0051 - 已完成
LoggerGeneratorSnapshotTests的单文件MA0051收口;当前GFramework.SourceGenerators.TestsRelease build 基线已降到43条,并通过 focused snapshot tests 保持行为不变 - 已完成
AutoRegisterModuleGeneratorTests的单文件MA0051收口;当前GFramework.SourceGenerators.TestsRelease build 基线已降到40条,并通过 focused generator tests 保持输出契约不变 - 已完成
SchemaConfigGeneratorSnapshotTests的单文件MA0051收口;当前GFramework.SourceGenerators.TestsRelease build 基线已降到39条,并通过 focused snapshot test 保持生成输出契约不变 - 已完成
RP-035启动复核:确认 PR #273 已关闭、历史 open thread 暂无新的本地修复点,且GFramework.SourceGenerators.Tests当前剩余MA0051已重排为CqrsHandlerRegistryGeneratorTests/SchemaConfigGeneratorTests两个测试写集 - 已完成
RP-036:清空SchemaConfigGeneratorTests.cs当前MA0051,并将GFramework.SourceGenerators.TestsRelease warnings-only 基线进一步降到15条 - 已完成
RP-037的首个 subagent 接收:CqrsHandlerRegistryGeneratorTests.cs的Generates_Assembly_Level_Cqrs_Handler_Registry()已抽出类级 fixture,当前测试项目基线进一步降到14条 - 已完成
RP-038的第二个 subagent 接收:HiddenNestedHandlerSelfRegistrationSource已提取到类级常量, 当前测试项目基线进一步降到13条 - 已完成
RP-039的第三个 subagent 接收:HiddenImplementationDirectInterfaceRegistrationSource已提取到类级常量,当前测试项目基线进一步降到12条 - 已完成
RP-040的第四个 subagent 接收:HiddenArrayResponseFallbackSource已提取到类级常量,当前测试项目基线进一步降到11条 - 已完成
RP-041的第五个 subagent 接收:HiddenGenericEnvelopeResponseSource已提取到类级常量,当前测试项目基线进一步降到10条
当前活跃事实
- 当前主题仍是 active topic,因为剩余结构性 warning 是否继续推进尚未决策
RP-001的详细实现历史、测试记录和 warning 热点清单已归档到主题内archive/RP-002已在不改公共契约的前提下完成CqrsHandlerRegistrar结构拆分,并通过定向 build/test 验证RP-003已在不改生命周期契约的前提下完成ArchitectureLifecycle初始化主流程拆分,并通过定向 build/test 验证RP-004已完成当前 PR review follow-up:修复TryCreateGeneratedRegistry的可空out契约并清理 trace 文档重复标题RP-005已在不改公共 API 的前提下完成PauseStackManager两个MA0051的结构拆分,并补充销毁通知回归测试RP-006已在不改公共 API 的前提下完成Store两个MA0051的结构拆分,并通过定向 build/test 验证 dispatch、 多态 reducer 匹配与历史语义未回归RP-007已在不改公共 API 的前提下完成CoroutineScheduler两个MA0051的结构拆分,并通过定向 build/test 验证 调度、取消与完成状态语义未回归RP-008将后续策略从“单文件 warning 切片”切换为“按类型批处理 + 文件数上限控制”,并允许在非冲突前提下使用 不同模型的 subagent 并行处理RP-009在不改公共 API 的前提下,将同名泛型家族收拢到与类型名一致的单文件中,清空当前GFramework.Corenet8.0基线中的MA0048,并通过定向 build/test 验证Command、Query、Event路径未回归RP-010使用gframework-pr-review复核当前分支 PR #265 后,修复了仍在本地成立的两个 follow-up 风险:CoroutineScheduler的initialCapacity: 0扩容越界,以及Store在 dispatch 快照阶段抛异常时可能残留_isDispatching = true的锁死问题RP-011根据补充复核继续收口 PR #265 的 outside-diff comment,修复Event<T>/Event<T, TK>默认 no-op 委托导致的GetListenerCount()off-by-one,并以定向事件测试验证注册、注销和计数语义RP-012为gframework-pr-review增加--json-output、--section、--path与文本截断能力,并更新 skill 推荐用法, 让“先落盘、再定向抽取”成为默认可操作路径RP-013已完成GFramework.Core当前MA0046批次,并以新的事件参数类型替换阶段、协程和异步日志事件的 非标准签名;GFramework.Corenet8.0warnings-only 基线由15降至9RP-014使用gframework-pr-review复核当前分支 PR #267 的 latest head review threads、outside-diff comment 与 nitpick comment 后,确认 8 条高信号项中仍成立的是 1 个行为 bug 与 7 个文档/测试/跟踪缺口,并按最小改动收口RP-015使用$gframework-pr-review复核 PR #267 的 CTRF 失败测试评论后,确认AsyncLogAppender仍存在 “队列已空但 Flush 仍超时失败”的竞态;该问题在本地整包GFramework.Core.Tests中可复现,现已修复并补上稳定回归测试RP-016将GFramework.Core当前剩余MA0016/MA0002/MA0015/MA0077低风险批次清零,并用 warnings-only build 与 focused tests 验证配置反序列化、集合扩展、事件重复注册、Option<T>相等性和协程 tag/group 语义RP-017复核MA0158当前仍是跨 target 锁类型迁移问题,因此先收口单点ContextAwareGeneratorMA0051, 并通过 source generator 项目 build 与ContextAwareGeneratorSnapshotTests验证生成输出未回归RP-018暂缓跨 targetMA0158,转入GFramework.Cqrs.SourceGenerators的单文件结构性 warning; 通过拆分 handler 分析、运行时类型引用构造、注册器源码发射与精确反射注册输出阶段,清空该项目当前MA0051RP-019转入GFramework.Game.SourceGenerators/Config/SchemaConfigGenerator.cs,先完成低风险MA0006批次; 通过 schema 类型比较 helper 与显式StringComparison.Ordinal清空当前项目的MA0006RP-020继续拆分SchemaConfigGenerator.cs的MA0051热点,将当前项目 warnings-only 基线从19条降到9条, 并用 focused schema generator tests 验证 50 个用例通过RP-032已完成AutoRegisterModuleGeneratorTests的 3 个MA0051收口:通过提取类级常量承载测试源码与快照,保持 生成文件名、断言路径与源生成输出不变;GFramework.SourceGenerators.Testswarnings-only 基线由43降至40RP-033已完成SchemaConfigGeneratorSnapshotTests的MA0051收口:monster schema 运行时契约与 schema 输入已提取为 类级常量,生成结果映射与快照目录解析已拆为小 helper;GFramework.SourceGenerators.Testswarnings-only 基线由40降至39RP-035已完成启动级恢复核对:当前分支对应的 GitHub PR #273 已关闭,因此 remaining open thread 仅作为历史信号参考; 下一轮应以本地warnings-onlybuild 的实时热点为主,而不是继续按已过时的GeneratorSnapshotTest/ContextRegistrationAnalyzerTests建议恢复RP-036已完成SchemaConfigGeneratorTests的单文件MA0051收口:共享 runtime fixture、 generated-source 收集与 catalog 契约断言均已拆出 helper;当前测试项目剩余MA0051已全部收敛到CqrsHandlerRegistryGeneratorTestsRP-037已验证 subagent 循环开始产生稳定吞吐,但当前一轮只消掉1个 warning 位点; 若继续按“唯一变更文件数接近75”推进,需要接受很多轮单文件、单方法级切片RP-038继续验证了“单方法 + 主线程记录恢复点”的 subagent 节奏可稳定复用,但按当前速度离 “接近75个唯一变更文件”仍然非常远RP-039进一步确认:只要 subagent 继续在同一热点文件内逐点消除 warning,唯一变更文件数会基本停留在4左右,不会因为重复修改同一文件快速逼近75RP-040延续了这一趋势:当前吞吐稳定,但按“唯一变更文件数接近75”作为停止条件并不匹配当前单文件收口节奏RP-041再次确认当前分支相对origin/main的唯一变更文件数仍是4;若继续只收口同一文件的 warning, 该计数基本不会上涨RP-021使用$gframework-pr-review复核当前分支 PR #269 后,修复仍在本地成立的 4 个项:将CqrsHandlerRegistryGenerator拆分为职责清晰的 partial 文件、为ContextAwareGenerator生成字段增加稳定前缀并补上SetContextProvider的运行时 null 校验、为Option<T>补齐<remarks>,并新增字段重名场景的生成器快照测试RP-022继续复核 PR #269 的 latest-head review threads 与 nitpick,确认仍成立的项包括公共 API 兼容回退、ContextAwareGenerator字段名真正去冲突与锁内读取、SchemaConfigGenerator取消传播、Cqrs运行时类型 null 防御; 已补齐对应回归测试与 focused build/test 验证RP-023继续复核 PR #269 剩余 nitpick/outside-diff 项,确认仍成立的项集中在SchemaConfigGenerator根类型名校验、 aggregate registration comparer XML 文档转义、logging / collection 反射测试补强,以及跟踪文档中的RestoreFallbackFolders=""可复制性问题RP-024使用$gframework-pr-review继续复核 PR #269 latest-head unresolved threads,确认EasyEvents异常契约、SchemaConfigGenerator取消传播与ContextAwareGenerator快照冲突线程均已在本地收口,仅剩Cqrserror type 直接引用与根 schematype非字符串防御仍成立;现已补齐实现与回归测试RP-025继续复核 PR #269 剩余 outside-diff / nitpick 信号后,确认本地仍成立的是SchemaConfigGenerator的归一化字段名冲突与Cqrs对dynamic的直接类型引用;已分别补上诊断、运行时类型归一化与回归测试, 并把“变更模块必须运行对应 build 且处理 warning”的治理规则写回AGENTS.mdRP-029已完成SchemaConfigGenerator剩余MA0051收口:GFramework.Game.SourceGenerators独立 Release warnings-only build 已清零,并通过SchemaConfigGeneratorfocused generator tests 锁定生成输出未回退RP-030已完成GFramework.SourceGenerators.Tests低风险MA0004/MA0048收口:AnalyzerTestDriver文件名已与 类型名一致,测试辅助器与 schema snapshot 断言路径已改为直接返回Task或显式使用ConfigureAwait(false); 当前测试项目 warnings-only 基线从61条降到49条,剩余均为MA0051RP-031已完成LoggerGeneratorSnapshotTests的MA0051收口:重复场景源码改为模板化 helper 生成, 当前GFramework.SourceGenerators.TestsRelease build 基线从49条降到43条,并通过 focused test 验证 6 个用例全部通过- 当前工作树分支
fix/analyzer-warning-reduction-batch已在ai-plan/public/README.md建立 topic 映射
当前风险
- analyzer 收口回退风险:后续若继续压
MA0015/MA0016,容易再次把公共 API 收窄成与既有契约不兼容的形状- 缓解措施:优先保留既有公共 API,并将兼容性例外收敛到局部 pragma;继续用反射断言覆盖返回类型、属性类型与异常类型
- 测试宿主稳定性风险:部分 Godot 失败路径在当前 .NET 测试宿主下仍不稳定
- 缓解措施:继续优先使用稳定的 targeted test、项目构建和相邻 smoke test 组合验证
- 多目标框架 warning 解释风险:同一源位置会在多个 target framework 下重复计数
- 缓解措施:继续以唯一源位置和 warning 家族为主要决策依据,而不是只看原始 warning 总数
- net10 专属 warning 风险:
MA0158建议使用System.Threading.Lock,但项目多 target 时需要确认兼容边界- 缓解措施:下一轮先按 target framework 与 API 可用性评估,不直接批量替换共享源码中的
objectlock
- 缓解措施:下一轮先按 target framework 与 API 可用性评估,不直接批量替换共享源码中的
- source generator warning 外溢风险:运行
GFramework.SourceGenerators.Tests会构建相邻 generator/test 项目,并在输出中混入 测试项目自身的结构性 warning 基线- 缓解措施:继续以被修改项目的独立 warnings-only build 作为主验收,并用 focused generator test 验证行为
- source generator test warning 治理风险:
GFramework.SourceGenerators.Tests当前仍有43条既有MA0051warning; 一旦继续进入该写集,就必须把测试项目 warning 一并纳入本轮完成条件- 缓解措施:已先清空低风险
MA0004/MA0048,后续继续保持“单 warning family、单测试域”的节奏推进MA0051
- 缓解措施:已先清空低风险
- ContextAware 基类命名隐藏风险:若生成器只看当前类型声明成员,派生规则会重新占用基类已声明的
_gFrameworkContextAware*字段名,导致生成成员隐藏继承状态并让快照无法锁定后缀分配行为- 缓解措施:本轮已改为遍历完整 base-type 链收集保留名,并用 inherited collision 快照用例锁定该行为
- Godot 资产文件环境风险:当前 worktree 的
GFramework.Godotrestore/build 仍会命中 Windows fallback package folder- 缓解措施:后续若继续触达 Godot 模块,先用 Linux 侧 restore 资产或 Windows-hosted 构建链刷新该项目,再补跑定向 build
- 并行实现风险:批量收敛时若 subagent 写入边界不清晰,容易引入命名冲突或重复重构
- 缓解措施:只在 warning 类型或目录边界清晰时并行;每个 subagent 必须有独占文件 ownership,主代理负责合并验证
活跃文档
- 历史跟踪归档:analyzer-warning-reduction-history-rp001.md
- 历史 trace 归档:analyzer-warning-reduction-history-rp001.md
验证说明
RP-001的详细 warning 清理、回归修复与定向验证命令均已迁入主题内历史归档RP-002的定向验证结果:dotnet build GFramework.Cqrs/GFramework.Cqrs.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:UseSharedCompilation=false -p:RestoreFallbackFolders=dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --filter FullyQualifiedName~CqrsHandlerRegistrarTests -p:RestoreFallbackFolders=
RP-003的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders= -nologo -clp:Summary;WarningsOnlydotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~ArchitectureLifecycleBehaviorTests -p:RestoreFallbackFolders=
RP-004的定向验证结果:dotnet build GFramework.Cqrs/GFramework.Cqrs.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:UseSharedCompilation=false -p:RestoreFallbackFolders=- 结果:
0 Warning(s),0 Error(s)
- 结果:
RP-005的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
27 Warning(s),0 Error(s);PauseStackManager.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~PauseStackManagerTests -p:RestoreFallbackFolders=- 结果:
25 Passed,0 Failed
- 结果:
RP-006的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -p:RestorePackagesPath=<linux-nuget-cache> -nologo -clp:"Summary;WarningsOnly"- 结果:
25 Warning(s),0 Error(s);Store.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~StoreTests -p:RestoreFallbackFolders="" -p:RestorePackagesPath=<linux-nuget-cache> -nologo- 结果:
30 Passed,0 Failed
- 结果:
RP-007的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -p:RestorePackagesPath=<linux-nuget-cache> -nologo -clp:"Summary;WarningsOnly"- 结果:
23 Warning(s),0 Error(s);CoroutineScheduler.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~CoroutineScheduler -p:RestoreFallbackFolders="" -p:RestorePackagesPath=<linux-nuget-cache> -nologo- 结果:
34 Passed,0 Failed
- 结果:
RP-008的策略基线:- 当前
GFramework.Core剩余 warning 分布:MA0048=8、MA0046=6、MA0016=5、MA0002=2、MA0015=1、MA0077=1 - 后续批处理规则:优先按类型推进;若当轮主类型数量不足,可顺手吸收其他低冲突类型,不限定于
MA0015与MA0077
- 当前
RP-009的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
15 Warning(s),0 Error(s);当前GFramework.Corenet8.0warnings-only 输出中已不再出现MA0048
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter "FullyQualifiedName~CommandExecutorTests|FullyQualifiedName~AbstractAsyncCommandTests|FullyQualifiedName~QueryExecutorTests|FullyQualifiedName~AbstractAsyncQueryTests|FullyQualifiedName~EventTests" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
83 Passed,0 Failed
- 结果:
RP-010的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo- 结果:
15 Warning(s),0 Error(s);新增修复未引入新的GFramework.Corenet8.0构建错误
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter "FullyQualifiedName~CoroutineSchedulerTests.Run_Should_Grow_From_Zero_Initial_Capacity|FullyQualifiedName~StoreTests.Dispatch_Should_Reset_Dispatching_Flag_When_Snapshot_Creation_Throws" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
2 Passed,0 Failed
- 结果:
RP-011的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo- 结果:
15 Warning(s),0 Error(s);Event.cs的 listener count 修复未引入新的GFramework.Corenet8.0构建错误
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter "FullyQualifiedName~EventTests.EventT_GetListenerCount_Should_Exclude_Placeholder_Handler|FullyQualifiedName~EventTests.EventTTK_GetListenerCount_Should_Exclude_Placeholder_Handler" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
2 Passed,0 Failed
- 结果:
RP-012的定向验证结果:python3 -m py_compile .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py- 结果:通过;使用
PYTHONPYCACHEPREFIX=/tmp/codex-pycache规避技能目录只读导致的__pycache__写入限制
- 结果:通过;使用
python3 .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py --help- 结果:通过;
--json-output、--section、--path、--max-description-length已出现在 CLI 帮助中
- 结果:通过;
dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo- 结果:
0 Warning(s),0 Error(s)
- 结果:
RP-013的定向验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
9 Warning(s),0 Error(s);相对RP-009/RP-011的 warnings-only 基线15 Warning(s)已降到9 Warning(s), 当前GFramework.Corenet8.0输出中已不再出现MA0046
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter "FullyQualifiedName~ArchitectureLifecycleBehaviorTests|FullyQualifiedName~CoroutineSchedulerTests|FullyQualifiedName~AsyncLogAppenderTests" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
50 Passed,0 Failed
- 结果:
dotnet build GFramework.Godot/GFramework.Godot.csproj -c Release --no-restore -p:RestoreFallbackFolders="" -nologo- 结果:失败;当前 worktree 的 Godot restore 资产仍引用 Windows fallback package folder,尚未完成独立项目编译验证
RP-014的定向验证结果:dotnet restore GFramework.Core.Tests/GFramework.Core.Tests.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;host Windows
dotnet首次验证前补齐了缺失的Meziantou.Analyzer 3.0.48包
- 结果:通过;host Windows
dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -nologo- 结果:
9 Warning(s),0 Error(s);AsyncLogAppender行为修复与 XML / 文档补充未引入新的GFramework.Corenet8.0构建错误
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~CoroutineSchedulerTests.Scheduler_Should_Raise_OnCoroutineException_With_EventArgs|FullyQualifiedName~AsyncLogAppenderTests.Flush_Should_Raise_OnFlushCompleted_With_Sender_And_Result|FullyQualifiedName~AsyncLogAppenderTests.ILogAppender_Flush_Should_Raise_OnFlushCompleted_Only_Once|FullyQualifiedName~ArchitectureLifecycleBehaviorTests.InitializeAsync_Should_Raise_PhaseChanged_With_Sender_And_EventArgs" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
4 Passed,0 Failed
- 结果:
RP-015的验证结果:dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --disable-build-servers --filter "FullyQualifiedName~AsyncLogAppenderTests"- 结果:
15 Passed,0 Failed
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --disable-build-servers- 结果:
1607 Passed,0 Failed
- 结果:
RP-016的验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);当前GFramework.Corenet8.0analyzer baseline 已清零
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~LoggingConfigurationTests|FullyQualifiedName~ConfigurableLoggerFactoryTests|FullyQualifiedName~CollectionExtensionsTests|FullyQualifiedName~EasyEventsTests|FullyQualifiedName~OptionTests|FullyQualifiedName~CoroutineGroupTests|FullyQualifiedName~CoroutineSchedulerTests" -m:1 -nologo- 结果:
112 Passed,0 Failed;测试构建仍会显示既有net10.0MA0158与 source generatorMA0051warning
- 结果:
RP-017的验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net10.0 -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
16 Warning(s),0 Error(s);当前MA0158跨GFramework.Core/GFramework.Cqrs,本轮只记录基线不批量改锁
- 结果:
dotnet build GFramework.Core.SourceGenerators/GFramework.Core.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);ContextAwareGenerator.cs已不再出现MA0051
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~ContextAwareGeneratorSnapshotTests" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
1 Passed,0 Failed;测试构建仍显示相邻 source generator 和测试项目的既有 analyzer warning
- 结果:
RP-018的验证结果:dotnet build GFramework.Cqrs.SourceGenerators/GFramework.Cqrs.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);CqrsHandlerRegistryGenerator.cs当前MA0051已清零
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~CqrsHandlerRegistryGeneratorTests -m:1 -p:RestoreFallbackFolders= -nologo- 结果:
14 Passed,0 Failed - 说明:该 test project 构建仍显示
GFramework.Game.SourceGenerators与测试项目中的既有 analyzer warning;本轮关注的GFramework.Cqrs.SourceGenerators独立 build 已清零
- 结果:
RP-019的验证结果:dotnet restore GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -p:RestoreFallbackFolders= -nologo- 结果:通过;刷新 Linux 侧资产以清除 stale Windows fallback package folder
dotnet build GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
19 Warning(s),0 Error(s);当前项目输出已不再出现MA0006,剩余均为SchemaConfigGenerator.cs的MA0051
- 结果:
dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders= -nologo- 结果:通过;刷新 test project 资产以清除 stale Windows fallback package folder
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~SchemaConfigGenerator -m:1 -p:RestoreFallbackFolders= -nologo- 结果:
50 Passed,0 Failed - 说明:测试项目构建仍显示既有 source generator test analyzer warning;不属于本轮写集
- 结果:
RP-020的验证结果:dotnet build GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
9 Warning(s),0 Error(s);当前项目剩余 warning 均为SchemaConfigGenerator.cs的MA0051
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~SchemaConfigGenerator -m:1 -p:RestoreFallbackFolders= -nologo- 结果:
50 Passed,0 Failed - 说明:测试项目构建仍显示既有 source generator test analyzer warning;不属于本轮写集
- 结果:
RP-021的验证结果:dotnet build GFramework.Cqrs.SourceGenerators/GFramework.Cqrs.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);拆分后最大单文件已降到851行,满足仓库 800-1000 行上限
- 结果:
dotnet build GFramework.Core.SourceGenerators/GFramework.Core.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders= -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);ContextAwareGenerator的字段命名与 provider 契约修复未引入新的 generator warning
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~ContextAwareGeneratorSnapshotTests|FullyQualifiedName~CqrsHandlerRegistryGeneratorTests" -m:1 -p:RestoreFallbackFolders= -nologo- 结果:先并行运行两条
dotnet test时触发共享输出文件锁冲突;改为串行重跑后ContextAwareGeneratorSnapshotTests=2 Passed、CqrsHandlerRegistryGeneratorTests=14 Passed - 说明:失败来自测试宿主并行写入同一 build 输出,不是代码回归;串行重跑后快照新增的字段重名场景和 CQRS 快照均通过
- 结果:先并行运行两条
RP-022的验证结果:dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -v minimal- 结果:通过;
EasyEvents、CollectionExtensions与 logging 配置模型的兼容性回退未引入新的net8.0构建错误
- 结果:通过;
dotnet build GFramework.Cqrs.SourceGenerators/GFramework.Cqrs.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -v minimal- 结果:通过;
ContainingAssemblynull 防御与发射 helper 精简未引入新的构建错误
- 结果:通过;
dotnet build GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -v minimal- 结果:通过;仍保留既有
9条SchemaConfigGenerator.csMA0051warning,非本轮新增
- 结果:通过;仍保留既有
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~SchemaConfigGeneratorTests|FullyQualifiedName~ContextAwareGeneratorSnapshotTests|FullyQualifiedName~CqrsHandlerRegistryGeneratorTests" -m:1 -p:RestoreFallbackFolders="" -v minimal- 结果:
63 Passed,0 Failed
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~EasyEventsTests|FullyQualifiedName~CollectionExtensionsTests|FullyQualifiedName~LoggingConfigurationTests|FullyQualifiedName~ConfigurableLoggerFactoryTests" -m:1 -p:RestoreFallbackFolders="" -v minimal- 结果:
38 Passed,0 Failed
- 结果:
RP-023的验证结果:dotnet build GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -c Release --no-restore -p:RestoreFallbackFolders="" -v minimal- 结果:通过;仍保留既有
9条SchemaConfigGenerator.csMA0051warning,未新增新的 generator warning
- 结果:通过;仍保留既有
dotnet build GFramework.Cqrs.SourceGenerators/GFramework.Cqrs.SourceGenerators.csproj -c Release --no-restore -p:RestoreFallbackFolders="" -v minimal- 结果:通过;并行构建时
GFramework.SourceGenerators.Common.dll复制阶段出现一次MSB3026重试,随后成功完成
- 结果:通过;并行构建时
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~SchemaConfigGeneratorTests|FullyQualifiedName~SchemaConfigGeneratorSnapshotTests|FullyQualifiedName~CqrsHandlerRegistryGeneratorTests" -m:1 -p:RestoreFallbackFolders="" -v minimal- 结果:
63 Passed,0 Failed - 说明:测试项目构建仍会显示既有
GFramework.SourceGenerators.Testsanalyzer warning;不属于本轮写集
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~CollectionExtensionsTests|FullyQualifiedName~LoggingConfigurationTests" -m:1 -p:RestoreFallbackFolders="" -v minimal- 结果:
27 Passed,0 Failed
- 结果:
RP-029的验证结果:dotnet restore GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;刷新 Linux 侧 restore 资产以移除 Windows fallback package folder 干扰
dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;focused test 所属测试项目已同步刷新 Linux 侧 restore 资产
dotnet build GFramework.Game.SourceGenerators/GFramework.Game.SourceGenerators.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
0 Warning(s),0 Error(s);SchemaConfigGenerator.cs剩余MA0051已清零
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~SchemaConfigGenerator -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
54 Passed,0 Failed - 说明:测试项目构建仍显示既有
GFramework.SourceGenerators.TestsMA0048/MA0051/MA0004warning;不属于本轮GFramework.Game.SourceGenerators写集
- 结果:
RP-030的验证结果:dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;刷新 Linux 侧 restore 资产以移除 Windows fallback package folder 干扰
dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
49 Warning(s),0 Error(s);当前项目已不再出现MA0004/MA0048,剩余 warning 全部为MA0051
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --filter "FullyQualifiedName~GeneratorSnapshotTestSecurityTests|FullyQualifiedName~SchemaConfigGeneratorSnapshotTests|FullyQualifiedName~SchemaConfigGeneratorEnumTests" -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
6 Passed,0 Failed
- 结果:
RP-031的验证结果:dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;刷新 Linux 侧 restore 资产以支持后续串行 build/test 验证
dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:Summary- 结果:
43 Warning(s),0 Error(s);LoggerGeneratorSnapshotTests.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-build --disable-build-servers --filter FullyQualifiedName~LoggerGeneratorSnapshotTests -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
6 Passed,0 Failed
- 结果:
RP-033的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
39 Warning(s),0 Error(s);SchemaConfigGeneratorSnapshotTests.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-build --disable-build-servers --filter FullyQualifiedName~SchemaConfigGeneratorSnapshotTests -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
1 Passed,0 Failed
- 结果:
RP-035的验证结果:python3 .agents/skills/gframework-pr-review/scripts/fetch_current_pr_review.py --json-output /tmp/current-pr-review.json- 结果:成功定位当前分支关联的
PR #273;状态为CLOSED,latest-head review threads 仍显示2条 open thread, test report 均为通过,MegaLinter 仅保留 docstring coverage /dotnet-format历史信号
- 结果:成功定位当前分支关联的
dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
22 Warning(s),0 Error(s);剩余MA0051全部集中在CqrsHandlerRegistryGeneratorTests.cs与SchemaConfigGeneratorTests.cs
- 结果:
RP-036的验证结果:dotnet restore GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -p:RestoreFallbackFolders="" -nologo- 结果:通过;刷新测试依赖输出,规避
--no-build场景下的缺包噪音
- 结果:通过;刷新测试依赖输出,规避
dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
15 Warning(s),0 Error(s);SchemaConfigGeneratorTests.cs已不再出现在MA0051列表中
- 结果:
dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-build --disable-build-servers --filter FullyQualifiedName~SchemaConfigGeneratorTests -m:1 -p:RestoreFallbackFolders="" -nologo- 结果:
50 Passed,0 Failed
- 结果:
RP-037的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
14 Warning(s),0 Error(s);CqrsHandlerRegistryGeneratorTests.cs的行号337已不再出现在MA0051列表中
- 结果:
RP-038的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
13 Warning(s),0 Error(s);CqrsHandlerRegistryGeneratorTests.cs的行号454已不再出现在MA0051列表中
- 结果:
RP-039的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
12 Warning(s),0 Error(s);CqrsHandlerRegistryGeneratorTests.cs的行号536已不再出现在MA0051列表中
- 结果:
RP-040的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
11 Warning(s),0 Error(s);CqrsHandlerRegistryGeneratorTests.cs的行号607已不再出现在MA0051列表中
- 结果:
RP-041的验证结果:dotnet build GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release -t:Rebuild --no-restore --disable-build-servers -m:1 -p:UseSharedCompilation=false -p:RestoreFallbackFolders="" -nologo -clp:"Summary;WarningsOnly"- 结果:
10 Warning(s),0 Error(s);CqrsHandlerRegistryGeneratorTests.cs的行号680已不再出现在MA0051列表中
- 结果:
- active 跟踪文件只保留当前恢复点、活跃事实、风险与下一步,不再重复保存已完成阶段的长篇历史
下一步
- 若要继续该主题,先读 active tracking,再按需展开历史归档中的 warning 热点与验证记录
- 下一轮优先继续
GFramework.SourceGenerators.Tests的MA0051收口,并直接进入唯一剩余热点CqrsHandlerRegistryGeneratorTests.cs;但若用户真正关心“唯一变更文件数接近75”,下一轮应改为选择新的文件写集, 而不是继续停留在当前同一文件 - 若改回推进
MA0158,先设计net8.0/net9.0/net10.0多 target 条件编译方案,不直接批量替换共享源码中的objectlock - 若后续继续改动
GFramework.Godot,先修复该项目的 Linux 侧 restore 资产,再补跑独立 build - 若本主题确认暂缓,可保持当前归档状态,不需要再恢复
local-plan/