GFramework/ai-plan/public/analyzer-warning-reduction/todos/analyzer-warning-reduction-tracking.md
GeWuYou f044aeb770 fix(analyzer): 收敛 CoroutineScheduler 长方法 warning
- 重构 CoroutineScheduler 的启动与完成清理阶段,降低 MA0051 并保持取消与完成语义
- 补充辅助方法注释,保留标签分组、统计和等待者唤醒顺序
- 更新 analyzer warning reduction 的恢复点与验证记录
2026-04-21 11:17:47 +08:00

7.2 KiB
Raw Blame History

Analyzer Warning Reduction 跟踪

目标

继续以“优先低风险、保持行为兼容”为原则收敛当前仓库的 Meziantou analyzer warnings并在首轮大规模清理完成后 判断剩余结构性 warning 是否值得在下一轮继续推进。

当前恢复点

  • 恢复点编号:ANALYZER-WARNING-REDUCTION-RP-007
  • 当前阶段:Phase 7
  • 当前焦点:
    • 已完成 GFramework.Core/Coroutine/CoroutineScheduler.csMA0051 收口:将 Run 拆分为槽位分配、运行槽创建和启动注册阶段, 将 FinalizeCoroutine 拆分为可完成目标读取、完成元数据更新、资源释放和生命周期收尾阶段
    • 本轮保持取消回调入队、统计记录、标签/分组清理、等待者唤醒和完成任务语义不变,未改公共 API
    • 当前 MA0051 主线已完成;下一轮若继续推进,应先判断剩余 MA0048MA0046MA0002MA0016 是否值得继续低风险收敛

当前状态摘要

  • 已完成 GFramework.CoreGFramework.CqrsGFramework.Godot 与部分 source generator 的低风险 warning 清理
  • 已完成多轮 CodeRabbit follow-up 修复,并用定向测试与项目/解决方案构建验证了关键回归风险
  • 当前 PauseStackManagerStoreCoroutineScheduler 的长方法 warning 已从 active 入口移除;主题内剩余 warning 主要集中在文件/类型命名冲突、delegate 形状、字符串 comparer 重载和少量公共集合抽象接口问题

当前活跃事实

  • 当前主题仍是 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 验证 调度、取消与完成状态语义未回归
  • 当前工作树分支 fix/analyzer-warning-reduction-batch 已在 ai-plan/public/README.md 建立 topic 映射

当前风险

  • 结构性重构风险:剩余 GFramework.CoreMA0051MA0048 可能要求较大的文件拆分或类型重命名
    • 缓解措施:只在下一轮明确接受结构调整成本时再继续推进,不在恢复点模糊的情况下顺手扩面
  • 测试宿主稳定性风险:部分 Godot 失败路径在当前 .NET 测试宿主下仍不稳定
    • 缓解措施:继续优先使用稳定的 targeted test、项目构建和相邻 smoke test 组合验证
  • 多目标框架 warning 解释风险:同一源位置会在多个 target framework 下重复计数
    • 缓解措施:继续以唯一源位置和 warning 家族为主要决策依据,而不是只看原始 warning 总数

活跃文档

验证说明

  • 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;WarningsOnly
    • dotnet 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 Passed0 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 Passed0 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 Passed0 Failed
  • active 跟踪文件只保留当前恢复点、活跃事实、风险与下一步,不再重复保存已完成阶段的长篇历史

下一步

  1. 若要继续该主题,先读 active tracking再按需展开历史归档中的 warning 热点与验证记录
  2. 先基于当前 23 Warning(s) 的唯一源位置清单,判断 MA0048 文件命名冲突与 MA0046 delegate 形状是否存在低风险切入点, 再决定是否开启下一轮 warning family 收敛
  3. 若本主题确认暂缓,可保持当前归档状态,不需要再恢复 local-plan/