<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一款不錯的開源的代碼審查輔助工具

          共 4152字,需瀏覽 9分鐘

           ·

          2022-09-17 11:55

          ?

          reviewdog

          地址:https://github.com/reviewdog/reviewdog

          ??:5.5k

          語言:Go

          ?

          在做代碼審查時,我們一般會使用工具來自動檢測到的錯誤或樣式問題,如我們可以使用各種 linter 和靜態(tài)代碼分析工具來檢測本地機器、編輯器、CI 服務(wù)中的此類問題。但靜態(tài)分析工具可能會有大量誤報,我們很難從混亂的分析結(jié)果中找到真正的問題。一些 linter 支持通過代碼注釋的減少這種誤報,但這又可能會弄亂我們的代碼。

          一種解決方案是每次提交代碼時,只針對更改的地方做分析,并產(chǎn)出評審注釋。這樣我們能集中注意力,去發(fā)現(xiàn)真正的問題。而 reviewdog 正是提供這樣一個能力的工具。

          reviewdog 提供了一種將代碼審查評論發(fā)布到代碼托管服務(wù)(例如 GitHub)的方法,該方法可以輕松地與任何 linter 工具集成。它使用 lint 工具的輸出,如果發(fā)現(xiàn)與要審查的補丁不同,則將它們作為評論發(fā)布。reviewdog 還支持在本地環(huán)境中運行以通過 diff 過濾 lint 工具的輸出。


          可以在本地運行 reviewdog 以按差異過濾結(jié)果,也可以在 CI 服務(wù)器中運行以發(fā)布評審報告。

          可以將 GitHub API 令牌存儲在 REVIEWDOG_GITHUB_API_TOKEN 環(huán)境變量中。以下是 CircleCI 的基本配置

          test:
          pre:
          - go get github.com/haya14busa/reviewdog/cmd/reviewdog
          override:
          - >-
          go tool vet -all -shadowstrict . 2>&1 | reviewdog -f=govet -ci="circle-ci"

          為了支持任何編譯器、linter 或任何工具,reviewdog 使用了 Vim 的“errorformat”功能(在 Go 中移植)。例如,如果結(jié)果格式是 {file}:{line number}:{column number}: {message},errorformat 應(yīng)該是 %f:%l:%c: %m

          errorformat 還能處理更復(fù)雜的多行消息。

          $ cat testdata/sbt.in
          [warn] /path/to/F1.scala:203: local val in method f is never used: (warning smaple 3)
          [warn]         val x = 1
          [warn]             ^
          [warn] /path/to/F1.scala:204: local val in method f is never used: (warning smaple 2)
          [warn]   val x = 2
          [warn]       ^
          [error] /path/to/F2.scala:1093: error: value ++ is not a member of Int
          [error]     val x = 1 ++ 2
          [error]               ^
          [warn] /path/to/dir/F3.scala:83: local val in method f is never used
          [warn]         val x = 4
          [warn]             ^
          [error] /path/to/dir/F3.scala:84: error: value ++ is not a member of Int
          [error]         val x = 5 ++ 2
          [error]                   ^
          [warn] /path/to/dir/F3.scala:86: local val in method f is never used
          [warn]         val x = 6
          [warn]             ^
          $ errorformat "%E[%t%.%+] %f:%l: error: %m" "%A[%t%.%+] %f:%l: %m" "%Z[%.%+] %p^" "%C[%.%+] %.%#" "%-G%.%#" < testdata/sbt.in
          /path/to/F1.scala|203 col 13 warning| local val in method f is never used: (warning smaple 3)
          /path/to/F1.scala|204 col 7 warning| local val in method f is never used: (warning smaple 2)
          /path/to/F2.scala|1093 col 15 error| value &#43;&#43; is not a member of Int
          /path/to/dir/F3.scala|83 col 13 warning| local val in method f is never used
          /path/to/dir/F3.scala|84 col 19 error| value &#43;&#43; is not a member of Int
          /path/to/dir/F3.scala|86 col 13 warning| local val in method f is never used

          理解整個 errorformat 功能有點困難,但在大多數(shù)情況下,我們所需要知道的只是基本的簡單項目(%f:文件,%l:行號,%c:列號,%m:消息)。

          最重要的是,reviewdog ( haya14busa/errorformat ) 為主要工具提供了預(yù)定義的錯誤格式,因此在大多數(shù)情況下我們不需要編寫錯誤格式??梢栽诖颂幉榭搭A(yù)定義的錯誤格式或 reviewdog -list。

          reviewdog 可以使用任何工具自動審查我們的代碼,還可以在本地運行以加快開發(fā)速度。reviewdog 幫助我們引入嚴(yán)格的 lint 工具(或經(jīng)常報告誤報結(jié)果的工具),它僅針對 Pull-Request 之類的差異檢測,而不是整個代碼庫。

          reviewdog 目前支持多種語言和工具,可以參考相關(guān) repo 以按自己的需求來配置。

          瀏覽 285
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  小h片免费在线观看 | 无码高清一区二区 | 小泽玛利亚在线视频 | av牛牛| 一级黄色淫秽视频免费观看 |