已合并
【质量加固】修复10个代码规范问题:枚举类改造 #1730
西山枫叶创建于 8月13日
【质量加固】修复10个代码规范问题:枚举类改造 #1730
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 西山枫叶 的贡献)8月13日 添加了label:enhancement
atomgit-bot
8月13日 评论:
8月13日 评论:
变更摘要
该 PR 是一次代码质量加固,主要围绕两类代码规范问题进行整改:一是将 8 个普通 enum 改造为 enum class,增强枚举的类型安全与作用域隔离;二是将 2 个使用默认捕获 [&] 的 Lambda 改为显式捕获所需变量,避免隐式捕获带来的潜在引用风险。改动集中在 autofuse/inc/graph_metadef 下的多个头文件以及 super_kernel/src/aot 下的两个源文件,均为小范围、语义等价的修改。
主要改动
- 枚举类改造(8 处): 将
ge_log.h的TraceStatus、buffer_fusion_pattern.h的SkipStatus与ShapeTypeRule、fusion_turbo.h的TensorUptType、op_slice_info.h的OpReduceType与OpL1FusionType、fusion_turbo_utils.h的Direction、buffer_fusion_pass_base.h的BufferFusionPassType由enum改为enum class,枚举项取值保持不变。 matchesLambda 捕获优化:sk_options_manager.cpp中的matchesLambda 由默认捕获[&]改为显式捕获[&opName, &trimmedPattern],限定其仅访问实际使用的两个变量。flushPendingWaitNodesLambda 捕获优化:sk_optimizer.cpp中的flushPendingWaitNodesLambda 由默认捕获[&]改为显式捕获[&pendingWaitNodes, &reorderedTaskNodes, &moveCount],避免捕获无关外部变量。


不准确?
atomgit-bot
8月13日 评论:
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 |
⛔ 需要修改


不准确?
8月13日 添加了label:cann-cla/no
此处折叠了111条消息 查看更多
CANN-robot
8月18日 评论:
8月18日 评论:
The following label is not ready.
approved: Please wait for committers to review the code.


8月18日 添加了label:approved
8月18日 合入了pull request
【质量加固】修复10个代码规范问题:枚举类改造
修改统计
autofuse模块)问题与文件对照表
规则7:枚举类优先(10个问题,全部为
enum→enum class)autofuse/inc/graph_metadef/common/ge_common/debug/ge_log.hautofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.hautofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.hautofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo.hautofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/op_slice_info.hautofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/op_slice_info.hautofuse/inc/graph_metadef/register/graph_optimizer/fusion_common/fusion_turbo_utils.hautofuse/inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_base.hautofuse/att/base/base_types.hautofuse/graph_metadef/graph/expression/expression_impl.h详细代码修改
问题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 };问题10:graph_metadef/graph/expression/expression_impl.h:33 — OperationType
- enum OperationType : size_t { + enum class OperationType : size_t {