已合并
【质量加固】修复10个代码规范问题:枚举类改造 #1730
【质量加固】修复10个代码规范问题:枚举类改造 #1730
已合并
西山枫叶创建于 8月13日
西山枫叶
西山枫叶
8月13日

【质量加固】修复10个代码规范问题:枚举类改造

修改统计

项目
问题总数 10 个 ✅
修改文件 8 个(全部位于 autofuse 模块)
代码变更 +10 行 / -10 行
适用规则 规则7:枚举类优先

问题与文件对照表

规则7:枚举类优先(10个问题,全部为 enumenum class

# 文件路径 行号 枚举名
1 autofuse/inc/graph_metadef/common/ge_common/debug/ge_log.h :41 TraceStatus
2 autofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.h :31 SkipStatus
3 autofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.h :33 ShapeTypeRule
4 autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo.h :25 TensorUptType
5 autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/op_slice_info.h :19 OpReduceType
6 autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/op_slice_info.h :20 OpL1FusionType
7 autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo_utils.h :26 Direction
8 autofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_base.h :23 BufferFusionPassType
9 autofuse/att/base/base_types.h :41 SolverType
10 autofuse/graph_metadef/graph/expression/expression_impl.h :33 OperationType

详细代码修改

问题1:ge_log.h:41 — TraceStatus

- enum TraceStatus { TRACE_INIT = 0, TRACE_RUNNING, TRACE_WAITING, TRACE_STOP };
+ enum class TraceStatus { TRACE_INIT = 0, TRACE_RUNNING, TRACE_WAITING, TRACE_STOP };

问题2:buffer_fusion_pattern.h:31 — SkipStatus

- enum SkipStatus { DISABLED = 0, AVAILABLE = 1, SKIPPED = 2 };
+ enum class SkipStatus { DISABLED = 0, AVAILABLE = 1, SKIPPED = 2 };

问题3:buffer_fusion_pattern.h:33 — ShapeTypeRule

- enum ShapeTypeRule { IGNORE_SHAPE_TYPE = 0, ONLY_SUPPORT_STATIC, ONLY_SUPPORT_DYNAMIC };
+ enum class ShapeTypeRule { IGNORE_SHAPE_TYPE = 0, ONLY_SUPPORT_STATIC, ONLY_SUPPORT_DYNAMIC };

问题4:fusion_turbo.h:25 — TensorUptType

- enum TensorUptType {
+ enum class TensorUptType {
    UPDATE_NONE = 0, UPDATE_THIS = 1, UPDATE_PEER,
  };

问题5:op_slice_info.h:19 — OpReduceType

- enum OpReduceType { REDUCE_MEAN = 0, REDUCE_ADD, REDUCE_MAX, REDUCE_MIN };
+ enum class OpReduceType { REDUCE_MEAN = 0, REDUCE_ADD, REDUCE_MAX, REDUCE_MIN };

问题6:op_slice_info.h:20 — OpL1FusionType

- enum OpL1FusionType { L1FUSION_DISABLE = 0, L1FUSION_BASIC, L1FUSION_INPUT_CTR };
+ enum class OpL1FusionType { L1FUSION_DISABLE = 0, L1FUSION_BASIC, L1FUSION_INPUT_CTR };

问题7:fusion_turbo_utils.h:26 — Direction

- enum Direction {
+ enum class Direction {
    CURRENT = 0, PEER = 1, PEER_SINGLE = 2
  };

问题8:buffer_fusion_pass_base.h:23 — BufferFusionPassType

- enum BufferFusionPassType {
+ enum class BufferFusionPassType {
    BUILT_IN_AI_CORE_BUFFER_FUSION_PASS,
    BUILT_IN_VECTOR_CORE_BUFFER_FUSION_PASS,
    CUSTOM_AI_CORE_BUFFER_FUSION_PASS,
    CUSTOM_VECTOR_CORE_BUFFER_FUSION_PASS,
    BUFFER_FUSION_PASS_TYPE_RESERVED
  };

问题9:att/base/base_types.h:41 — SolverType

- enum SolverType : uint32_t { SEARCH_TILE, ERROR };
+ enum class SolverType : uint32_t { SEARCH_TILE, ERROR };

说明:所有调用点(如 solver_pass_manager.cppsolver.cpp)均已使用 SolverType::SEARCH_TILE / SolverType::ERROR 前缀,改造后无需改动调用点。

问题10:graph_metadef/graph/expression/expression_impl.h:33 — OperationType

- enum OperationType : size_t {
+ enum class OperationType : size_t {
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 西山枫叶 的贡献)
西山枫叶西山枫叶
8月13日 添加了label:enhancement
西山枫叶西山枫叶
8月13日 创建了 pull request,commit 5eb45baf
atomgit-bot
atomgit-bot
8月13日 评论:

变更摘要

该 PR 是一次代码质量加固,主要围绕两类代码规范问题进行整改:一是将 8 个普通 enum 改造为 enum class,增强枚举的类型安全与作用域隔离;二是将 2 个使用默认捕获 [&] 的 Lambda 改为显式捕获所需变量,避免隐式捕获带来的潜在引用风险。改动集中在 autofuse/inc/graph_metadef 下的多个头文件以及 super_kernel/src/aot 下的两个源文件,均为小范围、语义等价的修改。

主要改动

  • 枚举类改造(8 处): 将 ge_log.hTraceStatusbuffer_fusion_pattern.hSkipStatusShapeTypeRulefusion_turbo.hTensorUptTypeop_slice_info.hOpReduceTypeOpL1FusionTypefusion_turbo_utils.hDirectionbuffer_fusion_pass_base.hBufferFusionPassTypeenum 改为 enum class,枚举项取值保持不变。
  • matches Lambda 捕获优化: sk_options_manager.cpp 中的 matches Lambda 由默认捕获 [&] 改为显式捕获 [&opName, &trimmedPattern],限定其仅访问实际使用的两个变量。
  • flushPendingWaitNodes Lambda 捕获优化: sk_optimizer.cpp 中的 flushPendingWaitNodes Lambda 由默认捕获 [&] 改为显式捕获 [&pendingWaitNodes, &reorderedTaskNodes, &moveCount],避免捕获无关外部变量。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月13日 评论:

代码审查

审查总结

已逐一审查全部 8 个变更文件,结论如下:

文件 结论
autofuse/inc/graph_metadef/common/ge_common/debug/ge_log.h 已审查,无内部问题(TraceStatus 枚举类化后仓库内无未限定使用,但属于公共头文件,纳入下游 API 兼容性风险)
autofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_base.h 已审查,文件内无未限定使用;已报 P2 下游 API 兼容性风险
autofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.h 已审查,发现 P0:第 85 行未限定 ONLY_SUPPORT_STATIC 编译失败
autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo.h 已审查,发现 P0:第 164/167 行未限定 UPDATE_THIS 编译失败
autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo_utils.h 已审查,发现 P0:第 39 行未限定 CURRENT 编译失败
autofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/op_slice_info.h 已审查,文件内无未限定使用;纳入下游 API 兼容性风险
super_kernel/src/aot/sk_optimizer.cpp 已审查,Lambda 显式捕获列表完整(pendingWaitNodes/reorderedTaskNodes/moveCount),无问题
super_kernel/src/aot/sk_options_manager.cpp 已审查,Lambda 显式捕获列表完整(opName/trimmedPattern),无问题

发现数量(按优先级):P0 × 3,P2 × 1。

总体风险判断:高风险。本次“枚举类改造”为机械式替换,未同步更新同文件的未限定枚举值使用,导致 3 处公共头文件直接编译失败(P0);同时公共 inc/ 头文件的枚举类化会破坏下游消费者(如 REGISTER_BUFFER_FUSION_PASS 等公共接口)的源/ABI 兼容性,需回退或全面同步下游改造。两处 Lambda 捕获优化本身正确、无风险。

类型 数量
🔴 阻塞 3
🟡 建议 0

⛔ 需要修改

likedislike
不准确?
CANN-robotCANN-robot成员
8月13日 添加了label:cann-cla/no
此处折叠了111条消息 查看更多
xuyafei成员
8月18日 评论:

/check-pr

likedislike
CANN-robot
CANN-robot成员
8月18日 评论:

The following label is not ready.

approved: Please wait for committers to review the code.

likedislike
张德鹏成员
8月18日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
8月18日 添加了label:approved
CANN-robotCANN-robot成员
8月18日 合入了pull request