fix: #13 review 修复与边界测试补充(裁剪保根/命名规范/程序集归属/43 个测试) - #14
Conversation
原 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 程序集
|
Important Review skippedToo 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 configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (220)
You can disable this status message by setting the 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. Comment |
变更
基于 #13(dotlive 的
refactor: 调整Utility和Helper的组织方式,headd89d978)的 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→Md5、XXHash→XxHash、HMACSha256→HmacSha256(文件名与 .meta 同步改名保留 GUID;注释中算法名保持官方写法)chore(hash)HashUtility.csfix(editor)ProjectPathTitlebarModifier:类名对齐文件名、补GameFrameX.Editor命名空间、反射类型缺失防御(First→FirstOrDefault)refactor(shell)ShellUtility从 Runtime 迁移到 Editor 程序集(任意命令执行 API 不应进游戏构建)refactor(string)Print/WithColor/WithSize调试日志 API;DirectoryUtility调用点改Log.Error(e.ToString())test完整 review 与勘误记录见 #13 的 review 评论。
验证
不依赖编译通过作为唯一标准,使用独立最小测试工程(Unity 2022.3.62f2,
file:引用本包,隔离姊妹包编译失败干扰)执行 EditMode 全量单元测试:GameFrameworkComponentRuntimeManagerTests.Awake_AutoResolvedManager_WritesComponentTypeForInspector— main 上已失败(主仓库已有未暂存修复:手动注册 Descriptor)TimerHelperCoreTests.UnixTimeMilliseconds/Seconds_IncludesTimeOffset—SyncServerTimeSeconds偏移未生效,本分支未触碰 TimerHelperTimerHelperDifferenceTests.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 语义,测试中已注明)ShellUtility:AbortRequested短路不启动进程 / 未知命令错误捕获不抛异常 / 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 版本并附迁移说明。关联