GFramework/GFramework.Core.SourceGenerators
gewuyou 7ec2185ae0 refactor(source-generators): 拆分上下文感知生成逻辑
- 重构 ContextAwareGenerator 的上下文属性生成流程,降低 MA0051 复杂度
- 补充 analyzer warning reduction 的 RP-017 恢复记录与验证结果
- 更新 下一步 MA0158 多目标兼容性评估方向
2026-04-23 09:49:21 +08:00
..

GFramework.Core.SourceGenerators

GFramework.Core.SourceGenerators 承载 Core 侧的通用源码生成器与分析器,用来减少样板代码并把部分约束前移到编译期。

模块定位

这个包属于编译期工具链,不是运行时库。

当前仓库中的主要目录:

  • Architectures/
  • Analyzers/
  • Bases/
  • Enums/
  • Logging/
  • Rule/
  • Diagnostics/

对应的生成器家族主要包括:

  • 日志相关生成器
  • ContextAware 及上下文注入辅助
  • 枚举扩展生成器
  • 优先级相关生成器
  • 模块自动注册
  • 注册可见性分析器

包关系

  • 运行时:GFramework.Core
  • 契约与特性:GFramework.Core.SourceGenerators.Abstractions
  • 公共生成器支撑:GFramework.SourceGenerators.Common

如果你还需要游戏配置 schema 生成或 Godot 专用生成器,应分别安装:

  • GFramework.Game.SourceGenerators
  • GFramework.Godot.SourceGenerators

主要能力

上下文注入与 ContextAware

该包支持围绕上下文感知类型生成辅助代码,例如:

  • [ContextAware]
  • [GetModel]
  • [GetModels]
  • [GetSystem]
  • [GetSystems]
  • [GetUtility]
  • [GetUtilities]
  • [GetService]
  • [GetServices]
  • [GetAll]

这类生成器适合用于 View、Controller、Godot 节点包装或其他需要频繁访问架构上下文的类型。

日志辅助

支持通过生成器减少 ILogger 相关样板代码。

注册分析器

包内还包含分析器,用来检查 ModelSystemUtility 的使用点是否能在所属架构中找到静态可见注册,帮助尽早发现“代码可以编译、运行时却缺注册”的问题。

最小接入路径

<ItemGroup>
  <PackageReference Include="GeWuYou.GFramework.Core.SourceGenerators"
                    Version="x.y.z"
                    PrivateAssets="all"
                    ExcludeAssets="runtime" />
</ItemGroup>

如果你想查看生成代码,可在消费者项目里启用:

<PropertyGroup>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
  <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>

适用场景

  • 你希望减少上下文绑定与日志相关样板代码
  • 你需要在编译期发现部分注册可见性问题
  • 你在做模块化架构,希望固定某些重复注册模式

对应文档