mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-11 04:04:29 +08:00
- 修复 PR #288 中经本地复核后仍成立的 Core、Game 与测试建议 - 更新 WSL 标准 dotnet build 验证路径并确认 Release 构建可通过 - 补充 analyzer-warning-reduction 跟踪文档记录本轮结论与恢复点
8.8 KiB
8.8 KiB
Analyzer Warning Reduction 追踪
2026-04-25 — RP-064
阶段:按标准 WSL build 路径复核 PR #288 建议并完成本轮收口
- 触发背景:
- 用户指出“在 WSL 里直接执行
dotnet build可以成功”,要求主线程按普通路径重新验证,而不是继续使用带MSBuildEnableWorkloadResolver=false、--no-restore、手工TargetFramework的 workaround 命令 - 当前任务仍属于 PR #288 review follow-up,因此本轮重点改为“区分哪些 AI 建议值得采纳”以及“用真实 WSL build 结果验证”
- 用户指出“在 WSL 里直接执行
- 主线程实施:
- 重新抓取 PR #288 review,确认 latest-head open threads 为
CodeRabbit 6 + Greptile 2 - 复核
outside diff + nitpick的 19 条建议,只采纳本地仍成立的建议;拒绝把“评论总数”机械等同于“必须全改” - 完成以下高信号修复:
ContextAware*/AsyncExtensions/NumericExtensions/StringExtensions/StoreBuilder:回退为ArgumentNullException.ThrowIfNull(...)ArchitectureServicesTests/GameContextTests:同步 XML<exception>到NotSupportedExceptionRegistryInitializationHookBaseTests:修复 override 可空签名实现,避免再次引入编译错误RollingFileAppenderTests/TaskCoroutineExtensionsTests/WaitForTaskTests/ScopedStorage:移除无收益噪音代码FileStorage:通过leaveOpen: true修正FileStream的双重释放语义SceneRouterBase:统一显式ConfigureAwait(true)并补齐引擎线程亲和说明StoreSelection:保留net9.0+的System.Threading.Lock,同时修正条件编译旁的注释写法,避免CS1587
- 重新抓取 PR #288 review,确认 latest-head open threads 为
- 验证里程碑:
dotnet restore GFramework.sln -p:RestoreFallbackFolders="" -v minimal- 结果:成功;证明先前
MSB4018来自 stale restore 元数据,而不是当前 WSL 默认 build 路径本身不可用
- 结果:成功;证明先前
dotnet build GFramework.Core/GFramework.Core.csproj -c Release- 结果:成功;
28 Warning(s)、0 Error(s)
- 结果:成功;
dotnet build GFramework.Game/GFramework.Game.csproj -c Release- 结果:成功;
329 Warning(s)、0 Error(s)
- 结果:成功;
dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release- 结果:成功;
137 Warning(s)、0 Error(s)
- 结果:成功;
- 当前结论:
- 用户关于“WSL 里直接
dotnet build可行”的判断正确 - 前一轮失败的核心原因不是仓库不可构建,而是主线程附加的 workaround 参数改变了 MSBuild 行为
- 本轮已完成 PR #288 中一组仍成立的建议修复,并重新拿到标准 WSL 路径下的 Release build 验证
- 剩余 review 线程需要在新 head 上重新抓取后再决定是否逐条 resolve
- 用户关于“WSL 里直接
2026-04-25 — RP-063
阶段:先收口 PR #288 latest-head 编译错误,再暂停在环境阻塞点并准备提交
- 触发背景:
- 用户显式要求先执行
$gframework-pr-review,并指出AsyncExtensionsTests.cs(126,23)当前存在CS0029/CS1662构建错误 - 当前 worktree 仍是
fix/analyzer-warning-reduction-batch,因此本 turn 继续沿用analyzer-warning-reduction的 active recovery 文档
- 用户显式要求先执行
- 主线程实施:
- 运行 PR review 抓取脚本,确认当前分支对应 PR
#288 - 核对 latest-head unresolved review threads 后,优先修复
AsyncExtensionsTests.cs中ct => Task.Delay(...).ConfigureAwait(false)错误返回ConfiguredTaskAwaitable的问题 - 顺手收敛多处已被 latest review 点名且本地仍成立的低风险残留:
- 测试中的
async无await ValueTask断言包装RegistryInitializationHookBaseTests.cs的可空返回签名NumericExtensions.cs、StringExtensions.cs、StoreBuilder.cs的 Allman 花括号残留StoreSelection.cs在net9.0+下切到System.Threading.Lock,同时保留net8.0兼容分支
- 测试中的
- 运行 PR review 抓取脚本,确认当前分支对应 PR
- 验证里程碑:
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 共9个,其中AsyncExtensionsTests.cs:126为 critical 编译错误
- 结果:成功;确认 PR
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- 结果:失败;原因同上
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- 结果:失败;原因同上
- 当前结论:
- 用户点名的
AsyncExtensionsTests.cs编译错误已在源码层修复 - 本 turn 未能拿到新的可通过 Release build,阻塞点已从先前记录的
MSB4276收敛为当前obj/*.csproj.nuget.g.props中 stale Windows fallback package folder 导致的MSB4018 - 用户随后要求“先不管这个了,先提交吧”,因此本 turn 在记录环境阻塞后先执行提交收口
- 用户点名的
2026-04-25 — RP-062
阶段:触达 $gframework-batch-boot 75 停止阈值并收口到 75 files / 2098 lines
- 触发背景:
RP-061收尾时分支相对origin/main仍只有48个已提交文件,距离本轮75 files停止条件还有明显空间- 用户明确允许继续委派 subagent,因此主线程继续把低风险机械型写集拆成互不重叠的 test / runtime 小批次
- 本轮主目标不是继续深挖单个高上下文热点,而是用新的低风险文件精确把 branch diff 推到阈值后停止
- 主线程实施:
- 先接受并提交 7 文件
Core.Tests收尾批次为03c73a8test(core-tests): 收敛测试桩与辅助类型 warning - 随后主线程与多个 worker 并行收口以下新增文件:
ArchitectureAdditionalCqrsHandlersTests.csRegistryInitializationHookBaseTests.csCommandCoroutineExtensionsTests.csTaskCoroutineExtensionsTests.csWaitForTaskTTests.csAsyncExtensionsTests.csLogContextTests.csPauseStackManagerTests.csAsyncExtensions.csCollectionExtensions.csContextAwareCommandExtensions.csContextAwareEnvironmentExtensions.csContextAwareEventExtensions.csContextAwareQueryExtensions.csContextAwareServiceExtensions.csGuardExtensions.csNumericExtensions.csStoreEventBusExtensions.csStringExtensions.csStoreBuilder.csStoreSelection.cs
- 将上述 22 文件批次收口为
9ce1fa6refactor(core): 收敛 Core 扩展与测试的机械 warning
- 先接受并提交 7 文件
- 验证里程碑:
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
- 结果:失败;
dotnet restore GFramework.Core.Tests/GFramework.Core.Tests.csproj -p:TestTargetFrameworks=net8.0 -p:RestoreFallbackFolders="" -v minimal- 结果:失败;
NU1201,GFramework.Tests.Common仅支持net10.0,不能作为Core.Tests的 net8 旁路验证
- 结果:失败;
git diff --name-only origin/main...HEAD | wc -l- 结果:
75
- 结果:
git diff --numstat origin/main...HEAD- 结果:累计
1083added、1015deleted,即2098changed lines
- 结果:累计
- 当前结论:
- 本轮
$gframework-batch-boot 75已精确达到主停止条件,默认恢复点应停止在9ce1fa6 Coreruntime 的本轮机械型改动已有可通过的最小 Release build 验证Core.Tests的继续推进当前首先受MSB4276环境阻塞影响;下一轮若要继续,应先修复构建环境,再重新建立 warning 基线
- 本轮