使用Coverity 2023.06,能否将旧项目分析结果导入同名同结构源码的新项目?
在Coverity 2023.06中实现新项目复用旧缺陷元数据的可行方案
完全可行,核心依托是你保持了源码文件的层级和名称完全一致,Coverity可以通过文件路径精准匹配新旧缺陷,从而导入旧分析的负责人、首次检测日期等元数据。具体操作步骤如下:
1. 创建新Coverity项目
可通过命令行或Web界面完成:
- 命令行方式:
cov-manage-projects --url <你的Coverity服务器地址> --add --name "新项目名" --stream "新项目流名" - Web界面:登录Coverity服务器控制台,直接创建新项目和对应的分析流即可。
2. 导出旧项目的缺陷元数据
从旧项目导出包含所需元数据的XML文件,命令如下:
cov-export-defects --url <Coverity服务器地址> --project "旧项目名" --stream "旧项目流名" --format xml --output old_defects_meta.xml
该文件会包含缺陷的文件路径、负责人、首次检测日期、状态等所有元数据信息。
3. 完成新项目的首次分析上传
在新源码目录下执行标准Coverity分析流程,将结果上传到新项目:
# 构建捕获 cov-build --dir cov-int make <你的编译命令> # 静态分析 cov-analyze --dir cov-int # 上传缺陷到新项目 cov-commit-defects --url <Coverity服务器地址> --project "新项目名" --stream "新项目流名" --dir cov-int
4. 导入旧元数据到新项目
使用cov-import-defects命令,通过文件路径匹配缺陷,将旧元数据合并到新项目中:
cov-import-defects --url <Coverity服务器地址> --project "新项目名" --stream "新项目流名" --format xml --input old_defects_meta.xml --merge keep-existing --match path
--merge keep-existing:保留新项目中基于新源码分析出的缺陷内容,仅覆盖负责人、日期等元数据--match path:以文件路径作为匹配依据,这是最适合你场景的规则,因为文件结构完全一致,匹配准确率接近100%
5. 验证结果
登录Coverity Web控制台,查看新项目的缺陷列表,确认旧的负责人、首次检测日期等信息已正确导入,同时缺陷的分析内容是基于新目录源码的最新结果。
注意事项
- 确保新旧项目使用的Coverity版本统一(均为2023.06),避免元数据格式不兼容
- 若后续有文件路径变动,可调整匹配规则为
--match function或--match signature,但路径匹配仍是最可靠的方式
内容的提问来源于stack exchange,提问作者Zyad Ahmed
相关产品推荐
相关产品推荐

