Skip to content

fix: #13 review 修复与边界测试补充(裁剪保根/命名规范/程序集归属/43 个测试) - #14

Open
AlianBlank wants to merge 11 commits into
mainfrom
fix/pr13-review-issues
Open

fix: #13 review 修复与边界测试补充(裁剪保根/命名规范/程序集归属/43 个测试)#14
AlianBlank wants to merge 11 commits into
mainfrom
fix/pr13-review-issues

Conversation

@AlianBlank

Copy link
Copy Markdown
Collaborator

变更

基于 #13(dotlive 的 refactor: 调整Utility和Helper的组织方式,head d89d978)的 review 修复与测试补充。共 10 个提交,每个独立修复一个 review 问题:

提交 内容
fix(cropping) UnityEngineCameraExtension / UnityEngineRendererExtension 裁剪保根引用(原 CameraHelper / UnityRendererHelper 的 typeof 保根在重构中被删未补)
style(cropping) 补齐文件末尾缺失的换行符
refactor(game-object) 精简 SetLayer 冗余逻辑(GetComponentsInChildren 结果已含自身;移除无意义等值比较)
refactor(game-object) GameObjectUtility.FindChildGamObjectByName 转调 GameObjectExtension 单一实现,消除双份维护
refactor(hash) 嵌套类命名规范化 MD5→Md5XXHash→XxHashHMACSha256→HmacSha256(文件名与 .meta 同步改名保留 GUID;注释中算法名保持官方写法)
chore(hash) 删除仅有空 partial 壳的 HashUtility.cs
fix(editor) ProjectPathTitlebarModifier:类名对齐文件名、补 GameFrameX.Editor 命名空间、反射类型缺失防御(First→FirstOrDefault
refactor(shell) ShellUtility 从 Runtime 迁移到 Editor 程序集(任意命令执行 API 不应进游戏构建)
refactor(string) 移除 Print / WithColor / WithSize 调试日志 API;DirectoryUtility 调用点改 Log.Error(e.ToString())
test 补充 43 个边界测试(见下)

完整 review 与勘误记录见 #13 的 review 评论。

验证

不依赖编译通过作为唯一标准,使用独立最小测试工程(Unity 2022.3.62f2,file: 引用本包,隔离姊妹包编译失败干扰)执行 EditMode 全量单元测试:

  • 1318 个测试,1315 通过,3 失败均为与本分支无关的既有问题
    • GameFrameworkComponentRuntimeManagerTests.Awake_AutoResolvedManager_WritesComponentTypeForInspector — main 上已失败(主仓库已有未暂存修复:手动注册 Descriptor)
    • TimerHelperCoreTests.UnixTimeMilliseconds/Seconds_IncludesTimeOffsetSyncServerTimeSeconds 偏移未生效,本分支未触碰 TimerHelper
    • TimerHelperDifferenceTests.GetTimeDifferenceFromNow_* 存在 ±0.01s 容差的偶发抖动(三轮中出现 1 次),建议放宽容差

新增 43 个边界测试(GameObjectExtensionTests / FileUtilityTests / StringExtensionsConvertTests / ShellUtilityTests)覆盖:

  • SetLayer:非递归只改自身 / 递归含孙代 / 递归含 inactive 子物体 / 已在目标层幂等
  • FindChildGamObjectByName:深层查找 / 未加载场景名返回 null / GameObjectUtility 与 Extension 转调结果一致性
  • CreateChild / ResetTransform / RemoveChildren(EditMode 下走 DestroyImmediate 分支)
  • GetBytesSize:0 / 1023 / 整数单位边界 / 小数保留与尾零裁剪 / PB 单位上限 / 负数
  • DeleteIfExists:存在与不存在路径
  • ToInt / ToLong / ToFloat / ToDouble / ToEnum:null / 空串 / 非法 / 溢出 / 自定义默认值 / 首尾空白(NumberStyles.Integer 语义,测试中已注明)
  • ShellUtilityAbortRequested 短路不启动进程 / 未知命令错误捕获不抛异常 / echo 输出与 Monitor 回调(Windows Editor 下 echo 用例 Ignore)
  • GameFrameX.Tests.asmdef 增加 GameFrameX.Editor 引用以覆盖 Editor 程序集

已知影响(非本分支引入,来自 #13 本体)

#13 删除 Utility 公开 API 无兼容层,实测 13 个姊妹包(web 69 / setting 54 / fsm 45 等,共 204 处)与工程 Assets 引用旧 API 编译失败;合并前需同步迁移或发布 major 版本并附迁移说明。

关联

dotlive and others added 11 commits August 27, 2026 20:44
原 CameraHelper/UnityRendererHelper 的 typeof 保根引用在重构中被删除,
未补上替代的 UnityEngineCameraExtension/UnityEngineRendererExtension,
开启 managed stripping 的构建会裁掉这两个扩展类。
- GetComponentsInChildren 结果本身包含自身, 移除开头重复的自身赋值
- 移除 layer 赋值前的等值比较(属性赋值开销相同, 比较无收益)
- 保留 CachedTransforms.Clear() 作为跨 Unity 版本的防御性行为
同一逻辑此前在 GameObjectUtility 与 UnityEngineGameObjectExtension
两处维护, 现由 GameObjectUtility 保留静态入口并转调扩展类实现。
MD5/XXHash/HMACSha256 全大写缩写不符合 .NET 命名规范(PascalCase),
且与同族 Sha1/MurmurHash3 风格不一致, 重构前的旧命名即为 Md5/XxHash。
- 嵌套类 MD5→Md5, XXHash→XxHash, HMACSha256→HmacSha256(含私有 XxHashHelper)
- 文件名与 .meta 同步改名(保留 GUID)
- 同步更新 Cropping 保根引用与测试文件/类名
- 注释中的算法名(xxHash 等)保持官方写法不变
各分部文件(HashUtility.Md5/XxHash/Sha1/HmacSha256/MurmurHash3.cs)
均自带 partial class HashUtility 声明, 空壳主文件冗余。
- 类名 ProjectTitleModifier 与文件名不一致, 对齐为 ProjectPathTitlebarModifier
- 补充 GameFrameX.Editor 命名空间(对齐 Editor/Misc 其余文件)
- First→FirstOrDefault 并对内部类型/字段缺失做防御, 避免 Unity 版本
  升级后 InitializeOnLoad 阶段直接抛异常
ShellUtility 提供外部进程执行能力(ExecuteCommand 等), 属于编辑器/
构建期工具, 不应随 Runtime 程序集打进正式游戏包。
- 移动至 Editor/Utility/ 并将命名空间改为 GameFrameX.Editor
- .meta 随文件移动保留原 GUID
富文本日志扩展(Debug.Log + color 标签)属于调试用途, 不应进入框架
Runtime 程序集(框架已有 GameFrameworkLog/Log 日志体系)。
DirectoryUtility 中的调用同步改为 Log.Error 并输出完整异常信息。
ToInt/ToLong/ToFloat/ToDouble/ToEnum 数值转换扩展保留。
新增 43 个 EditMode 单元测试(独立工程全量 1318 个测试验证):
- GameObjectExtensionTests: SetLayer 递归/非递归/inactive 子物体/幂等、
  CreateChild、ResetTransform、RemoveChildren、FindChildGamObjectByName
  深层查找/未加载场景/Utility 与 Extension 转调一致性
- FileUtilityTests: GetBytesSize 0/1023/1024/小数/尾零裁剪/单位上限/
  负数, DeleteIfExists 存在与不存在
- StringExtensionsConvertTests: ToInt/ToLong/ToFloat/ToDouble/ToEnum 的
  null/空串/非法/溢出/自定义默认值/首尾空白(NumberStyles.Integer 语义)
- ShellUtilityTests: AbortRequested 短路/未知命令错误捕获/echo 输出/
  Monitor 回调(Windows 下 echo 用例 Ignore)
- GameFrameX.Tests.asmdef 增加 GameFrameX.Editor 引用以覆盖 Editor 程序集
@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 220 files, which is 120 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: Pro Plus

Run ID: a87b27d1-6ccf-496c-8816-3cc3b8763685

📥 Commits

Reviewing files that changed from the base of the PR and between 2fae759 and c0af2d8.

📒 Files selected for processing (220)
  • 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/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.

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.

2 participants