CANN/ops-sparse稀疏AscendC修复指南 常见违规修复方法对照表【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse根据违规类型找到对应修复方法。按优先级排序致命 → 严重 → 一般。致命级 (Fatal)违规规则修复方法G.STD.15外部可控数据启动进程使用参数化 API如execvp而非system或白名单映射CIP.01不安全 IPSI 算法替换为 SM2/SM3/SM4 或 AES/SHA-256/SHA-512 等合规算法严重级 (Severe)违规规则修复方法G.PRE.05跨文件分段预处理合入同一文件或重构条件编译逻辑G.PRE.07宏名与关键字冲突重命名宏添加前缀或使用宏名规范如OP_/SPARSE_G.INC.05extern C 包含头文件把#include移到extern C块之外G.INC.08#include 之前使用 using把using移到所有#include之后G.EXP.33自增/自减重复引用拆分为独立语句或使用临时变量G.FUU.09使用 realloc()改用mallocmemcpyfree的安全组合或使用安全版本函数G.FUU.10使用 alloca()改用静态 buffer栈上或malloc/new堆上G.FUU.12destMax 设置错误使用sizeof(buf)或明确的 size 常量G.FUU.13封装安全函数直接调用原安全函数不要二次封装G.FUU.15未使用安全函数库查找对应安全函数版本如memcpy→memcpy_sG.MEM.04敏感信息未清零使用memset_s/explicit_bzero等安全版本清除G.STD.05字符串缓冲区不足重新评估缓冲区大小确保包含\0G.STD.07std::string 存敏感信息改用char[]配合memset_s清除G.STD.13格式化字符串不匹配检查%d/%lld/%f等与参数类型匹配G.STD.16/17使用 exit/atexit/kill改为return或抛出自定义异常G.RES.02内存申请未校验大小加if (size 0 size MAX_SIZE)校验G.OTH.05代码含公网地址删除或替换为占位符测试数据标注例外OAT.1二进制文件混入删除二进制文件并加入.gitignore一般级 (Normal)违规规则修复方法R5圈复杂度 20提取条件块为独立函数R6嵌套深度 5提取内层循环/分支为独立函数R7NBNC 50按功能拆分为多个函数R8除零风险在除法/取模前添加被除数非零校验R10extern 函数声明替换为头文件#includekernel 入口除外G.EXP.26整型表达式溢出先转型为更大类型static_castlong long()再运算G.AST.03断言检测运行时错误替换为if OP_LOGE return错误处理G.FUU.11安全函数未检查返回值添加if (ret ! EOK)错误处理G.FUU.14用 macro 重命名安全函数直接调用原安全函数名G.ARR.03sizeof(ptr) 求数组大小显式传递 size 参数G.STD.18库函数竞争条件多线程场景改用线程安全版本如strtok→strtok_rG.OTH.03rand 做安全用途改用/dev/urandom或std::random_deviceCQ.04/05源文件/头文件过大按功能拆分模块提取为独立文件CQ.06目录文件过多分层组织按子模块建子目录CQ.07重复代码块提取为公共函数放src/common/CQ.08重复文件合并为同一文件CQ.09未使用的代码直接删除未使用的#include/ 变量 / 函数 / 死代码CQ.10不安全函数替换为安全函数版本CQ.11无理由压制告警修复告警的根本原因删除#pragma diagnostic ignored建议级 (Advisory)违规规则修复方法G.CTL.03死循环 / 无安全退出在循环中添加明确的终止条件counter / timeout / flag典型修复模板模板 A除零防御// 修复 R8 uint32_t coreNum GetAivCoreCount(); if (coreNum 0) { OP_LOGE(aclsparseXxx, GetAivCoreCount failed); return ACL_SPARSE_STATUS_INTERNAL_ERROR; } uint32_t perCore totalN / coreNum; // ← 此时 coreNum 必不为 0模板 B安全函数调用// 修复 CQ.10 / G.FUU.15 char buf[64]; errno_t ret strncpy_s(buf, sizeof(buf), src, sizeof(buf) - 1); if (ret ! 0) { OP_LOGE(ReadConfig, strncpy_s failed with %d, ret); return false; }模板 C敏感信息清除// 修复 G.MEM.04 char password[32]; ReadPassword(password, sizeof(password)); Authenticate(password); memset_s(password, sizeof(password), 0, sizeof(password)); // ← 强制清零【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考