对每个Travis拉取请求构建运行Coverity扫描

gki*_*iko 5 github travis-ci coverity

我想尽可能自动化学生作业评分系统.理想情况下,在提交作业时将采取这些步骤.

  1. 学生分叉我的Github存储库并修改文件
  2. 学生将本地代码推送到他的存储库并创建拉取请求
  3. Travis CI检测到pull请求并运行Pull Request构建
  4. 如果代码构建成功,Coverity将对pull请求运行静态代码分析
  5. 学生从Github拉取请求页面获取构建状态

我已成功为我的仓库中的每个拉动请求设置了Travis构建.我已成功通过Travis对我的回购中的每次提交进行Coverity扫描.但我不能触发Coverity扫描拉取请求,只运行Travis构建.我可以修复此问题并为每个拉取请求维护Coverity扫描报告吗?

这是我的 .travis.yml

language: c
compiler: gcc

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: "WHkT1bLbpz8VA8tl+qyZvWHLg7YvnMPhCNXCEAQQaklcDq8HQ7glIrrs35VnTDfs09tVgkPbgsAfwBuwxqkmmxWaquW0AHdb6cefNpQVj2ovUriQVNBFmjfte9Bbq0NWKoLp+4IY/3IDfLoUOekOIDXuQtkJhNvX1zkkt21lSeo="

addons:
  coverity_scan:
    project:
      name: "Freeuni-CN101-2014/midterm"
      description: "Build submitted via Travis CI"
    notification_email: example@mail.com
    build_command_prepend: ""
    build_command:   "make"
    branch_pattern: "*"

script: make
Run Code Online (Sandbox Code Playgroud)

特拉维斯输出拉请求在这里

我在这里将pull请求与主分支合并后的Travis输出

gki*_*iko 2

我询问 Coverity 支持,他们回复了

Coverity 扫描的触发器发生在特定分支,而不是拉取请求,特别是 .travis.yml 中提到的分支

更新

在用户 @Admaster 的帮助下,我开始使用 Jenkins 和cppcheck插件。Jenkins 正在成功扫描拉取请求,而无需将构建状态设置为 Github 提交(Travis 确实设置了)。

例子 在此输入图像描述

所以我继续用 Travis 进行实验并研究了这个repo。我改变了我的.travis.yml文件,看起来像这样

language: c
compiler: gcc

before_install:
  - sudo apt-get install -qq cppcheck

script:
  - cppcheck --error-exitcode=1 --quiet .
  - make
Run Code Online (Sandbox Code Playgroud)

cppcheck 可能不如 Coverity 有效,但对于学生的作业来说已经足够了。