首页 > 解决方案 > Coverity 找到了很多我的构建没有使用的 .h 文件

问题描述

在我的 travis 构建中,我让 travis 下载我的文件,让它运行覆盖扫描,它输出我的项目包含的所有 71 个源文件的 SCM 数据,但随后似乎找到了虚拟机包含的所有 .h 文件,并扼杀了它们文件总数的 15% 以上。隐蔽工具的相关输出行是:

    71 C/C++ compilation units (100%) are ready for analysis
    Extracting SCM data for 705 files...

有人知道我做错了什么吗?travis.yml 可以在https://github.com/wxMaxima-developers/wxmaxima/blob/a32e56eff71e256d2c5e7f027a6190324ab9dffb/.travis.yml阅读

标签: coverity

解决方案


找到它:https ://scan.coverity.com/scripts/travisci_build_coverity_scan.sh包含以下行,该行尝试查找包含到项目的所有源文件,并最终在 travis 上找到整个虚拟机中的所有源文件:

cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR/scm_log.txt 2>&1

使用脚本的本地副本并删除此行可以解决问题。此外,如果使用 ccache,则需要以下行来使覆盖收集所有不需要重新构建的文件的数据:

export CCACHE_DISABLE=1

线

- echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-

除了coverity 主页上的说明外,不得包含“https://”......并且如果 CXXFLAGS 不包含

-ansi

Coverity 不会收集任何数据。通过所有这些更改,travis 上的覆盖构建可以正常工作,但是 travis 脚本中的另一个错误使覆盖构建返回“-1”作为退出状态:服务器给出了意外的回复“构建正确上传”。


推荐阅读