已关闭
[Requirement|需求建议]: 建议为 ops-nn 增加 UT 单测文件命名规范检查并纳入 CI 门禁 #3461
gcw_z9IukGY1创建于 6月21日关闭于 7月4日
oscillated
6月22日 评论:
6月22日 评论:
您好,感谢反馈,问题已收到,当前 @zhengyuchuan2024 正在跟踪处理。


6月26日 将 huang-qiang 设为负责人
7月4日 关闭了 issue
7月4日 添加了label:resolved
您好,感谢反馈,问题已收到,当前 @zhengyuchuan2024 正在跟踪处理。


Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
optim/apply_adam_w_v2/tests/ut/op_host/test_apple_adam_w_v2_arch35_tiling.cpp
test_apply_adam_w_v2_arch35_tiling.cpp
其中 apply_ftrl 的文件头注释为 \file test_apply_ftrl_tiling.cpp,与实际文件名不一致;classify_rule.yaml 中对应路径也缺少 arch35/ 子目录。
项目对 example 样例 已有 scripts/ci/check_example.sh(检查 test_aclnn_* 前缀),但对 op_host UT 单测 尚无类似命名检查,导致拼写错误可长期存在且难以在 PR 阶段被发现。
需求目标:新增 UT 命名规范检查脚本,并接入 pre-commit 或 CI,在合入前自动拦截不符合规范的测试文件名。
Origin(信息来源)
触发场景:按 QUICKSTART 和 贡献指南 学习算子开发与 UT 结构时,通过 find optim -name 'test_apple_*' 发现上述命名问题
关联仓库:https://gitcode.com/cann/ops-nn(master 分支)
Benefit / Necessity (价值/作用)
降低维护成本:统一 test_<算子名>_* 命名,便于搜索、跳转和 code review
减少配置漂移:避免 classify_rule.yaml 等配置文件与真实路径不一致
提升新人体验:高校/社区新手按文档学习 UT 目录结构时,命名一致、可预期
与现有 CI 互补:example 已有检查,UT 补齐后可形成更完整的交付件规范体系
低成本高收益:脚本实现简单,对现有编译/测试流程无侵入
Design(设计方案)
建议新增 scripts/ci/check_ut_naming.sh,核心逻辑如下:
#!/bin/bash
扫描 tests/ut 下所有 test_*.cpp,校验文件名与父目录算子名一致
errors=0
while IFS= read -r -d '' f; do
op_dir=(echo"f" | sed -n 's|./([^/])/tests/ut/.*|\1|p')
base=(basename"f" .cpp)
规则1: 文件名应以 test_ 开头
[[ "$base" =~ ^test_ ]] || { echo "ERROR: $f 不符合 test_ 前缀"; ((errors++)); continue; }
规则2: 文件名应包含算子目录名(下划线形式)
op_snake=(echo"op_dir" | tr '[:upper:]' '[:lower:]')
[[ "base"==∗"{op_snake}"* ]] || { echo "WARN: $f 与算子目录 $op_dir 命名可能不一致"; ((errors++)); }
规则3: 检测常见拼写错误(如 apple vs apply)
[[ "base" == *"apple"* && "op_snake" == "apply" ]] && {
echo "ERROR: $f 疑似 apply→apple 拼写错误"; ((errors++));
}
done < <(find . -path '/tests/ut/' -name 'test_.cpp' -print0)
exit $errors
2. 接入方式(二选一或组合)
接入点 说明
pre-commit
在 .pre-commit-config.yaml 增加 local hook,提交前本地拦截
CI 门禁
在 scripts/ci/local_build.sh 或 PR 流水线中调用,评论 compile 时一并执行
3. 首期修复范围
建议 SIG 在脚本上线前,先批量修正已知的 3 处 test_apple_ 文件,并同步更新 classify_rule.yaml。
在 CONTRIBUTING.md 或 docs/zh/develop/ 中增加一小节 「UT 文件命名规范」,明确:
前缀:test_
后缀语义:_tiling、_infershape、_arch35_tiling 等
文件名应与 \file 注释、算子目录名保持一致