| [CANNBot]agent提升mc2 ut覆盖率
Co-authored-by: weihao18<weihao16@h-partners.com>
# message auto-generated for no-merge-commit merge:
!4244 merge ut_collection into master
[CANNBot]agent提升mc2 ut覆盖率
Created-by: weihao18
Commit-by: weihao18
Merged-by: cann-robot
Description: ## 描述
agent提升mc2 ut覆盖率
## 关联的Issue
https://gitcode.com/cann/ops-transformer/issues/1923
## 测试
编排构建
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
## 类型标签
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [ ] ✨ 新特性
- [ ] ⚡ 性能优化
- [ ] ♻️ 重构
- [x] 🧪 测试
- [ ] 📦 构建/CI
- [ ] 🔧 配置变更
- [ ] 📝 文档更新
- [ ] ⬆️ 依赖升级
- [ ] 🔒 安全修复
- [ ] 🧹 代码清理
- [ ] ❓ 其他,请描述:
## AI/Agent 生成声明
代码来源:
- [ ] 纯人工手写
- [ ] AI 辅助编写(思路/片段/优化)
- [x] AI完全生成
# 代码检视报告
**项目名称**:ops-transformer UT代码检视报告
**检视人**:Ascend C Code Review Agent
**检视日期**:2026-04-23
## 检视概览
| 统计项 | 数值 |
| ---- | ---- |
| 检视文件总数 | 45 个 |
| 新增代码行数 | 8539 行 |
| 删除代码行数 | 1897 行 |
| 发现问题总数 | 2 个 |
| 红线级(CRITICAL)问题 | 0 个 |
| 中等级(MEDIUM)问题 | 0 个 |
| 轻微级(LOW)问题 | 2 个 |
**核心结论**:本次提交的 UT 代码整体合规性良好,红线问题检查通过。发现 2 处轻微级编码建议问题。
## 检视范围
### 文件分类检视统计
| 文件类型 | 数量 | 红线问题 | 备注 |
|---------|------|---------|------|
| op_api 测试文件 (test_aclnn_*.cpp) | 10 | 0 | 安全编码合规 |
| tiling 测试文件 (test_*_tiling.cpp) | 11 | 0 | 安全编码合规 |
| 其他文件 (CMakeLists.txt, .h, .csv等) | 13 | 0 | 安全编码合规 |
## 问题详情
### 问题ID:ISSUE-001 | 严重级别:LOW(轻微)
**代码路径**:mc2/moe_distribute_combine_setup/tests/ut/op_api/test_aclnn_moe_distribute_combine_setup.cpp:197-208
**问题类型**:值传递参数可能无法达到测试预期
**问题描述**:
tokenMsgSize 和 commCmdInfoOutSize 作为值传递参数调用 aclnnMoeDistributeCombineSetupTeardownCalcOutputSize(),测试期望它们被修改并大于0。如果函数签名需要传引用/指针才能修改参数值,则当前测试逻辑可能存在问题。
**建议**:检查函数签名,确认参数传递方式是否正确。
### 问题ID:ISSUE-002 | 严重级别:LOW(轻微)
**代码路径**:mc2/moe_distribute_combine_setup/tests/ut/op_host/arch35/test_moe_distribute_combine_setup_tiling.cpp
**问题类型**:VLA(变长数组)使用
**问题描述**:
GeneralCasesMultiThreadTest 测试中使用 std::thread threads[threadNum],这是 VLA(变长数组),非标准 C++ 语法。
**建议**:改用 std::vector<std::thread> threads(threadNum),符合标准 C++ 规范。
## 红线问题检查结果
### 红线问题检查清单
| 红线要求 | 检查结果 | 说明 |
|---------|---------|------|
| 1. Host侧代码必须对除法、求余操作做除零保护 | ✅ 通过 | UT 代码不涉及 |
| 2. Host侧代码数组访问,必须进行越界保护 | ✅ 通过 | UT 代码有边界检查 |
| 3. Host侧代码加法、乘法、减法操作,必须进行溢出保护 | ✅ 通过 | UT 代码不涉及 |
| 4. Host侧代码指针操作,必须先赋值后访问,并进行指针保护 | ✅ 通过 | 指针使用前有判空 |
| 5. 变量使用前,必须进行有效初始化 | ✅ 通过 | 类成员和局部变量均已初始化 |
| 6. 申请资源,使用和释放必须匹配 | ✅ 通过 | 无手动内存管理 |
### 红线问题详细说明
**规则 5(变量初始化)检查**:
- 所有 compileInfo 结构体声明时均初始化为空结构体 {} ✅
- workspaceSize、executor 等局部变量使用前均初始化为 0 或 nullptr ✅
- 类成员变量在类声明时已定义并初始化 ✅
**规则 6(资源管理)检查**:
- 无动态内存申请(无 new/malloc) ✅
- 无需要手动释放的资源 ✅
- 使用 RAII 对象(std::vector, std::string, std::thread) ✅
**规则 4(指针保护)检查**:
- executor 指针使用前有条件判断 ✅
- opImpl 指针使用前有 ASSERT_NE(opImpl, nullptr) ✅
- spaceRegistry 指针使用前有 ASSERT_NE(spaceRegistry, nullptr) ✅
## TOPN 问题检查结果
| TOPN 要求 | 检查结果 | 说明 |
|---------|---------|------|
| 1. Host侧代码必须校验函数返回值 | ⚠️ 部分符合 | UT 代码部分位置未完全校验,但属测试逻辑 |
| 2. Host侧代码获取属性需要从context获取 | ✅ 通过 | UT 代码不涉及 |
| 3. Host侧代码在生命周期内使用局部变量指针,避免野指针 | ✅ 通过 | 无返回局部指针的情况 |
| 4. 宏定义中临时变量命名不能和外部变量冲突 | ✅ 通过 | 未发现命名冲突 |
| 5. 涉及gm内存偏移或者大小必须用int64表示 | ✅ 通过 | UT 代码符合 |
## 附录:检视方法说明
本次检视采用假设检验驱动的方法:
1. **代码段识别**:将目标代码划分为独立的代码段(函数、语句块、逻辑单元)
2. **假设建立**:对每个代码段建立假设 H0(安全)和 H1(存在风险)
3. **证据收集**:系统性寻找证据(规范违反、上下文防御缺失等)
4. **证据有效性校验**:排除误报(已在作用域内进行防御等)
5. **决策判断**:当自信值超过 60% 时,判定存在风险
## 报告生成时间
2026-04-23 14:30:00
## 报告状态
已完成检视,红线问题通过,建议关注 2 处非红线问题。
See merge request: cann/ops-transformer!4244 | 1 个月前 |