mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:39:00 +08:00
test(cqrs-tests): 收敛测试日志与行为集合抽象 warning
- 修复 TestLogger 与 MediatorAdvancedFeaturesTests 的集合抽象暴露问题,保持测试语义不变 - 更新 analyzer warning reduction 的 active tracking 与 trace,记录新的 640 条根构建基线和委派范围
This commit is contained in:
parent
58ba6c011e
commit
4edfe53cd9
@ -21,6 +21,8 @@ namespace GFramework.Cqrs.Tests.Logging;
|
||||
/// </summary>
|
||||
public sealed class TestLogger : AbstractLogger
|
||||
{
|
||||
private readonly List<LogEntry> _logs = [];
|
||||
|
||||
/// <summary>
|
||||
/// 初始化测试日志记录器。
|
||||
/// </summary>
|
||||
@ -33,7 +35,7 @@ public sealed class TestLogger : AbstractLogger
|
||||
/// <summary>
|
||||
/// 获取当前测试期间捕获到的日志条目。
|
||||
/// </summary>
|
||||
public List<LogEntry> Logs { get; } = [];
|
||||
public IReadOnlyList<LogEntry> Logs => _logs;
|
||||
|
||||
/// <summary>
|
||||
/// 将日志写入内存,供断言使用。
|
||||
@ -43,7 +45,7 @@ public sealed class TestLogger : AbstractLogger
|
||||
/// <param name="exception">关联异常。</param>
|
||||
protected override void Write(LogLevel level, string message, Exception? exception)
|
||||
{
|
||||
Logs.Add(new LogEntry(level, message, exception));
|
||||
_logs.Add(new LogEntry(level, message, exception));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -368,7 +368,10 @@ public sealed class TestBehaviorRequestHandler : IRequestHandler<TestBehaviorReq
|
||||
|
||||
public static class TestLoggingBehavior
|
||||
{
|
||||
public static List<string> LoggedMessages { get; set; } = new();
|
||||
/// <summary>
|
||||
/// 记录测试行为写入的日志消息,同时避免向调用方暴露具体集合实现。
|
||||
/// </summary>
|
||||
public static IList<string> LoggedMessages { get; set; } = new List<string>();
|
||||
}
|
||||
|
||||
public sealed record TestValidatedRequest : IRequest<string>
|
||||
@ -467,8 +470,19 @@ public sealed record TestCircuitBreakerRequest : IRequest<string>
|
||||
// 复杂场景相关类
|
||||
public class SagaData
|
||||
{
|
||||
public List<int> CompletedSteps { get; } = new();
|
||||
public List<int> CompensatedSteps { get; } = new();
|
||||
/// <summary>
|
||||
/// 获取 Saga 已成功执行的步骤集合。
|
||||
/// </summary>
|
||||
public IList<int> CompletedSteps { get; } = new List<int>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取 Saga 失败后已执行补偿的步骤集合。
|
||||
/// </summary>
|
||||
public IList<int> CompensatedSteps { get; } = new List<int>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 Saga 是否已经完整结束。
|
||||
/// </summary>
|
||||
public bool IsCompleted { get; set; }
|
||||
}
|
||||
|
||||
@ -489,7 +503,11 @@ public sealed record TestExternalServiceRequest : IRequest<string>
|
||||
public sealed record TestDatabaseRequest : IRequest<string>
|
||||
{
|
||||
public string Data { get; init; } = string.Empty;
|
||||
public List<string> Storage { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或初始化用于模拟数据库写入的可变存储集合,同时避免泄漏具体集合实现。
|
||||
/// </summary>
|
||||
public IList<string> Storage { get; init; } = new List<string>();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -6,14 +6,14 @@
|
||||
|
||||
## 当前恢复点
|
||||
|
||||
- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-068`
|
||||
- 当前阶段:`Phase 68`
|
||||
- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-069`
|
||||
- 当前阶段:`Phase 69`
|
||||
- 当前焦点:
|
||||
- `2026-04-25` 主线程已提交 `1b85b53` `refactor(game): 收敛版本化迁移运行器长方法 warning`
|
||||
- 并行 subagent 批次已提交 `a7fa70e` `fix(core-tests): 清理 LogContextTests 异步等待 warning` 与 `9f6204d` `fix(core-tests): 收口 LoggerTests 日志集合抽象`
|
||||
- 当前主线程单文件批次聚焦 `GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs`,通过拆分缓存元数据测试的装配、断言与 verify helper 收敛根构建直接确认的 `MA0051`
|
||||
- 提权后的直接仓库根基线已从 `649 Warning(s)` 降至 `645 Warning(s)`,说明本轮 3 文件并行批次继续有效
|
||||
- `GFramework.Cqrs.Tests` 与 `GFramework.Core.Tests` 的直接受影响 `Release` build 当前均已通过,branch diff 仍显著低于 `$gframework-batch-boot 50` 阈值
|
||||
- `2026-04-25` 主线程已提交 `58ba6c0` `test(cqrs-tests): 收敛处理器注册缓存测试 warning`
|
||||
- 当前并行双文件批次聚焦 `GFramework.Cqrs.Tests/Logging/TestLogger.cs` 与 `GFramework.Cqrs.Tests/Mediator/MediatorAdvancedFeaturesTests.cs`
|
||||
- 主线程收敛 `TestLogger.Logs` 的集合抽象暴露问题,worker 则在 `MediatorAdvancedFeaturesTests.cs` 内收敛一组低风险 `MA0016`
|
||||
- 提权后的直接仓库根基线已从 `645 Warning(s)` 降至 `640 Warning(s)`,说明本轮双文件 `Cqrs.Tests` 批次继续有效
|
||||
- `GFramework.Cqrs.Tests` 的直接受影响 `Release` build 当前为 `0 Warning(s)`、`0 Error(s)`,branch diff 仍显著低于 `$gframework-batch-boot 50` 阈值
|
||||
|
||||
## 当前活跃事实
|
||||
|
||||
@ -22,12 +22,14 @@
|
||||
- `dotnet clean`
|
||||
- 结果:成功;此前沙箱内 “Build FAILED but 0 errors” 的 clean 结果不是仓库真值
|
||||
- `dotnet build`
|
||||
- 最新结果:成功;`645 Warning(s)`、`0 Error(s)`
|
||||
- 最新结果:成功;`640 Warning(s)`、`0 Error(s)`
|
||||
- 已提交的低风险批次文件:
|
||||
- `AGENTS.md`
|
||||
- `GFramework.Core.Tests/Logging/LogContextTests.cs`
|
||||
- `GFramework.Core.Tests/Logging/LoggerTests.cs`
|
||||
- `GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs`
|
||||
- `GFramework.Cqrs.Tests/Logging/TestLogger.cs`
|
||||
- `GFramework.Cqrs.Tests/Mediator/MediatorAdvancedFeaturesTests.cs`
|
||||
- `GFramework.Ecs.Arch.Tests/Ecs/EcsAdvancedTests.cs`
|
||||
- `GFramework.Game.Tests/Config/GameConfigBootstrapTests.cs`
|
||||
- `GFramework.Game.Tests/Config/GeneratedConfigConsumerIntegrationTests.cs`
|
||||
@ -38,11 +40,9 @@
|
||||
- `ai-plan/public/analyzer-warning-reduction/traces/analyzer-warning-reduction-trace.md`
|
||||
- 当前批次验证结果:
|
||||
- `dotnet build GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release`
|
||||
- 最新主线程结果:成功;`155 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --no-build --filter "FullyQualifiedName~CqrsHandlerRegistrarTests.RegisterHandlers_Should_Cache_Assembly_Metadata_Across_Containers"`
|
||||
- 最新主线程结果:成功;`Passed 1/1`
|
||||
- `dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release`
|
||||
- 最新主线程结果:成功;`0 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release`
|
||||
- 上一轮主线程结果:成功;`0 Warning(s)`、`0 Error(s)`
|
||||
|
||||
## 当前风险
|
||||
|
||||
@ -70,16 +70,14 @@
|
||||
- `dotnet clean`
|
||||
- 当前结果:成功;在提权后的直接 shell 中可正常完成仓库根 clean
|
||||
- `dotnet build`
|
||||
- 当前结果:成功;`645 Warning(s)`、`0 Error(s)`
|
||||
- 当前结果:成功;`640 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet build GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release`
|
||||
- 当前结果:成功;`155 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --no-build --filter "FullyQualifiedName~CqrsHandlerRegistrarTests.RegisterHandlers_Should_Cache_Assembly_Metadata_Across_Containers"`
|
||||
- 当前结果:成功;`Passed 1/1`
|
||||
- 当前结果:成功;`0 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet build GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release`
|
||||
- 当前结果:成功;`0 Warning(s)`、`0 Error(s)`
|
||||
|
||||
## 下一步建议
|
||||
|
||||
1. 以当前 `645 Warning(s)` 根基线为新恢复点,继续按 `$gframework-batch-boot 50` 规则重算 branch diff,并挑选下一个 1-3 文件的低风险热点。
|
||||
1. 以当前 `640 Warning(s)` 根基线为新恢复点,继续按 `$gframework-batch-boot 50` 规则重算 branch diff,并挑选下一个 1-3 文件的低风险热点。
|
||||
2. 下一轮优先从 `GFramework.Cqrs.Tests`、`GFramework.Core.Tests` 或 `GFramework.Game` 中继续选择单文件 `MA0051`、`MA0016` 或测试噪音切片,避免过早推高 review 范围。
|
||||
3. 后续凡是沙箱内 `.NET` 验证再次出现无诊断失败、pipe/socket 权限问题或与普通 shell 不一致的结果,直接申请沙箱外重跑同一命令,不再扩散 workaround 型命令噪音。
|
||||
|
||||
@ -1,5 +1,33 @@
|
||||
# Analyzer Warning Reduction 追踪
|
||||
|
||||
## 2026-04-25 — RP-069
|
||||
|
||||
### 阶段:继续收口 Cqrs.Tests 双文件集合抽象 warning,并刷新新的仓库根基线
|
||||
|
||||
- 触发背景:
|
||||
- `RP-068` 收尾后,当前分支的仓库根基线已降到 `645 Warning(s)`,branch diff 仍远低于 `$gframework-batch-boot 50`
|
||||
- 为保持批次小而连续,主线程继续留在 `GFramework.Cqrs.Tests` 项目内,选取两个不涉及跨文件重构的 `MA0016` 切片
|
||||
- 接受的委派范围:
|
||||
- worker `Chandrasekhar`
|
||||
- 文件:`GFramework.Cqrs.Tests/Mediator/MediatorAdvancedFeaturesTests.cs`
|
||||
- 目标:在同一文件内收敛 `TestLoggingBehavior.LoggedMessages`、`SagaData`、`TestDatabaseRequest` 的集合抽象暴露问题
|
||||
- 结果:未自行提交;主线程接受其工作树改动并纳入本轮批次
|
||||
- 主线程实施:
|
||||
- 本地修改 `GFramework.Cqrs.Tests/Logging/TestLogger.cs`
|
||||
- 将 `Logs` 从 `List<LogEntry>` 收口为 `IReadOnlyList<LogEntry>`,保留私有 `_logs` 作为内部存储
|
||||
- 与 worker 的 `MediatorAdvancedFeaturesTests.cs` 改动合并后,重新执行 `GFramework.Cqrs.Tests` 与仓库根验证,确认双文件批次的净效果
|
||||
- 验证里程碑:
|
||||
- `dotnet build GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release`
|
||||
- 结果:成功;`0 Warning(s)`、`0 Error(s)`
|
||||
- `dotnet clean`
|
||||
- 结果:成功
|
||||
- `dotnet build`
|
||||
- 结果:成功;`640 Warning(s)`、`0 Error(s)`,相较 `RP-068` 的 `645` 再下降 `5`
|
||||
- 当前结论:
|
||||
- `Cqrs.Tests` 双文件批次已确认有效,并继续压低仓库根 warning 基线
|
||||
- 当前分支距离 `$gframework-batch-boot 50` 的停止阈值仍有很大空间,可以继续按“主线程小切片 + subagent 并行单文件”推进
|
||||
- 下一轮可优先回到 `GFramework.Core.Tests` 或继续选择新的 `GFramework.Cqrs.Tests` 单文件热点
|
||||
|
||||
## 2026-04-25 — RP-068
|
||||
|
||||
### 阶段:吸收并行 subagent 小批次,并继续压低仓库根 warning 基线
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user