已合并
fix: 修复代码审查发现的健壮性与文档问题(#96-#105) #113
fix: 修复代码审查发现的健壮性与文档问题(#96-#105) #113
已合并
syy_3597创建于 20 天前
syy_3597
20 天前

修改说明

本 PR 修复代码审查发现的 10 个低风险问题,对应 issue 如下:

Issue 修复内容
#96 修正日志拼写(wthich/initilized/nalloc/ouTensor 等)
#97 删除 BlasCalPlan::SetMaskTensor 无效赋值死语句
#98 补充文档:返回码差异/日志运维参数/环境变量长度上限
#99 example 失败路径 exit(-1) 改为 return -1
#100 .gitignore 排除 lcov/.ruff_cache/oat_reports 产物目录
#101 AsdTensorInvalidShapeCheck 增加 0 维张量空指针防护
#102 matchC2C_/matchC2R_ 增加维度数前置校验防越界读
#103 TheTensor 删除拷贝构造/拷贝赋值,消除 double-free 隐患
#104 GetTensorNum 改为 std::optional,消除错误码语义混淆
#105 install.sh uninstall() 增加 version.info 容错

Closes #96 #97 #98 #99 #100 #101 #102 #103 #104 #105

验证

  • 编译:cmake + make 100% 通过
  • UT:124/125 通过(唯一失败 TestAsdMulComplex64Case0 为存量问题,修改前基线同样失败,该用例比对的是 complex32 输出文件,属测试用例自身缺陷)
  • Example:cgemv 示例在 910B3 上运行正确(输出 Y=(-12,18) 与预期一致)
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 syy_3597 的贡献)
Ssyy_3597
20 天前 创建了 pull request,commit 53dd7f63
Ssyy_3597
20 天前 关联了issue:[Bug-Report|缺陷反馈]: 日志文案存在多处拼写错误,影响问题定位与日志检索,[Bug-Report|缺陷反馈]: BlasCalPlan::SetMaskTensor 中存在无效赋值死语句,[Bug-Report|缺陷反馈]: 文档与实现脱节——返回码行为不一致未说明、日志运维参数与环境变量长度上限未文档化,[Bug-Report|缺陷反馈]: 全部 example 示例的 ASD_STATUS_CHECK 宏失败路径 exit(-1) 不清理资源,[Bug-Report|缺陷反馈]: 仓库版本库内混入构建产物与工具缓存目录,[Bug-Report|缺陷反馈]: AsdTensorInvalidShapeCheck 对 0 维张量存在空指针解引用风险,[Bug-Report|缺陷反馈]: matchC2C_ / matchC2R_ 缺少维度数保护,输入维度数小于 plan 时数组负索引越界读,[Bug-Report|缺陷反馈]: TheTensor 未删除拷贝构造/拷贝赋值,隐式浅拷贝存在 double-free 隐患,[Bug-Report|缺陷反馈]: GetTensorNum 用 -1 作错误码,与合法返回值语义混淆,[Bug-Report|缺陷反馈]: install.sh uninstall() 读取 version.info 无容错,文件缺失时中断且报错不友好
atomgit-bot
atomgit-bot
20 天前 评论:

变更摘要

本 PR 修复代码审查发现的 10 个低风险问题(对应 issue #96–#105),整体以健壮性加固为主:将 GetTensorNum 返回值改为 std::optional<int64_t> 以消除错误码语义混淆,为 0 维张量与 FFT 输入维度数不足场景增加空指针/越界读防护,删除 TheTensor 的拷贝构造/拷贝赋值以消除 double-free 隐患,同时清理死语句、修正日志拼写错误、补充文档、统一 example 失败路径返回并增强 install.sh 卸载容错。另包含大量指针/引用声明风格统一与代码格式化改动。

主要改动

  • GetTensorNum 返回值改为 std::optional<int64_t>core/utils/common_check.cpp 及头文件中 GetTensorNum 从返回 -1 表示失败改为返回 std::nullopt,调用方 AsdTensorNumCheckSwapLast2AxesShapeCheck 相应增加 has_value() 校验,消除"元素数为 -1"与错误码的语义混淆。

  • 张量形状与 FFT 匹配的健壮性防护AsdTensorInvalidShapeCheck 增加 storageDims == nullptr || storageDimsNum == 0 的 0 维张量空指针防护并逐维校验;matchC2C_/matchC2R_ 增加维度数前置校验(plan.fftSizes.size() > lastDim + 1 时直接返回 false),防止循环索引为负导致越界读。

  • TheTensor 删除拷贝构造/拷贝赋值core/utils/include/utils/the_tensor.h 中通过 TheTensor(const TheTensor&) = delete;operator= delete 禁用拷贝语义,仅保留移动构造/移动赋值,消除裸指针 data_ 浅拷贝导致的 double-free 隐患。

  • 清理死语句并修正日志BlasCalPlan::SetMaskTensor 删除 maskData = nullptr; 无效赋值死语句;dft_r2c_core.cppfft_core_common_func.cppfft_core_n.cpp 等将日志中 nalloc 拼写修正为 alloccommon_check.cpp/fft_api.cpp 修正 wthichinitilized 等拼写错误。

  • 文档补充、example 与安装脚本调整docs/zh/context/SiP返回码.md 补充返回码差异说明、日志文件运维参数(20MB 滚动上限、50 个保留、1GB 磁盘门限)及环境变量长度上限(12800 字节);全部 example 的失败路径由 exit(-1) 改为 return -1scripts/install.shuninstall()version.info 缺失及版本号解析为空增加容错报错;install_deps.sh 将 dos2unix 安装失败改为可忽略提示。

likedislike
不准确?
CANN-robot
CANN-robot成员
20 天前 评论:
atomgit-bot
atomgit-bot
20 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
此处折叠了45条消息 查看更多
CANN-robotCANN-robot成员
20 天前 添加了label:approved
demoauguste成员
20 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
20 天前 添加了label:lgtm
CANN-robotCANN-robot成员
20 天前 关闭了关联的issue
CANN-robotCANN-robot成员
20 天前 合入了pull request