mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-13 06:04:30 +08:00
- 修复 AsyncExtensionsTests 中错误返回 ConfiguredTaskAwaitable 导致的测试编译失败 - 收敛多处测试中的冗余 async/await 与 ValueTask 断言包装,减少 PR review 指出的告警 - 更新 StoreSelection 的 net9+ 锁实现与 analyzer-warning-reduction 跟踪文档,记录 PR #288 与当前 MSB4018 环境阻塞
8.5 KiB
8.5 KiB
Analyzer Warning Reduction 跟踪
目标
继续以“直接看构建输出、直接修构建 warning”为原则推进当前分支,并保持 active recovery 文档只保留当前真值。
当前恢复点
- 恢复点编号:
ANALYZER-WARNING-REDUCTION-RP-063 - 当前阶段:
Phase 63 - 当前焦点:
2026-04-25当前 turn 先执行$gframework-pr-review,核对 PR #288 的 latest-head AI review 与本地真实状态- 已修复
GFramework.Core.Tests/Extensions/AsyncExtensionsTests.cs的ConfiguredTaskAwaitable -> Task编译错误,并顺手收敛一批同类测试/样式残留 - 基线
origin/main仍为9964962(2026-04-24T23:05:53+08:00) - 当前累计 branch diff 相对
origin/main为75个文件、2098行,已触达本轮75 files阈值 RP-061之后已接受 2 个批次提交:03c73a8、9ce1fa6- 当前默认恢复入口不再继续扩写集;若要继续 analyzer reduction,优先先处理 WSL 下 NuGet fallback package folder 指向失效 Windows 路径的构建环境阻塞
当前活跃事实
- 当前
origin/main基线提交为9964962(2026-04-24T23:05:53+08:00)。 - 本轮
Core.Tests低风险机械型清理已落地到:ArchitectureAdditionalCqrsHandlersTests.csRegistryInitializationHookBaseTests.csCommandCoroutineExtensionsTests.csTaskCoroutineExtensionsTests.csWaitForTaskTTests.csAsyncExtensionsTests.csLogContextTests.csPauseStackManagerTests.cs
- 本 turn 结合 PR #288 latest-head review 额外收敛了以下仍然成立的问题:
AsyncExtensionsTests.cs:修复WithTimeoutAsync无返回值测试中错误返回ConfiguredTaskAwaitable导致的CS0029/CS1662AsyncKeyLockManagerTests.cs:去掉两处不会产生额外价值的Assert.DoesNotThrowAsync(() => Task.WhenAll(...))包装,并把取消断言改为直接消费ValueTask.AsTask()AsyncArchitectureTests.csArchitectureLifecycleBehaviorTests.csStateMachineSystemTests.csRegistryInitializationHookBaseTests.csNumericExtensions.csStringExtensions.csStoreBuilder.csStoreSelection.cs
- 当前 PR review 观察:
- PR:
#288 - latest reviewed commit:
be336b2088b7c283a140add76d5cff30618ad16d coderabbitai[bot]仍有7个 open threads,greptile-apps[bot]仍有2个 open threads- 本 turn 已优先修复 latest-head 中明确指向
AsyncExtensionsTests.cs:126的 critical 编译错误
- PR:
- 本轮
Coreruntime 低风险机械型清理已落地到:AsyncExtensions.csCollectionExtensions.csContextAwareCommandExtensions.csContextAwareEnvironmentExtensions.csContextAwareEventExtensions.csContextAwareQueryExtensions.csContextAwareServiceExtensions.csGuardExtensions.csNumericExtensions.csStoreEventBusExtensions.csStringExtensions.csStoreBuilder.csStoreSelection.cs
dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -v minimal当前结果为0 Warning(s)、0 Error(s),可作为本轮 runtime 变更的最终最小 Release build 验证。GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-incremental在03c73a8提交前的最近一次可信主线程结果为198 Warning(s)、0 Error(s);该观测值覆盖了ArchitectureContextTests、ArchitectureServicesTests、GameContextTests、ResultTests、AsyncTestModel、AsyncTestSystem与ContextAwareEnvironmentExtensionsTests的 7 文件批次。- 当前累计 branch diff 相对
origin/main为75个文件、2098行;本轮主停止条件已经达到。
当前风险
- 当前环境下
GFramework.Core/GFramework.Core.Tests的 Release build 会命中MSB4018。- 直接原因:
ResolvePackageAssets仍从历史 restore 生成的obj/*.csproj.nuget.g.props读取失效的 Windows fallback package folderD:\Tool\Development Tools\Microsoft Visual Studio\Shared\NuGetPackages。 - 缓解措施:下次恢复时先重建 WSL 原生 restore 元数据,或显式清理并重做
obj下的 NuGet restore 工件,再重新建立可信 build 基线。
- 直接原因:
dotnet clean GFramework.sln -c Release与dotnet clean GFramework.Game.Tests/GFramework.Game.Tests.csproj -c Release仍无法稳定提供新的 clean 基线。- 缓解措施:后续若继续整仓 warning reduction,需要单独定位 clean 失败原因,或明确继续沿用 direct build 观测值作为临时真值。
- 当前 worktree 仍存在未跟踪的
.codex目录。- 缓解措施:提交当前批次时只暂存 analyzer-warning-reduction 相关源码与
ai-plan文件,避免把工作目录辅助文件混入提交。
- 缓解措施:提交当前批次时只暂存 analyzer-warning-reduction 相关源码与
- 将分支继续推过
75 files会明显降低本轮 reviewability。- 缓解措施:当前恢复点默认停止;如需继续,建议在新 turn 明确新的文件阈值或先 rebase / refresh baseline。
活跃文档
- 当前轮次归档:
- 历史跟踪归档:
- 历史 trace 归档:
验证说明
dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -v minimal- 历史结果:成功;
0 Warning(s)、0 Error(s)
- 历史结果:成功;
dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-incremental --no-restore -p:RestoreFallbackFolders= -v:diag- 历史结果:失败;
MSB4276,默认 SDK resolver 无法解析Microsoft.NET.SDK.WorkloadAutoImportPropsLocator,属于当前 WSL / dotnet 10 环境阻塞
- 历史结果:失败;
DOTNET_CLI_HOME=/tmp/dotnet-home MSBuildEnableWorkloadResolver=false dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -v minimal- 结果:失败;
MSB4018,ResolvePackageAssets命中失效 Windows fallback package folderD:\Tool\Development Tools\Microsoft Visual Studio\Shared\NuGetPackages
- 结果:失败;
DOTNET_CLI_HOME=/tmp/dotnet-home MSBuildEnableWorkloadResolver=false dotnet build GFramework.Core/GFramework.Core.csproj -c Release --no-restore -p:TargetFramework=net9.0 -p:RestoreFallbackFolders="" -v minimal- 结果:失败;
MSB4018,原因同上
- 结果:失败;
DOTNET_CLI_HOME=/tmp/dotnet-home MSBuildEnableWorkloadResolver=false dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --no-restore -p:TargetFramework=net10.0 -p:RestoreFallbackFolders="" -v minimal- 结果:失败;
MSB4018,原因同上
- 结果:失败;
python3 .agents/skills/gframework-pr-review/scripts/fetch_current_pr_review.py --json-output /tmp/current-pr-review.json- 结果:成功;定位到 PR
#288,提取 latest-head unresolved AI review threads、MegaLinter 与 Docstring Coverage 信号
- 结果:成功;定位到 PR
dotnet restore GFramework.Core.Tests/GFramework.Core.Tests.csproj -p:TestTargetFrameworks=net8.0 -p:RestoreFallbackFolders="" -v minimal- 结果:失败;
NU1201,GFramework.Tests.Common仅支持net10.0,因此不能用net8.0旁路验证Core.Tests
- 结果:失败;
git diff --name-only origin/main...HEAD | wc -l- 当前结果:
75
- 当前结果:
git diff --numstat origin/main...HEAD- 当前结果:累计
1083added、1015deleted,即2098changed lines
- 当前结果:累计
下一步建议
- 当前 turn 已先修复 latest-head PR review 中最紧急的编译错误;后续若继续 PR #288 收尾,优先重新抓取 unresolved threads,确认剩余 8 个 open threads 哪些仍成立。
- 若后续要继续
Core/Core.Testswarning reduction,先修复 WSL 下 stale NuGet restore metadata 导致的MSB4018,再重新建立可信 build 基线。 - 若要开启下一轮批处理,优先选择新的 stop-condition(例如新的 file 阈值、warning 目标或限定到单模块)后再继续。