【问题标题】:Run Coverity scan for every Travis pull request build为每个 Travis 拉取请求构建运行 Coverity 扫描
【发布时间】:2015-01-01 18:09:17
【问题描述】:

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

  1. 学生 fork 我的 Github 存储库并修改文件
  2. 学生将本地代码推送到他的存储库并创建拉取请求
  3. Travis CI 检测到 pull request 并运行 Pull Request build
  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

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

【问题讨论】:

    标签: github travis-ci coverity


    【解决方案1】:

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

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

    更新

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

    示例

    所以我继续用 Travis 进行试验,并来到了this repo。我更改了我的.travis.yml 文件,看起来像这样

    language: c
    compiler: gcc
    
    before_install:
      - sudo apt-get install -qq cppcheck
    
    script:
      - cppcheck --error-exitcode=1 --quiet .
      - make
    

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

    【讨论】:

    • 有人可以建议哪个云工具支持拉取请求代码分析吗?
    • Sonar (about.sonarcloud.io) 支持静态分析,在每次提交/PR 上运行都没有问题。
    【解决方案2】:

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

    【讨论】:

    • 我今天一直在努力使用 Jenkins,使用 this 教程
    • 我到办公室去试试。谢谢
    • 这个答案将如何在未来帮助任何人 - 永远?如果您想私下提供帮助,请私下进行 - 但不要通过“回答”进行。
    • 这说不通,Jenkins 可以做与 Coverity 一样的静态分析吗?如何?詹金斯并没有开箱即用地解决这个问题。此外,如果有,您需要自己托管,Coverity 是一项免费的托管服务。
    猜你喜欢
    • 2019-08-12
    • 2017-02-16
    • 2017-12-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多