mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-12 13:14:30 +08:00
- 修复 CqrsHandlerRegistrar generated registry 激活路径的可空 out 契约并移除 null! 抑制 - 更新 analyzer warning reduction 跟踪与 trace,记录 PR #263 review follow-up 和编译验证结果
5.6 KiB
5.6 KiB
Analyzer Warning Reduction 追踪
2026-04-21 — RP-003
阶段:Architecture 生命周期 MA0051 收口(RP-003)
- 依据 active tracking 中“继续只选一个
GFramework.Core结构性切入点”的约束,选定GFramework.Core/Architectures/ArchitectureLifecycle.cs,因为文件体量适中且已有ArchitectureLifecycleBehaviorTests覆盖阶段流转、销毁顺序和 late registration 行为 - 先用
warnings-only定向构建确认ArchitectureLifecycle.InitializeAllComponentsAsync仍在报MA0051,随后把主流程拆成:CreateInitializationPlanInitializePhaseComponentsAsyncMarkInitializationCompleted
- 保持原有阶段顺序
Before* -> After*、批量日志文本和异步初始化策略不变,只压缩主方法长度 - 修正新增
InitializationPlan记录类型的 XML<param>名称大小写,避免引入文档告警 - 验证通过:
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- 结果:
29 Warning(s),0 Error(s);ArchitectureLifecycle.cs已不再出现在 warning 列表
- 结果:
dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~ArchitectureLifecycleBehaviorTests -p:RestoreFallbackFolders=- 结果:
6 Passed,0 Failed
- 结果:
2026-04-21 — RP-004
阶段:PR review follow-up(RP-004)
- 使用
gframework-pr-review抓取当前分支 PR #263 的最新 CodeRabbit review threads、MegaLinter 摘要与 CTRF 测试结果, 只接受仍能在本地工作树复现的 review 点 - 在
GFramework.Cqrs/Internal/CqrsHandlerRegistrar.cs中将TryCreateGeneratedRegistry的out参数改为[NotNullWhen(true)] out ICqrsHandlerRegistry?,移除三处null!抑制,保持激活失败时的日志文本与回退语义不变 - 修正 active trace 中重复的
## 2026-04-21二级标题,消除 CodeRabbit 报告的 markdownlintMD024 - 核实 PR 信号后确认:当前 CTRF 报告为
2134 passed / 0 failed;MegaLinter 唯一告警来自 CI 环境中的dotnet-formatrestore 失败,不是本地代码格式问题 - 验证通过:
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)
- 结果:
2026-04-21 — RP-002
阶段:CQRS MA0051 收口(RP-002)
- 依据 active tracking 中“先只选一个结构性切入点”的约束,选定
GFramework.Cqrs/Internal/CqrsHandlerRegistrar.cs作为低风险下一步,因为它已有稳定的 targeted test 覆盖 generated registry、reflection fallback、缓存和重复注册行为 - 将
TryRegisterGeneratedHandlers拆分为 registry 激活、批量注册和 fallback 结果构建三个辅助阶段,同时把GetReflectionFallbackMetadata的直接类型解析与按名称解析拆开,降低长方法复杂度但不改日志文本与回退语义 - 顺手修正
RegisterAssemblyHandlers内部调试日志的缩进,未改注册顺序、生命周期或服务描述符写入逻辑 - 验证通过:
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)
- 结果:
dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --filter FullyQualifiedName~CqrsHandlerRegistrarTests -p:RestoreFallbackFolders=- 结果:
11 Passed,0 Failed
- 结果:
- 新发现的环境注意事项:
- 当前 WSL worktree 下若不显式传入
-p:RestoreFallbackFolders=,Linuxdotnet会读取不存在的 Windows fallback package folder 并导致ResolvePackageAssets失败 - sandbox 内运行
dotnet会因 MSBuild named-pipe 限制失败;需要在提权上下文中执行 .NET 验证
- 当前 WSL worktree 下若不显式传入
2026-04-19
阶段:local-plan 迁移收口(RP-001)
- 复核当前工作树后确认:
local-plan/仅保存 analyzer warning reduction 主题的 durable recovery state,不应继续作为 worktree-root 遗留目录存在 - 按
ai-plan治理规则建立ai-plan/public/analyzer-warning-reduction/主题目录,并补齐:todos/traces/archive/todos/archive/traces/
- 将旧
local-plan中的详细 tracking / trace 迁入主题内历史归档,保留RP-001的完整实现与验证上下文 - 新建精简版 active tracking / trace 入口,并在
ai-plan/public/README.md中建立fix/analyzer-warning-reduction-batch->analyzer-warning-reduction的 worktree 映射 - 删除旧
local-plan文件,避免boot或后续协作者继续从过时目录恢复 - 验证通过:
find ai-plan/public/analyzer-warning-reduction -maxdepth 3 -type f | sortdotnet build GFramework.Core.Abstractions/GFramework.Core.Abstractions.csproj -c Release -p:RestoreFallbackFolders=
Archive Context
- 历史跟踪归档:
ai-plan/public/analyzer-warning-reduction/archive/todos/analyzer-warning-reduction-history-rp001.md
- 历史 trace 归档:
ai-plan/public/analyzer-warning-reduction/archive/traces/analyzer-warning-reduction-history-rp001.md
下一步
- 若继续 analyzer warning reduction,优先回到
GFramework.Core剩余MA0051热点,并继续保持“单 warning family、单切入点”的节奏 - 后续所有 WSL 下的 .NET 定向验证命令继续显式附带
-p:RestoreFallbackFolders=,避免把环境问题误判成代码回归