GitHub超级短绒:一个短绒统治所有人

2020-06-18 23:41:44

为不同类型的代码设置具有所有正确的linters的新存储库可能既耗时又乏味。有如此多的工具和配置可供选择,而且通常需要不止一个Linter才能涵盖所有使用的语言。

GitHub Super Linter是由GitHub Services DevOps工程团队出于必要而构建的,目的是保持我们文档和代码的一致性,同时使整个公司的沟通和协作成为更有成效的体验。现在我们是开源的,这样每个人都可以使用和改进它!

有了这些基本标准,我们应该在内部以及向我们的客户和合作伙伴交付更好、更干净、更稳定的代码。

Super Linter是一个源代码存储库,打包到Docker容器中,由GitHub操作调用。这允许GitHub.com上的任何存储库调用Super Linter并开始利用它的好处。

Super Linter目前将支持多种语言,未来还会支持更多语言。有关语言的详细信息,请查看Readme.md。

当您将存储库设置为开始运行此操作时,每当您打开拉取请求时,它都会开始打印代码用例,并通过status API返回。它将让您知道是否成功通过了任何代码更改,或者是否检测到任何错误、它们在哪里以及它们是什么。然后,这允许开发人员返回到他们的分支,修复任何问题,并为打开的Pull请求创建一个新的推送。此时,Super Linter将再次运行,验证更新后的代码并重复该过程。您可以配置分支保护规则,以确保所有代码都必须通过,然后才能作为附加措施进行合并。

有大量的定制标志和模板,可以帮助你为你的个人存储库定制Super Linter。只需按照Super Linter存储库和Super Linter维基的详细说明操作即可。

对于多种类型的代码和/或文档都在一起(Monorepo)的任何存储库,此工具也很有用。

在Super Linter中标准化规则集一直是一个有趣的挑战,因为每个开发人员的编码方式都是独一无二的。这就是为什么我们允许用户对Linter使用他们认为适合其存储库的任何规则。但是,如果没有定义规则集,我们必须默认使用某个标准。

Ruby和Rails的规则集取自Ruby gem:rubocopy-giHub,并遵循我们在GitHub.com上使用的相同规则和版本控制。

对于其他语言,我们选择安装Linter时的默认值,例如:Caveelint或Yamllint。对于其他人,我们试图找到一个快乐的中间地带,为简单的基础奠定基础,并帮助建立一些最佳实践,如Markdownlint或pylint。

这样做的好处是,您将开箱即用地开始建立框架,并且您的团队可以在任何时候决定是否需要额外的定制,您完全有能力这样做。

只需导航到Super Linter并将模板从Templates文件夹复制到您的本地存储库。

我们鼓励您设置此操作,并开始清理代码库和构建团队的标准和最佳实践的过程。

我们一直在寻求更新最佳实践,添加更多语言,并使该工具更易于使用。如果您想为此行动做出贡献,请查看我们的贡献指南。