Pull Request已成功合入, 合并人@CANN-robot
(感谢 syy_3597 的贡献)变更摘要
本 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,调用方AsdTensorNumCheck、SwapLast2AxesShapeCheck相应增加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.cpp、fft_core_common_func.cpp、fft_core_n.cpp等将日志中nalloc拼写修正为alloc,common_check.cpp/fft_api.cpp修正wthich、initilized等拼写错误。 -
文档补充、example 与安装脚本调整:
docs/zh/context/SiP返回码.md补充返回码差异说明、日志文件运维参数(20MB 滚动上限、50 个保留、1GB 磁盘门限)及环境变量长度上限(12800 字节);全部 example 的失败路径由exit(-1)改为return -1;scripts/install.sh的uninstall()对version.info缺失及版本号解析为空增加容错报错;install_deps.sh将 dos2unix 安装失败改为可忽略提示。


/lgtm


修改说明
本 PR 修复代码审查发现的 10 个低风险问题,对应 issue 如下:
Closes #96 #97 #98 #99 #100 #101 #102 #103 #104 #105
验证