GitHub 开源 Super Linter,用自动化解决开发者的需求
在設置新的存儲庫時,為不同類型的代碼選擇合適的對應 linter 可能是既費時又乏味的工作。可供選擇的工具和配置如此之多,我們通常需要不止一個 linter 才能涵蓋所有用到的語言。
GitHub Super Linter是由 GitHub Services DevOps 工程團隊根據需要構建的,目的是保持我們文檔和代碼的一致性,同時提升整個公司之間的交流和協作的效率。現在我們正式將其開源,這樣所有人都可以使用和改進它了!
Super Linter 通過自動化解決了許多需求。其特性包括:
- 防止將損壞的代碼上傳到主分支;
- 幫助建立多種語言的編碼最佳實踐;
- 制訂代碼布局和格式的指南;
- 自動化流程以幫助簡化代碼審查;
- 有了這些基礎標準后,我們就能在內部 / 向客戶和合作伙伴交付更好、更整潔、更穩定的代碼。
它是什么?
Super Linter 是一個源代碼存儲庫,它打包到一個 Docker 容器中,并由 GitHub Actions 調用。這樣 GitHub.com 上的任何存儲庫都可以調用 Super Linter 并從中獲益。
目前 Super Linter 支持多種語言,將來還會提供更多語言支持。有關支持語言的詳細信息,請查看README.md。
工作機制
將存儲庫設置為開始運行這個動作(Action)后,只要你打開一個拉取請求,存儲庫就會開始 linting 代碼并通過 Status API 返回。它會通知你所有代碼更改是否成功通過,或者是否檢測到任何錯誤,錯誤在哪里以及它們的具體信息。然后,開發人員可以返回其分支,解決所有問題,并為這個開放的 PR 創建一個新的 push。屆時,Super Linter 將再次運行和驗證更新代碼,并重復該過程。你可以配置分支保護規則,加入 " 所有代碼在合并前必須通過 " 的額外規定。
Super Linter 擁有大量帶有標志和模板的自定義選項,你可以針對自己的存儲庫調整它們。只需按照 Super Linter 存儲庫和Super Linter Wiki上的詳細說明操作即可。
這款工具對于將多種類型的代碼和 / 或文檔放在一起的存儲庫(單體存儲庫)來說也很有用。
默認規則
在 Super Linter 中標準化一個規則集是一項有趣的挑戰,因為每位開發人員的編碼方式都是獨一無二的。所以我們允許用戶根據他們自己的存儲庫情況對 Linter 使用任何規則。但如果用戶未定義規則集,則我們必須有一個默認標準。
Ruby 和 Rails 的規則集來自 Ruby gem:rubocop-github,并遵循我們在 GitHub.com 上使用的同一套規則和版本控制策略。
對于其他語言,我們指定了安裝 linter 時的默認項,例如:coffeelint或yamllint。至于剩下的那些,我們嘗試找到一個合適的平衡點——基礎簡單且能幫助建立一些最佳實踐,例如:Markdownlint或pylint。
這樣做的好處是,你可以直接開始建立框架,并且當需要新的自定義選項時你的團隊可以隨時做出相應的決策與改動。
只需轉到 Super Linter,然后將模板從 TEMPLATES 文件夾復制到本地存儲庫即可。
英文原文:Introducing GitHub Super Linter: one linter to rule them all
總結
以上是生活随笔為你收集整理的GitHub 开源 Super Linter,用自动化解决开发者的需求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq宝贝童装(QQ宝贝在哪玩)
- 下一篇: 量子计算机领域内第一种高级编程语言 Si