Pull Request已成功合入, 合并人@CANN-robot
(感谢 yuanbin_22 的贡献)变更摘要
本次 PR 对 examples 和 docs 目录下的示例代码进行清理性修复,主要解决两类问题:CHECK_RET 宏调用末尾的多余分号(;),以及代码行尾的空白字符(trailing whitespace)。此外还修复了部分宏定义末尾缺少分号的问题,共涉及 25 个文件,均为格式层面的修正,不改变任何业务逻辑。
主要改动
-
CHECK_RET宏调用末尾多余分号修复:在test_aclnn_exp.cpp、test_aclnn_floor.cpp、test_aclnn_isclose.cpp、test_aclnn_log10.cpp、test_aclnn_logical_not.cpp、test_aclnn_inplace_round.cpp、test_aclnn_round.cpp、test_aclnn_sin.cpp、test_aclnn_trunc.cpp等文件中,移除了CHECK_RET(...);调用末尾额外的一个分号(原格式如CHECK_RET(ret == ACL_SUCCESS, ...); return ret;);),确保宏展开后语法正确。 -
ADD_OUTPUT宏定义末尾补充分号:在test_geir_assign_add.cpp、test_geir_assign_sub.cpp、test_geir_cast.cpp中,ADD_OUTPUT宏定义的最后一行为assignAdd1.update_output_desc_##outputName(...),原缺少末尾分号,现已补充。 -
行尾空白字符清理:对
test_geir_abs.cpp、test_aclnn_add_n.cpp、test_geir_assign_add.cpp、test_geir_assign_sub.cpp、test_geir_cast.cpp、test_aclnn_inplace_log10.cpp、test_aclnn_log10.cpp、test_geir_log.cpp、test_aclnn_log1p.cpp、test_aclnn_logical_not.cpp、test_aclnn_inplace_round.cpp、test_aclnn_round.cpp等多个文件中行尾残留的空格和制表符进行了删除。 -
文件末尾换行符规范化:修复了
test_aclnn_logical_not.cpp和test_aclnn_add_n.cpp等文件末尾缺少换行符或存在多余空白行的问题。


代码审查
我已经完成了对所有 25 个文件的全面审查。下面是总结。
审查总结
| 优先级 | 数量 | 说明 |
|---|---|---|
| P0 | 1 | 9 个 .cpp 文件中 CHECK_RET 末尾分号被错误移除,导致 do-while(0) 语句缺少终止分号,编译失败 |
| P2 | 1 | 8 个 .md 文档代码示例中 CHECK_RET 末尾分号被错误移除,示例代码不可编译 |
根本原因: CHECK_RET 宏定义为 do { ... } while(0)(宏体末尾无分号),这是标准的 do-while(0) 惯用法,调用方必须在调用后添加分号(即 CHECK_RET(...);)来终止语句。此 diff 错误地将部分 CHECK_RET(...) 调用的末尾分号移除,造成语法错误。
受影响的 17 个文件均在以上两条 finding 的 body 中逐文件列出。其余 8 个文件仅包含行尾空格清理,无任何问题。
整体风险判断: 此变更不应合入。P0 问题将导致 9 个 .cpp 示例文件编译失败;P2 问题将使 8 个文档中的代码示例误导用户。建议恢复所有被移除的 CHECK_RET 末尾分号,仅保留行尾空格清理部分。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 1 |
⛔ 需要修改


描述
修复 examples 及 docs 中 CHECK_RET 宏调用末尾多余分号和行尾空格问题
关联的Issue
https://gitcode.com/cann/ops-nn/issues/4603
测试
文档更新
类型标签