已合并
【UBSE】IT框架支持asan扫描 #1418
lisong_hw创建于 11 天前
【UBSE】IT框架支持asan扫描 #1418
已合并
Pull Request已成功合入, 合并人@openeuler-ci-bot
(感谢 lisong_hw 的贡献)atomgit-bot
11 天前 评论:
11 天前 评论:
变更摘要
该 PR 为 UT 测试构建链路新增 AddressSanitizer(ASAN)扫描机制:在 build.sh 中新增独立的 asan 构建类型与专用构建目录,通过 CMake 开关 ASAN_BUILD 注入 -fsanitize=address 等编译/链接选项,并新增 scripts/run_test.sh(统一测试运行器)与 scripts/asan_report.sh(ASAN 日志合并与报告提取)两个脚本;同时针对 ASAN 运行期行为(未初始化内存、operator new[] 拦截、栈上越界读取等)批量改造既有 UT 用例,使 ASAN 门禁下测试可稳定运行并输出扫描报告,而不阻断构建。
主要改动
- 构建脚本新增
asan构建类型与独立构建目录:build.sh在BUILD_DIRS中注册cmake-build-asan,当enable_asan=ON时强制使用该目录(避免污染常规构建与覆盖率数据),并新增 ASAN 工具链探测(编译-fsanitize=address探针程序)与报告模式ASAN_OPTIONS(detect_leaks=1、abort_on_error=0:halt_on_error=0:exitcode=0等,错误不中断、进程以 0 退出),构建完成后调用scripts/asan_report.sh汇总报告。 - CMake 侧注入 ASAN 编译链接选项并接入统一运行器:
scripts/cmake/building.cmake在ASAN_BUILD=ON时添加-fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer编译选项与-fsanitize=address链接选项;scripts/cmake/utils.cmake的add_ut与add_independent_exec_ut宏在 ASAN 构建下将RUN_TEST包装为scripts/run_test.sh。 - 新增 ASAN 报告与测试运行脚本:
scripts/asan_report.sh合并asan_log.<pid>日志、统计 Address/LeakSanitizer 错误总数,过滤 gtest/mockcpp/libasan 框架噪音并提取每个错误的类型、SUMMARY与源码栈帧,汇总写入asan_save.log;scripts/run_test.sh负责运行测试二进制、留存输出(可配置UBSE_TEST_OUTPUT_DIR)并按 gtest 标记行展示结果。 - UT 用例的 ASAN 兼容性改造:
test_ubs_engine_mem.cpp、test_ubs_engine_topo.cpp将数组分配缓冲区的delete修正为delete[],UbsMemShmListForAllSchene改用malloc+memcpy_s复制响应数据;test_ubse_logger.cpp将std::copy_n全部替换为带长度校验的memcpy_s;test_ubse_mem_api_convert.cpp修正uint32_t字段误用sizeof(uint64_t)的越界拷贝,test_ubse_com_engine.cpp显式SetBodyLen(0)消除未初始化bodyLen_。 - ASAN 下不可稳定运行的用例条件跳过:多个测试文件在
__SANITIZE_ADDRESS__下通过GTEST_SKIP()跳过依赖未初始化栈垃圾(Get1825PfeRespMsg_InvalidBbNum、UbseMemCreateWithCandidateReqUnpackSuccess)、依赖 mockcpp 拦截operator new[](ubs_virt_agent_sync_task_query_AllocateMemoryFailed、HandlerServerReq_AllocFail、UbseGetDirConnectInfoFromRemote_AllocFail)或涉及后台线程竞态的用例(RollBackFailureCreatesBgThread、NonexistentFilePath);test/UT/main.cpp在 ASAN 下不再调用SetupSignalHandlers(),test_ubse_com_base.cpp移除SafeDeleteArray(data)冗余释放。


atomgit-bot
11 天前 评论:
11 天前 评论:
11 天前 将hlinbo,shw030915,Gao_Victor,qmyyxtl,caowaterman设为审查人
11 天前 添加了label:sig/sig-UB-ServiceCore
此处折叠了114条消息 查看更多
xuchenfeng
2 天前 评论:
2 天前 评论:
/lgtm


2 天前 添加了label:lgtm-xuchenfengcleancode
openeuler-ci-bot
2 天前 评论:
2 天前 评论:
2 天前 关闭了关联的issue
2 天前 合入了pull request,合并节点 SHA:06c9ffdf9a5bbbe339de7cc5cc9cee54edcb17a2
当前PR是否有AI参与:
[x] 否
[ ] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :
参考:openEuler社区《生成式AI工具使用与开源贡献政策》
PR功能描述 / 为什么需要这个合入**:
该PR关联的issue
(格式为fixes #<issue号>, 或者resolves #<issue号>): fixes #
希望检视人员了解: