已关闭
[Requirement|需求建议]: 建议为 ops-nn 增加 UT 单测文件命名规范检查并纳入 CI 门禁 #3461
gcw_z9IukGY1创建于  6月21日关闭于  7月4日
gcw_z9IukGY1
6月21日 创建

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(设计方案)

  1. 新增检查脚本
    建议新增 scripts/ci/check_ut_naming.sh,核心逻辑如下:

#!/bin/bash

扫描 tests/ut 下所有 test_*.cpp,校验文件名与父目录算子名一致

errors=0
while IFS= read -r -d '' f; do
op_dir=(echo"(echo "f" | sed -n 's|./([^/])/tests/ut/.*|\1|p')
base=(basename"(basename "f" .cpp)

规则1: 文件名应以 test_ 开头

[[ "$base" =~ ^test_ ]] || { echo "ERROR: $f 不符合 test_ 前缀"; ((errors++)); continue; }

规则2: 文件名应包含算子目录名(下划线形式)

op_snake=(echo"(echo "op_dir" | tr '[:upper:]' '[:lower:]')
[[ "base"==∗"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。

  1. 文档补充
    在 CONTRIBUTING.md 或 docs/zh/develop/ 中增加一小节 「UT 文件命名规范」,明确:

前缀:test_
后缀语义:_tiling、_infershape、_arch35_tiling 等
文件名应与 \file 注释、算子目录名保持一致

likedislike
oscillated
oscillated成员
6月22日 评论:

您好,感谢反馈,问题已收到,当前 @zhengyuchuan2024 正在跟踪处理。

likedislike
oscillatedoscillated成员
6月26日 将 huang-qiang 设为负责人
CANN-robotCANN-robot成员
7月4日 关闭了 issue
CANN-robotCANN-robot成员
7月4日 添加了label:resolved