1

我已经成功地为托管在 Github项目上的 C++ 设置了 TravisCI,它运行良好。 我想继续使用Coverity Scan对我的 C++ 代码进行静态分析。 可以使用 TravisCI 自动上传到 Scan Coverity,但我找不到让它工作的方法。


我的 git 仓库很简单,有两个分支:mastercoverity_scan.

为了避免每次推送某些内容时触发静态分析,所有与 Scan Coverity 相关的内容都填写在coverity_scan分支中:

language: cpp

env:
  global:
   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
   #   via the "travis encrypt" command using the project repo's public key
   - secure: "UEHXnbNPk49F6Ta/+d+UZl74EhtIevExwCo1l6qBndw+LvIXQDNSfsFiIJsZVfSgacBEOtd7CSY6rtccDpGeS9oX5/G/pnCz/2Cu+NOCCWlpy/S3qcUtdz52nMVatTgRhEi14WfrghpHk7nxxSi1W5+VIBfew+In11V1Xln3W06hhGOOK17Ljik18LbjSY1K9yVwK60r3tzwzSBMm/MArsqCeigzw15c0THQUtLlaLg/5nfP31f1QV9W1WlF4zIHjzd0970M385vNDDPyG+qRCfMPDEJrWb9/hJVi5x2poHLDObSE25rSQqfzc5nfiSDbH888mkdbBZXSwMVveVEhufyEk0nxI0Tddh/WNYFs+7g1gyV9409Tj288Omx++zpb0jM7/++wgkRwvBnqfBN7GWxoZJ9rHTxauJ+IIOR1jvskCTFMFMLI3C1+IpT4SgV0i6v2PtRsdGbXgI9qywhmPEjC+lS6Nu/rZQItr27rZowvw1ITYwJrDX4YQOAZxJkYNLFdGfqEMSjx0nfq6Kpl/4PaHQ7X0OtnJNgssMk3LNcYEwV1tLhTt+qODONjB7yWilcsWo8yVurr4vnFS2nIV7N4XgBvJcZHWfovxiQhfJU2UQxDvCYlDJ0RpM8kxpze+LR2vh+BbYOgPcr7YKG9MoAbsQXDGiF7yTz1VjVQr4="

addons:
  coverity_scan:
    project:
      name: LeFlou/Citadel
    build_command_prepend: "cmake"
    build_command: "make"
    branch_pattern: coverity_scan
  apt:
    sources:
    - ubuntu-toolchain-r-test
    packages:
    - gcc-4.8
    - g++-4.8
    - clang

compiler:
  - gcc
  - clang

before_script:
  - cmake .

script:
  - make

install:
# Use g++4.8 and not 4.6 (C++11 missing)
  - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi

branches:
  only:
    - coverity_scan

我只想在推送到时触发静态分析coverity_scan,而不是在 TravisCI 上构建。
但是,持续集成必须在master分支上工作。

目前,代码只是构建但从未上传到Coverity Scan.
我的配置有什么问题?

编辑:
我注意到TravisCI 验证器中的多个插件生成错误,只处理最后一个条目。另一方面,coverity_scan似乎构建起来没有问题(我需要安装更新版本的 g++,这与 C++11 特性有关)。

编辑 20150910:
我合并了这两个addons部分,这很有效。
但我仍然坚持“提交的第一个构建”步骤。
我还更改了 COVERITY_SCAN_TOKEN,仍然没有Coverity Scan 通过这些更改将构建提交到 TravisCI 构建

4

3 回答 3

4

我认为您的问题在于build_command_prepend,它是cmake .而不是cmake

于 2015-09-11T15:49:08.760 回答
2

我认为问题可能是您在coverity_scan此处指出了您正在使用的分支:

    branch_pattern: coverity_scan

但你说你是推到树枝scan_coverity上。所以你可能想尝试推动coverity_scan

于 2015-09-03T23:04:43.967 回答
0

我也遇到了麻烦,但最终让它工作了。

首先转到 Coverity 中的“项目设置”。复制令牌

在本地安装 travis gem 。

然后运行:

travis encrypt -r <coverity_project_name> COVERITY_SCAN_TOKEN=<token>

对于“coverity_project_name”,使用与 Coverity 仪表板中显示的名称完全相同的名称。

您需要将“travis encrypt”生成的密钥放入“secure”字段。所以你应该得到这样的结果:

- os: linux
  dist: bionic
  compiler: gcc
  env:
    - secure: "key generated by travis -r"
  before_install:
    - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
  addons:
    coverity_scan:
      project:
        name: "theimpossibleastronaut/rmw"
        description: "Console recycle bin written in C"
      notification_email:
      build_command_prepend: "./configure"
      build_command: "make"
      branch_pattern: coverity_scan
于 2021-04-29T07:22:30.673 回答