Github pull request hooks、静态代码分析和临时回滚

标签 github githooks github-api pull-request github-services

github是否提供

  • 设置脚本的钩子(Hook)在每个拉取请求上运行(比如说,可以调用一个简单的静态代码分析器脚本)
  • 以及根据结果拒绝拉取请求的规定
    脚本通过拉取请求 Hook 运行。

  • 我正在尝试建立一个预筛选机制来捕捉微不足道的错误/错误,这样审阅者就不会为微不足道的错误而烦恼,他们可以更多地关注逻辑/功能。如果预筛选脚本发现有问题的源不符合规范(通常,即使最简单的检查也失败了;例如,具有 >5000 SLoC 的函数,或不安全的 strcpy(),或包含已弃用的头文件等),它应该返回一个失败并且拉取请求本身应该失败,除非满足最低门控标准。

    由于代码在 github 而不是本地服务器上,这似乎有点棘手。

    我得到了一些指示( hereand here ),但仍然无法完全收集详细信息。代码库由 github 上的多个存储库组成。有没有更好的方法来实现和实现这一目标?请分享您对可能方法的想法。谢谢!

    最佳答案

    Does GitHub provide hooks to setup scripts to be run on every pull request (where say, one could call a simple static code analyser script) and a provision to reject the pull request, based on the results from that script run via pull request hook.



    这应该可以通过 GitHub API 实现,方法是结合 creation of a hook 对于 类型的事件拉请求 , 然后用生成的 修饰提交status .

    这是一种相当低级的方法,但是这使您可以完全控制正在执行的操作。例如,您可以自动向拉取请求添加评论,甚至在它们未通过分析过程时关闭它们。

    另一种更高级别的方法是利用 Travis CI 通过添加 提供服务.travis.yml 存储库中的文件。 Travis 对开源项目是免费的,也为私有(private)存储库提供付费服务。

    设置 Travis 非常简单,调整构建脚本轻而易举。

    下面两个示例 Travis 脚本供您引用:
  • LibGit2 : 一个 C 库。使用多个编译器构建、运行测试、运行 Valgrind。当代码未编译或测试失败时,构建失败(并且 PR 被这样修饰)。
  • LibGit2Sharp : LibGit2 的 C# 绑定(bind)。针对 Mono Xbuild 编译器构建,运行测试。当代码未编译或测试失败时,构建失败(并且 PR 被这样修饰)。

  • GitHub Commit Status 服务的官方公告可以在 中阅读。 blog post .

    关于Github pull request hooks、静态代码分析和临时回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947381/

    相关文章:

    macos - 在 Mac 上设置 git/github : error on reading usr/local/etc/gitconfig

    Github Pages 自定义域与疯狂域?

    java - Intellij Idea 无法执行 git pre-push hook

    api - GitHub API : Get email addresses of all members of organization

    github - 如何在 GitHub 上设置自定义扩展到语言的映射而不向 Linguist 添加新语言

    regex - Github 问题部分匹配

    带有 `post-receive` 的 Git Hook `git pull` 通过命令行运行良好但在自动 Hook 时返回空字符串

    git - 在 git post-merge hook 中列出更改的文件

    github-api - PyGithub - 如何获取特定分支的所有提交的列表?

    python - 使用 API REST 创建的 GitHub secret 但返回空