コンテンツにスキップ

reviewdog@自動レビューツール

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. reviewdogとは

任意のツールの標準出力/標準エラー出力の結果を、レビューコメントとしてGitHubにPOSTで送信する。


02. コマンド

-conf

reviewdog.ymlファイルを指定して、reviewコマンドを実行する。

$ reviewdog -conf=.reviewdog.yml


-f

▼ -fとは

reviewdogコマンドに渡す時の標準出力/標準エラー出力のフォーマットを設定する。

このフォーマットに基づいて、reviewdogコマンドは処理結果を認識する。

ビルトインのフォーマットがあればこれを使用でき、無い場合はユーザーがツールの出力内容に基づいて設定する必要がある。

▼ phpstanの場合

PHPStanが標準出力/標準エラー出力に出力する結果のフォーマットを設定する。

$ ./vendor/bin/phpstan analyse --error-format=raw --no-progress -l 5 index.php \
    | reviewdog -reporter=github-pr-review -f=phpstan

▼ yamllint

$ yamllint foo.yaml \
   | reviewdog -reporter=github-pr-review -f=yamllint


--list

▼ --listとは

宛先に送信するビルトインのエラーフォーマットを表示する。

-fオプションで指定できる。

$ reviewdog --list

rdjson          Reviewdog Diagnostic JSON Format (JSON of DiagnosticResult message)                                             - https://github.com/reviewdog/reviewdog
rdjsonl         Reviewdog Diagnostic JSONL Format (JSONL of Diagnostic message)                                                 - https://github.com/reviewdog/reviewdog
diff            Unified Diff Format                                                                                             - https://en.wikipedia.org/wiki/Diff#Unified_format

...

tslint          An extensible linter for the TypeScript language                                                                - https://github.com/palantir/tslint
typos           Source code spell checker                                                                                       - https://github.com/crate-ci/typos
yamllint        (yamllint -f parsable) A linter for YAML files                                                                  - https://github.com/adrienverge/yamllint


03. .reviewdog.ymlファイル

reviewdogコマンドのオプションを宣言的に設定できる。

runner:
  golint:
    cmd: golint $(go list ./... | grep -v /vendor/)
    format: golint
    level: warning
  govet:
    cmd: go vet $(go list ./... | grep -v /vendor/)
    format: govet
  errcheck:
    cmd: errcheck -asserts -ignoretests -blank $(go list ./... | grep -v /vendor/)
    errorformat:
      - "%f:%l:%c:%m"
    level: warning
  staticcheck:
    cmd: staticcheck $(go list ./... | grep -v /vendor/)
    errorformat:
      - "%f:%l:%c: %m"
  misspell:
    cmd: misspell $(git ls-files)
    errorformat:
      - "%f:%l:%c: %m"
  unparam:
    cmd: unparam $(go list ./... | grep -v /vendor/)
    errorformat:
      - "%f:%l:%c: %m"
  revive:
    cmd: revive -config=.revive.toml $(go list ./... | grep -v /vendor/)
    format: golint
    level: warning
  golangci:
    cmd: golangci-lint run --out-format=line-number ./...
    errorformat:
      - "%E%f:%l:%c: %m"
      - "%E%f:%l: %m"
      - "%C%.%#"
    level: warning