3

我有一个中等大小的 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
  # ...
4

1 回答 1

2

经过一些研究并查看了现有的示例,我终于使它起作用了。要修复警告,并因此确保为分析发出文件,有必要明确指定编译器二进制文件(根据注释更新)。在我的附加组件之前,我.travis.yml必须添加一个。该块的最终外观示例如下:build_command_prependbuild_commandcoverity_scan

# ... 
coverity_scan:
    project:
      name: "name/project"
      description: "Build submitted via Travis CI"
    notification_email: name@domain.com

# ! have to specify the binary (updated, thanks to Caleb)
    build_command_prepend: "cov-configure --comptype gcc --compiler gcc-4.8 --template"

    build_command:   "make VERBOSE=1"
    branch_pattern: coverity_scan

# ...
于 2016-08-11T20:11:11.957 回答