From d258a2e32a63b2b5ef518ae5bfbc35be1473ed4b Mon Sep 17 00:00:00 2001 From: liutao <821580467@qq.com> Date: Tue, 27 Jan 2026 16:25:23 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=A1=86=E6=9E=B6=E3=80=91=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch_resource_checker_debug_journal.md | 48 ++++++++++++++++ ...ch_resource_checker_improvement_summary.md | 57 +++++++++++++++++++ ProjectNLD/Assets/PhxhSDK | 2 +- Tool/build_tools | 2 +- 4 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 ProjectNLD/AI_CODE/batch_resource_checker_debug_journal.md create mode 100644 ProjectNLD/AI_CODE/batch_resource_checker_improvement_summary.md diff --git a/ProjectNLD/AI_CODE/batch_resource_checker_debug_journal.md b/ProjectNLD/AI_CODE/batch_resource_checker_debug_journal.md new file mode 100644 index 00000000000..ff2a71a4576 --- /dev/null +++ b/ProjectNLD/AI_CODE/batch_resource_checker_debug_journal.md @@ -0,0 +1,48 @@ +# Unity资源批量检测工具问题定位对话记录 + +## 过程纪要与关键定位步骤 + +本记录梳理了团队在调试和落地 FileCheckerBatchRunner 批量资源检测工具时的真实排查历程及主要问题定位线路。 + +--- + +## 关键历程回顾 + +### 1. 初步实现与运行、发现无输出/CSV未生成 +- 批次运行无报错但也无输出,CSV文件未生成。 +- 首步日志分析/Debug.Log加强,发现批处理入口函数已调用但没有实际checker执行。 + +### 2. 检查 checker 查找与命名 +- 发现 CheckerName 用的是中文(如“中文文件名检查器”),而命令行传的是英文类型名(ChineseFileNameChecker)。 +- 优化查找,支持用类型名命令行触发checker。 + +### 3. 发现执行成功但导出未生成CSV +- 批处理日志显示调用入口、命中checker都无问题,报告未落盘。 +- 定位到ReportExporter中EditorUtility.SaveFilePanel在batchmode下无效,加入isBatchMode逻辑,确保文件名能直接写盘。 +- 修正filePath/fileName变量混用、保证导出一致。 + +### 4. 修复属性访问、去除反射 +- handling等字段由反射访问改为强类型。 +- 编译错误由语法误用(花括号/变量名)暴露并修复。 + +### 5. checker多Tab及文件后缀精细筛选 +- 学习FileCheckerWindow分组TabType和后缀精细筛逻辑,定位单checker全遍历带来的低效结构。 +- 增强batch runner算法, checker按tab分组,资源只加载/切换一次,所有相关checker依次调用。 + +### 6. 场景类型资源自动还原 +- batchmode下场景类检测也实现自动切回原有场景,防止环境被批处理影响。 + +### 7. 提示/日志增强与链路打通 +- batch脚本自动输出耗时与关键节点辅助提示。 +- 所有实现批/编辑器体验对齐,健壮性和扩展性大幅提升。 + + +--- + +## 总结体会 +- 调试经历中 “日志粒度/状态同步”最能定位批处理盲点。 +- 团队协作下,一切路径/命名/类型都应显式、文档化,减少文化/语言切换二义性。 +- UI/CLI/CI多端一致性设计不只是性能提升,更是可靠性大幅提升。 + +--- +自动生成,供后续类似项目排查与团队分享借鉴。 diff --git a/ProjectNLD/AI_CODE/batch_resource_checker_improvement_summary.md b/ProjectNLD/AI_CODE/batch_resource_checker_improvement_summary.md new file mode 100644 index 00000000000..ed3bb3c48b6 --- /dev/null +++ b/ProjectNLD/AI_CODE/batch_resource_checker_improvement_summary.md @@ -0,0 +1,57 @@ +# Unity资源批量检查工具(FileCheckerBatchRunner)改进与集成实践总结 + +## 背景 +为保障大型Unity项目资产管理质量,需实现稳定的批量资源检查、持续集成检测和性能优化,要求: +- 支持所有/部分checker批量校验 +- 能自动高效导出多checker各自的检查报告 +- 适配自动化、CI流水线和人工批量查错场景 + +## 主要讨论与改造要点 + +1. **Checker唯一标识方式改进** + - 早期命令行仅支持CheckerName(中文或展示名参数,易混淆),经优化后支持checker类型名(如ChineseFileNameChecker),CLI和脚本均能使用类名批量调用。 + +2. **文件后缀二次筛选** + - 兼容UI工具行为,每个checker实际检查前都会再根据自己支持的后缀列表过滤,无需遍历不关心的资产。 + +3. **批量资源/场景高效分组与分类处理** + - 批处理由原本逐checker->逐文件升级为按CheckerTabType分组,实现同类checker对所有相关文件/场景统一批量加载与检测。 + - 如: 同一场景文件只切换一次,多个Scene checker依次运行,极大提升检测大场景/大批量文件时的性能。 + +4. **资源模式与还原机制** + - 批检查Scene类资源时,会保存和还原原始场景,避免检测后环境受污染。 + +5. **报告导出能力优化** + - 导出CSV命名自动带上检查结果条目数(如 中文文件名检查器-[12].csv),一目了然。 + - 批处理自动指定导出目录,无人值守自动落盘。 + +6. **跨平台命令行工具辅助能力** + - 提供参数校验/自动输出辅助提示与详细日志,批次执行耗时统计等。 + +7. **错误处理与兼容性保障** + - 合理处理EditorUtility.SaveFilePanel导致的batchmode下无效情况,保证异常与batch环境下的文件可靠写出。 + - 强类型属性访问替换所有反射调用,提升健壮性和IDE体验。 + +## 批量命令调用示例 + +```sh +run_file_checkers.bat -all -output C:\result_dir +run_file_checkers.bat -checkers "ChineseFileNameChecker,LargeTextureChecker" -output C:\result_dir +``` +- 支持用类型名调用 +- 结果报告自动分文件、带条目数,目录下直观可见 + +## 迁移并集成的主要文件 +- Assets/PhxhSDK/Editor/FileChecker/FileCheckerBatchRunner.cs +- Assets/PhxhSDK/Editor/FileChecker/ReportExporter.cs +- Tool/build_tools/run_file_checkers.bat +- Assets/PhxhSDK/Editor/FileChecker/README.md(详细批命令说明与集成案例) + +## 实践过程体会与经验 +- 统一逻辑、UI和批处理行为至关重要,减少二义性,提高协同沟通(比如checker类型名标准化)。 +- 大批量场景/资源检测场景需主动规避重复IO、场景频繁重载等低效结构。 +- 批处理日志和参数校验对 CI 非常重要,对错误快速定位节省大量人力。 +- 保持README和用法示例同步更新有助于团队长期可维护运维。 + +--- +自动生成,建议在团队内部CodeReview后补充丰富案例、典型CI集成流程等知识。 diff --git a/ProjectNLD/Assets/PhxhSDK b/ProjectNLD/Assets/PhxhSDK index f286fff6a9b..eb341352800 160000 --- a/ProjectNLD/Assets/PhxhSDK +++ b/ProjectNLD/Assets/PhxhSDK @@ -1 +1 @@ -Subproject commit f286fff6a9beab557b9b1cd1db4c50eebb0feb68 +Subproject commit eb341352800e0f84c8536fc896fd0de2eb7b053a diff --git a/Tool/build_tools b/Tool/build_tools index e288039faf6..a46840afd85 160000 --- a/Tool/build_tools +++ b/Tool/build_tools @@ -1 +1 @@ -Subproject commit e288039faf6cb638374796cb40910f551f5f6e73 +Subproject commit a46840afd8585396b02348436521c75e598c80db