5

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

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

我已经成功地为我的仓库中的每个拉取请求设置了 Travis 构建。我已经通过 Travis 成功地为我的 repo 上的每个提交运行了 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

拉请求的特拉维斯输出here

将拉取请求与此处的主分支合并后的 Travis 输出

4

2 回答 2

2

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

Coverity Scan 的触发发生在特定分支而不是拉取请求,特别是 .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

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

于 2014-11-06T20:46:47.510 回答
-2

我建议不要使用 Coverity,因为免费帐户有很多限制。更好的是使用詹金斯。我将尝试为您进行特别配置。Jenkins 支持 github 上的拉取请求

于 2014-11-07T13:25:37.580 回答