| [修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格
Co-authored-by: libohao6<libohao3@huawei.com>
# message auto-generated for no-merge-commit merge:
!5045 merge fix_mmrs_bias_issue into master
[修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格
Created-by: libohao6
Commit-by: libohao6
Merged-by: cann-robot
Description: ## 描述
[修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格
## 关联的Issue
[Bug-Report|缺陷反馈]: MRS算子日志双空格问题 #2291
## 测试
不涉及逻辑改动。
## 文档更新
不涉及。
## 类型标签
<!-- [x] 表示选中 -->
- [x] 🐛 Bug 修复
- [ ] ✨ 新特性
- [ ] ⚡ 性能优化
- [ ] ♻️ 重构
- [ ] 🧪 测试
- [ ] 📦 构建/CI
- [ ] 🔧 配置变更
- [ ] 📝 文档更新
- [ ] ⬆️ 依赖升级
- [ ] 🔒 安全修复
- [ ] 🧹 代码清理
- [ ] ❓ 其他,请描述:
# 代码检视报告
**项目名称**:MRS算子日志格式修复检视报告
**检视模块**:
- mc2/common/utils/mc2_log.cpp
- mc2/matmul_reduce_scatter/op_host/op_tiling/matmul_reduce_scatter_tiling.cpp
- mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch22/matmul_reduce_scatter_v2_aiv_mode_tiling.cpp
- mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/matmul_reduce_scatter_v2_tiling.cpp
- mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/quant_bmm_reduce_scatter_tiling.cpp
- mc2/matmul_reduce_scatter_v2/op_host/op_tiling/matmul_reduce_scatter_tiling_base.cpp
**检视人**:Sisyphus
**检视日期**:2026-05-09
## 🔍 检视概览
| 统计项 | 数值 |
| ---- | ---- |
| 检视文件数 | 6 个 |
| 变更行数 | 314行删除 + 315行新增 |
| 发现问题总数 | 0 个 |
| 严重级(CRITICAL)问题 | 0 个 |
| 中等级(MEDIUM)问题 | 0 个 |
| 轻微级(LOW)问题 | 1 个(预存问题,非本次修改引入) |
| 误报数量 | 0 个 |
**核心结论**:本次修改为纯格式修复,移除OP_LOGD格式字符串中的多余前导空格,消除日志输出中的双空格问题。修改范围明确,不涉及任何逻辑变更,不引入新的安全风险。**通过检视,无阻塞问题。**
## ✅ 合规确认
### 1. 修改类型分析
| 分类 | 说明 |
| ---- | ---- |
| 修改类型 | 纯格式修复(日志格式字符串空格移除) |
| 修改模式 | OP_LOGD(opName, " xxx") → OP_LOGD(opName, "xxx") |
| 影响范围 | 仅影响日志输出格式,不影响任何计算逻辑 |
| 风险等级 | 低(仅日志可见性变更) |
### 2. 各文件变更统计
| 文件 | 变更行数 | 说明 |
| ---- | -------- | ---- |
| mc2/common/utils/mc2_log.cpp | 169行 | 公共Tiling日志打印函数 |
| matmul_reduce_scatter_tiling.cpp(V1) | 67行 | V1 MRS tiling日志 |
| matmul_reduce_scatter_v2_aiv_mode_tiling.cpp | 23行 | V2 AIV模式tiling日志 |
| matmul_reduce_scatter_v2_tiling.cpp(arch35) | 9行 | V2 arch35 tiling日志 |
| quant_bmm_reduce_scatter_tiling.cpp | 33行 | 量化BMM MRS tiling日志 |
| matmul_reduce_scatter_tiling_base.cpp(V2) | 2行 | V2 MRS tiling基类日志 |
### 3. 格式字符串安全性检查
对所有OP_LOGD调用进行逐一核对:
| 检查项 | 结果 | 说明 |
| ------ | ---- | ---- |
| 格式说明符与参数类型匹配 | ✅ 通过 | %d→int、%u→unsigned、%lu→unsigned long、%s→字符串,均正确匹配 |
| 格式字符串完整性 | ✅ 通过 | 移除的仅为前导空格字符,未破坏任何格式说明符 |
| 参数数量与格式说明符一致 | ✅ 通过 | 未修改任何参数传递,仅修改格式字符串前缀 |
| 新增格式化漏洞 | ✅ 无风险 | 无用户输入拼接到格式字符串,均为固定的tiling字段名 |
### 4. C++ 通用编码规范合规性(条款对照)
| 规范编号 | 规范名称 | 适用性 | 合规性 |
| -------- | -------- | ------ | ------ |
| 1.1 | 外部数据合法性检查 | 不涉及 | N/A(无外部数据输入变更) |
| 4.2 | 禁止使用魔鬼数字/字符串 | ✅ 合规 | 修改未引入魔鬼数字/字符串 |
| 11.1 | 字符串存储确保有'\\0'结束符 | ✅ 合规 | 格式字符串为编译期常量,自动以'\\0'结尾 |
| 1.3 | 删除无效冗余代码 | ✅ 合规 | 移除多余空格属于代码清理 |
### 5. 日志输出影响分析
**修改前日志示例**:
```
[opName] tiling.usedCoreNum 32
[opName] tiling.M 1024
```
(注意opName]后的双空格)
**修改后日志示例**:
```
[opName] tiling.usedCoreNum 32
[opName] tiling.M 1024
```
(正常单空格分隔)
**OP_LOGD宏展开分析**:OP_LOGD实现中,opName与格式字符串之间已有分隔符(通常为空格或]),格式字符串内的前导空格导致日志输出出现双空格[opName] message,移除后为标准单空格[opName] message。
## ⚠️ 预存问题(非本次修改引入)
### 预存问题ID:PREEXIST-001 | 严重级别:LOW(代码风格)
**代码路径**:matmul_reduce_scatter_tiling.cpp:152(修改后行号)
**问题描述**:该行使用TAB缩进而其他行使用空格缩进,存在缩进不一致。
**代码片段**:
```cpp
OP_LOGD("MatmulReduceScatter", "rcsTiling.storageGather %d", rcsTiling.storageGather);
```
**说明**:此问题为原代码预存问题,本次修改仅移除了前导空格,未改变缩进字符。不影响功能,仅影响代码风格一致性。建议在后续专项代码风格修复中统一处理。
## 📊 检视结论
| 结论 | 说明 |
| ---- | ---- |
| 安全性 | **通过** - 无安全风险引入 |
| 功能正确性 | **通过** - 仅修改日志格式字符串,不影响计算逻辑 |
| 格式字符串安全 | **通过** - 所有格式说明符与参数类型正确匹配 |
| 编码规范合规 | **通过** - 符合C++通用编码规范要求 |
| 预存问题 | 1个LOW级代码风格问题(缩进不一致),非本次修改引入 |
**检视结果:✅ 通过,无阻塞问题。**
## 报告生成时间
2026-05-09 09:44:00
## 报告状态
已完成检视,通过
See merge request: cann/ops-transformer!5045 | 24 天前 |