Open3
reviewdogの雑まとめ
DesignDoc:
reviewdogは、Githubなどのコードホスティングサービスに、任意のlinterツールの結果をレビューコメントなどを送信できるツールである。
reviewdogの機能
- 任意のlinterを使える: ツールのエラーフォーマットを-efmで指定して取り扱い可能
- 事前定義されたツールのフォーマットがあるので、-fで代わりに利用可能
- ほかにも色々な入力形式をサポートしている
- RDFormat: linterの結果を表す標準的な機械可読性のあるメッセージの構造体。これを使って、複数行範囲のコメントや、コードの提案とかでも使える。(serverity・rule code with URLなどもあるらしい...、なにかは不明)
- diff(未定義なフォーマット): コードの提案で利用できる
- checkstyle format: https://checkstyle.sourceforge.io/
- sarif format: https://sarifweb.azurewebsites.net/
- RDFormatやDiffを使って、コードの提案ができる。
- config fileで、実行するreviewdogの定義を記載できる
- 結果を出力する場所を指定できる
- ローカル環境
- githubのPRチェック
- githubのPRレビュー
- githubのPRのアノテーション
- githubのチェック: PRだけでなくコミットにも適用できる
- etc
- エラー発見時に、終了コードを0か1にするか選べる。lintツールの結果をパイプで渡してエラーにしたいときに、--fail-on-errorフラグをtrueにする
- github-pr-checkのreporterで結果を出力する際に、レポートのレベルをinfo・warning・errorに変更できる
- 結果をフィルタリングする機能がある
- 前提として、作業を行ってコードに差分があるのでそれを利用する。
- reporterがローカルの場合は-diffコマンドで、何を差分にするかを指定する
- added: 追加・変更された行で結果をフィルタする
- diff_context: 変更された行 +-N行で結果をフィルタする
- file: 追加・変更されたファイルで結果をフィルタする。ファイル内であれば、diffなくても結果を報告する
- nofilter: 結果をフィルタしない
- 前提として、作業を行ってコードに差分があるのでそれを利用する。
色々なCIサービスをサポートしてる。
Goのgolangci-lintについても、Github Actionsが用意されている。
参考