我有一个中等大小的 github 存储库,我为其配置了 Travis-CI/Coverity 工具。大约一个月前,我的设置运行良好:Travis 编译并构建了我的应用程序,然后执行 Coverity 扫描,我可以在我的 Coverity 页面上看到结果。
然而,最近,Coverity 分析停止工作。我查看了 Travis 日志文件,并在构建成功时与旧日志进行了比较,这就是我发现的:
在日志的末尾,失败的版本包含下一个警告:
[警告] 未发出任何文件。这可能是由于您的配置有问题,或者因为您的构建命令实际上没有编译任何文件。
请确保您已配置编译中实际使用的编译器。
更多详情请查看:/home/travis/build/name/repo-name/build/cov-int/build-log.txt
正在为 0 个文件提取 SCM 数据...
...
因此,Travis 构建正在传递,但没有为 Coverity 生成任何内容。我检查了我的 Travis 配置文件,它与 Coverity 构建成功时的提交相同。
为了实验,我克隆了我的项目存储库,回滚到构建成功时的版本并为它们设置 Travis/Coverity。你猜怎么着?同样的警告!因此,过去(大约 35 天前)有效的相同设置不再有效。因此,我得出结论,Travis 发生了一些变化,因为它不会生成某些文件。
我想知道是否有人遇到过这个问题?它可能是什么?我需要更改一些 Travis 设置吗?
一些附加信息:我使用 CMake 构建我的项目,它有两个依赖项:Qt 和 OpenSceneGraph(我必须为 Travis 安装)。
这是我.travis.yml
在我的coverity_scan
分支上的大致脚本:
language: cpp
os: linux
compiler: gcc
sudo: required
dist: trusty
addons:
apt:
packages:
- cmake
- g++-4.8
coverity_scan:
project:
name: "name/project"
description: "Build submitted via Travis CI"
notification_email: email@domain.com
build_command: "make -j2 VERBOSE=1"
branch_pattern: coverity_scan
env:
global:
- PROJECT_SOURCE=${TRAVIS_BUILD_DIR}/src/
- PROJECT_BUILD=${TRAVIS_BUILD_DIR}/build/
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "...secure..."
before_install:
# download Qt
# ...
# download OpenSceneGraph
# ...
# imitate x server
- export DISPLAY=:99.0
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16
- sleep 3
install:
# install Qt
- sudo apt-get --yes install qt55base qt55imageformats qt55svg
# compiler
- export CXX="g++-4.8"
- export CC="gcc-4.8"
# install OpenSceneGraph
# ...
before_script:
# Qt location
# ...
# OpenSceneGraph variables
# ...
# create build folder
- mkdir $PROJECT_BUILD
- cd $PROJECT_BUILD
# cmake command
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt54/lib/cmake -DProject_BUILD_TEST=ON -DProject_VERSION=0.0.0 $PROJECT_SOURCE
script:
- if [[ "${COVERITY_SCAN_BRANCH}" == 1 ]];
then
echo "Don't build on coverty_scan branch.";
exit 0;
fi
# compile everything, if not coverity branch
- make -j2
# run unit tests
# ...