Skip to content

refactor: Utility/Helper 组织方式重构 + 全量兼容转发层(整合 #13 #14) - #16

Closed
AlianBlank wants to merge 2 commits into
mainfrom
refactor/utility-helper-merge
Closed

AlianBlank wants to merge 2 commits into
mainfrom
refactor/utility-helper-merge

Conversation

@AlianBlank

Copy link
Copy Markdown
Collaborator

变更

整合 #13(Utility/Helper 重构)与 #14(review 修复与边界测试)为单一 PR,并补齐兼容层,对下游 40+ 包与业务代码零破坏

1. Git 整合(两个提交)

2. 兼容层(核心:非破坏性变更)

旧 API 新 API 方式
Utility.Text / Utility.Json / Utility.Compression GameFrameworkText / GameFrameworkJson / GameFrameworkCompression 静态转发
Utility.Converter/Hash/Encryption/Verifier/Path/File/Marshal/Net/Object/Assembly/IdGenerator/RandomUtility/Asset.Path 同名 XxxUtility 静态转发
嵌套算法类 MD5/XXHash/HMACSha256 Md5/XxHash/HmacSha256 旧名保留转发
Utility.Const.FileNameSuffix 顶层 FileNameSuffix 嵌套转发 + 常量复制
PathHelper/MathHelper/ZipHelper/... 14 个 XxxUtility / 扩展类 静态转发
RandomHelper.Next/NextInt64/NextUInt64 RandomUtility.GetRandom* 改名别名转发
ITextHelper/IJsonHelper/ICompressionHelper 新命名空间同名接口 接口继承
GameObjectHelper.Create CreateChild 手写转发
DoTweenHelper DoTweenUtility 手写转发(保留 #if ENABLE_GAME_FRAME_X_DO_TWEEN
SetLayerRecursively(被删,下游 7+ 处使用) 恢复于新扩展类 [Obsolete] 指向 SetLayer
  • 全部标记 [Obsolete("...计划于 3.0.0 移除")] + [Preserve] 防裁剪,warning 不 error
  • shim 不保留 this 修饰(避免与新扩展类 CS0121 歧义);旧静态调用语法 XxxHelper.Member(x) 全部可用
  • 仅转发旧公共成员(359 个),private 成员不 shim

3. 明确不兼容项(下游零使用,已逐一核实)

验证

发布策略

  • 版本 2.5.3 → release-please 产出 2.6.0(加兼容层为非破坏性 minor)
  • 下游包在迁移期逐步替换旧 API,warning 归零后于 3.0.0 删除兼容层(与 Obsolete 消息闭环)

关联

Supersedes #13, #14
Closes #13
Closes #14

- Utility 嵌套门面与 XxxHelper 重组为扁平 XxxUtility / GameFrameworkXxx / Extension
- 嵌套算法类命名规范化:MD5→Md5、XXHash→XxHash、HMACSha256→HmacSha256
- 合入 main 上 e89eb8c 的 PathHelper.Combine 修复(应用至 PathUtility.Combine)
- 找回 7 个 Combine 回归测试并改写为 PathUtility 名下
- package.json 版本保持 2.5.3(避免倒退)

整合自 #13(d89d978)与其 review 修复 #14(c0af2d8)。
整合 #13 #14 的重构保持接口兼容:
- Runtime/Compatibility/ 自动生成 + 手写校对的转发层(359 个公共成员)
- 旧 Utility 门面(Text/Hash/Converter/Json/Encryption/Verifier 等 17 个嵌套类)
  与 14 个 XxxHelper 全部转发至新扁平 API,标记 [Obsolete](3.0.0 移除)
- ITextHelper/IJsonHelper/ICompressionHelper 以接口继承方式兼容
- shim 不保留 this 扩展修饰,避免与新扩展类同名方法 CS0121 歧义;
  旧静态调用语法(XxxHelper.Member(x))不受影响
- 恢复 UnityEngineGameObjectExtension.SetLayerRecursively(下游 7+ 处使用,
  标记过期并指向 SetLayer 默认递归行为)
- 验证:Unity 2022.3.62 全工程 batchmode 编译 0 error,
  产生 898 个 CS0618 迁移警告(预期迁移信号)

不兼容项(下游零使用,PR 描述注明):
- Verifier.Crc64/Dsa/Rsa 等 sealed 实例类(无法继承转发)
- ShellUtility Runtime->Editor 程序集迁移
- string Print/WithColor/WithSize 调试扩展(#14 已删)
@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 227 files, which is 127 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 3589c497-0617-4e8a-b07e-6cba542b4064

📥 Commits

Reviewing files that changed from the base of the PR and between 276c3fa and 5d6d85b.

📒 Files selected for processing (227)
  • Editor/BuildHotfix/BuildHotfixHelper.cs
  • Editor/BuildProduct/BuildProductHelper.cs
  • Editor/Cropping/CroppingWindow.cs
  • Editor/Extension.meta
  • Editor/Extension/ObjectExtensions.cs
  • Editor/Extension/ObjectExtensions.cs.meta
  • Editor/Helper.meta
  • Editor/Helper/EditorHelper.cs
  • Editor/Helper/EditorHelper.cs.meta
  • Editor/Inspector/BaseComponentInspector.cs
  • Editor/Inspector/ComponentTypeComponentInspector.cs
  • Editor/Inspector/ObjectPoolComponentInspector.cs
  • Editor/Inspector/ReferencePoolComponentInspector.cs
  • Editor/Misc/HelperInfo.cs
  • Editor/Misc/OpenFolder.cs
  • Editor/Misc/ProjectPathTitlebarModifier.cs
  • Editor/Misc/ProjectPathTitlebarModifier.cs.meta
  • Editor/Misc/TypeHelper.cs
  • Editor/Utility.meta
  • Editor/Utility/ShellUtility.cs
  • Editor/Utility/ShellUtility.cs.meta
  • Runtime/Base/BaseComponent.cs
  • Runtime/Base/DataStruct/TypeNamePair.cs
  • Runtime/Base/EventPool/EventPool.cs
  • Runtime/Base/GameFrameworkEntry.cs
  • Runtime/Base/GameFrameworkSerializer.cs
  • Runtime/Base/ReferencePool/ReferencePool.cs
  • Runtime/Base/Variable/GenericVariable.cs
  • Runtime/Compatibility.meta
  • Runtime/Compatibility/GameFrameXCompatHelper.cs
  • Runtime/Compatibility/GameFrameXCompatHelper.cs.meta
  • Runtime/Compatibility/GameFrameXCompatManual.cs
  • Runtime/Compatibility/GameFrameXCompatManual.cs.meta
  • Runtime/Compatibility/GameFrameXCompatUtility.cs
  • Runtime/Compatibility/GameFrameXCompatUtility.cs.meta
  • Runtime/Constant.meta
  • Runtime/Constant/FileNameSuffix.cs
  • Runtime/Constant/FileNameSuffix.cs.meta
  • Runtime/Extension/Extension/BinaryExtension.cs
  • Runtime/Extension/Extension/CollectionExtensions.cs
  • Runtime/Extension/Extension/StringExtensions.cs
  • Runtime/Extension/UnityEngine.Camera.meta
  • Runtime/Extension/UnityEngine.Camera/UnityEngine.CameraExtension.cs
  • Runtime/Extension/UnityEngine.Camera/UnityEngine.CameraExtension.cs.meta
  • Runtime/Extension/UnityEngine.GameObject/UnityEngine.GameObjectExtension.cs
  • Runtime/Extension/UnityEngine.Renderer.meta
  • Runtime/Extension/UnityEngine.Renderer/UnityEngine.RendererExtension.cs
  • Runtime/Extension/UnityEngine.Renderer/UnityEngine.RendererExtension.cs.meta
  • Runtime/Extension/UnityEngine.Transform/UnityEngine.TransformExtension.cs
  • Runtime/GameFrameXCroppingHelper.cs
  • Runtime/Helper/Compression.meta
  • Runtime/Helper/Compression/GameFrameworkCompression.ICompressionHelper.cs
  • Runtime/Helper/Compression/GameFrameworkCompression.ICompressionHelper.cs.meta
  • Runtime/Helper/Compression/GameFrameworkCompression.cs
  • Runtime/Helper/Compression/GameFrameworkCompression.cs.meta
  • Runtime/Helper/DefaultCompressionHelper.cs
  • Runtime/Helper/DefaultTextHelper.cs
  • Runtime/Helper/DistinctHelper.cs
  • Runtime/Helper/GameObjectHelper.cs
  • Runtime/Helper/GameVersion.meta
  • Runtime/Helper/GameVersion/GameVersion.IVersionHelper.cs
  • Runtime/Helper/GameVersion/GameVersion.IVersionHelper.cs.meta
  • Runtime/Helper/GameVersion/GameVersion.cs
  • Runtime/Helper/GameVersion/GameVersion.cs.meta
  • Runtime/Helper/Helper.cs
  • Runtime/Helper/Json.meta
  • Runtime/Helper/Json/GameFrameworkJson.IJsonHelper.cs
  • Runtime/Helper/Json/GameFrameworkJson.IJsonHelper.cs.meta
  • Runtime/Helper/Json/GameFrameworkJson.cs
  • Runtime/Helper/Json/GameFrameworkJson.cs.meta
  • Runtime/Helper/LitJsonHelper.cs
  • Runtime/Helper/Log.meta
  • Runtime/Helper/Log/GameFrameworkLog.ILogHelper.cs
  • Runtime/Helper/Log/GameFrameworkLog.ILogHelper.cs.meta
  • Runtime/Helper/Log/GameFrameworkLog.cs
  • Runtime/Helper/Log/GameFrameworkLog.cs.meta
  • Runtime/Helper/Log/GameFrameworkLogLevel.cs
  • Runtime/Helper/Log/GameFrameworkLogLevel.cs.meta
  • Runtime/Helper/NetworkHelper.cs
  • Runtime/Helper/ObjectHelper.cs
  • Runtime/Helper/PathHelper.cs
  • Runtime/Helper/PathHelper.cs.meta
  • Runtime/Helper/RandomHelper.cs
  • Runtime/Helper/RandomHelper.cs.meta
  • Runtime/Helper/Text.meta
  • Runtime/Helper/Text/GameFrameworkText.ITextHelper.cs
  • Runtime/Helper/Text/GameFrameworkText.ITextHelper.cs.meta
  • Runtime/Helper/Text/GameFrameworkText.cs
  • Runtime/Helper/Text/GameFrameworkText.cs.meta
  • Runtime/ObjectPool/ObjectBase.cs
  • Runtime/ObjectPool/ObjectPoolManager.Object.cs
  • Runtime/ObjectPool/ObjectPoolManager.ObjectPool.cs
  • Runtime/ObjectPool/ObjectPoolManager.cs
  • Runtime/RuntimeHost/GameFrameXRuntimeHost.cs
  • Runtime/RuntimeHost/GameFrameXRuntimeManagerResolver.cs
  • Runtime/RuntimeHost/GameFrameXRuntimePlanner.cs
  • Runtime/RuntimeHost/GameFrameXRuntimeScanner.cs
  • Runtime/Utility/ApplicationUtility.MiniGame.cs
  • Runtime/Utility/ApplicationUtility.MiniGame.cs.meta
  • Runtime/Utility/ApplicationUtility.cs
  • Runtime/Utility/ApplicationUtility.cs.meta
  • Runtime/Utility/AssemblyUtility.cs
  • Runtime/Utility/AssemblyUtility.cs.meta
  • Runtime/Utility/AssetPathUtility.cs
  • Runtime/Utility/AssetPathUtility.cs.meta
  • Runtime/Utility/ConverterUtility.cs
  • Runtime/Utility/ConverterUtility.cs.meta
  • Runtime/Utility/DirectoryUtility.cs
  • Runtime/Utility/DirectoryUtility.cs.meta
  • Runtime/Utility/DoTweenUtility.cs
  • Runtime/Utility/DoTweenUtility.cs.meta
  • Runtime/Utility/EncryptionUtility.Aes.cs
  • Runtime/Utility/EncryptionUtility.Aes.cs.meta
  • Runtime/Utility/EncryptionUtility.Dsa.cs
  • Runtime/Utility/EncryptionUtility.Dsa.cs.meta
  • Runtime/Utility/EncryptionUtility.Rsa.cs
  • Runtime/Utility/EncryptionUtility.Rsa.cs.meta
  • Runtime/Utility/EncryptionUtility.cs
  • Runtime/Utility/EncryptionUtility.cs.meta
  • Runtime/Utility/FileUtility.cs
  • Runtime/Utility/FileUtility.cs.meta
  • Runtime/Utility/GameObjectUtility.cs
  • Runtime/Utility/GameObjectUtility.cs.meta
  • Runtime/Utility/HashUtility.HmacSha256.cs
  • Runtime/Utility/HashUtility.HmacSha256.cs.meta
  • Runtime/Utility/HashUtility.Md5.cs
  • Runtime/Utility/HashUtility.Md5.cs.meta
  • Runtime/Utility/HashUtility.MurmurHash3.cs
  • Runtime/Utility/HashUtility.MurmurHash3.cs.meta
  • Runtime/Utility/HashUtility.Sha1.cs
  • Runtime/Utility/HashUtility.Sha1.cs.meta
  • Runtime/Utility/HashUtility.XxHash.cs
  • Runtime/Utility/HashUtility.XxHash.cs.meta
  • Runtime/Utility/IdGeneratorUtility.cs
  • Runtime/Utility/IdGeneratorUtility.cs.meta
  • Runtime/Utility/Log.cs
  • Runtime/Utility/MarshalUtility.cs
  • Runtime/Utility/MarshalUtility.cs.meta
  • Runtime/Utility/MathUtility.cs
  • Runtime/Utility/MathUtility.cs.meta
  • Runtime/Utility/NetworkUtility.cs
  • Runtime/Utility/NetworkUtility.cs.meta
  • Runtime/Utility/ObjectUtility.cs
  • Runtime/Utility/ObjectUtility.cs.meta
  • Runtime/Utility/PathUtility.cs
  • Runtime/Utility/PathUtility.cs.meta
  • Runtime/Utility/PositionUtility.cs
  • Runtime/Utility/PositionUtility.cs.meta
  • Runtime/Utility/RandomUtility.cs
  • Runtime/Utility/RandomUtility.cs.meta
  • Runtime/Utility/Utility.Assembly.cs
  • Runtime/Utility/Utility.Asset.Path.cs
  • Runtime/Utility/Utility.Compression.ICompressionHelper.cs
  • Runtime/Utility/Utility.Compression.ICompressionHelper.cs.meta
  • Runtime/Utility/Utility.Compression.cs
  • Runtime/Utility/Utility.Compression.cs.meta
  • Runtime/Utility/Utility.Const.FileNameSuffix.cs
  • Runtime/Utility/Utility.Converter.cs
  • Runtime/Utility/Utility.Encryption.Aes.cs
  • Runtime/Utility/Utility.Encryption.Dsa.cs
  • Runtime/Utility/Utility.Encryption.Rsa.cs
  • Runtime/Utility/Utility.Encryption.cs
  • Runtime/Utility/Utility.File.cs
  • Runtime/Utility/Utility.Hash.HMACSha256.cs
  • Runtime/Utility/Utility.Hash.Md5.cs
  • Runtime/Utility/Utility.Hash.MurmurHash3.cs
  • Runtime/Utility/Utility.Hash.Sha1.cs
  • Runtime/Utility/Utility.Hash.XxHash.cs
  • Runtime/Utility/Utility.IdGenerator.cs
  • Runtime/Utility/Utility.Json.IJsonHelper.cs.meta
  • Runtime/Utility/Utility.Json.cs
  • Runtime/Utility/Utility.Json.cs.meta
  • Runtime/Utility/Utility.Marshal.cs
  • Runtime/Utility/Utility.Net.cs
  • Runtime/Utility/Utility.Object.cs
  • Runtime/Utility/Utility.Path.cs
  • Runtime/Utility/Utility.RandomUtility.cs
  • Runtime/Utility/Utility.Text.ITextHelper.cs
  • Runtime/Utility/Utility.Text.ITextHelper.cs.meta
  • Runtime/Utility/Utility.Text.cs.meta
  • Runtime/Utility/Utility.Verifier.Crc32.cs
  • Runtime/Utility/Utility.Verifier.Crc64.cs
  • Runtime/Utility/Utility.Verifier.cs
  • Runtime/Utility/Utility.cs.meta
  • Runtime/Utility/VerifierUtility.Crc32.cs
  • Runtime/Utility/VerifierUtility.Crc32.cs.meta
  • Runtime/Utility/VerifierUtility.Crc64.cs
  • Runtime/Utility/VerifierUtility.Crc64.cs.meta
  • Runtime/Utility/VerifierUtility.cs
  • Runtime/Utility/VerifierUtility.cs.meta
  • Runtime/Utility/ZipUtility.cs
  • Runtime/Utility/ZipUtility.cs.meta
  • Tests/AesEncryptionTests.cs
  • Tests/FileUtilityTests.cs
  • Tests/FileUtilityTests.cs.meta
  • Tests/GameFrameX.Tests.asmdef
  • Tests/GameObjectExtensionTests.cs
  • Tests/GameObjectExtensionTests.cs.meta
  • Tests/MathUtilityTests.cs
  • Tests/MathUtilityTests.cs.meta
  • Tests/ObjectHelperTests.cs
  • Tests/ObjectHelperTests.cs.meta
  • Tests/RandomHelperTests.cs
  • Tests/RandomHelperTests.cs.meta
  • Tests/ShellUtilityTests.cs
  • Tests/ShellUtilityTests.cs.meta
  • Tests/StringExtensionsConvertTests.cs
  • Tests/StringExtensionsConvertTests.cs.meta
  • Tests/UtilityConverterTests.cs
  • Tests/UtilityDirectoryTests.cs
  • Tests/UtilityDirectoryTests.cs.meta
  • Tests/UtilityEncryptionAesTests.cs
  • Tests/UtilityEncryptionRsaTests.cs
  • Tests/UtilityHashHmacSha256Tests.cs
  • Tests/UtilityHashHmacSha256Tests.cs.meta
  • Tests/UtilityHashMd5Tests.cs
  • Tests/UtilityHashMurmurHash3Tests.cs
  • Tests/UtilityHashSha1Tests.cs
  • Tests/UtilityHashXxHashTests.cs
  • Tests/UtilityIdGeneratorTests.cs
  • Tests/UtilityMarshalTests.cs
  • Tests/UtilityObjectTests.cs
  • Tests/UtilityPathTests.cs
  • Tests/UtilityRandomUtilityTests.cs
  • Tests/UtilityTextTests.cs
  • Tests/UtilityVerifierCrc32Tests.cs
  • Tests/UtilityVerifierCrc64Tests.cs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@AlianBlank

Copy link
Copy Markdown
Collaborator Author

方向调整,此 PR 撤回。整合工作稍后以新方案重新提出。

@AlianBlank AlianBlank closed this Sep 13, 2026
@AlianBlank
AlianBlank deleted the refactor/utility-helper-merge branch September 13, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant