結論
ESLintのWarningを全て出力対象外として構わなければ、ESLint実行時に--quiet
オプションを付ける
reviewdogがエラーになる理由とその対処方法
ESLintでは、.eslintignore
に記述したファイルをチェック対象外にします。
foo.js
この時、ESLintを実行するとfoo.js
に対して、以下のようなWarningが出力されます。
(下記フォーマットは、-f checkstyle
を付けた場合。なお、わかりやすく改行とインデントを入れています)
<?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
<file name="/home/runner/work/foo.js">
<error line="undefined" column="undefined" severity="warning" message="File ignored because of a matching ignore pattern. Use "--no-ignore" to override." source="" />
</file>
</checkstyle>
File ignored because of a matching ignore pattern
ignore
したからといって何も出力されないわけではなく、ignore
したことを警告してくれているわけですね。
このESLintの出力内容ですが、通常、line
とcolumn
には数値が入り、ソースコード中のチェックにかかった位置がわかります。
しかし、ignore
の場合は、どちらもundefined
となります。
<error line="undefined" column="undefined" severity="warning" message="File ignored because of a matching ignore pattern. Use "--no-ignore" to override." source="" />
このESLintの出力をそのままreviewdog
に入力すると、内容を解析できずにparse errorとなってしまいます。
reviewdog: parse error: strconv.ParseInt: parsing "undefined": invalid syntax
reviewdogは、line
の値を元にGitHubのPR上にコメントしてくれます。
ですのでline
の値がundefined
では困ってしまうのだと思われます。
これを回避する手段として、ESLintのWarningをignore
対象に限らず、全て出力対象外として良いということであれば、--quiet
オプションを付ける方法があります。
--quiet
オプションを付けるとESLintのWarinigレベルは出力されなくなり、結果reviewdogのparse errorは発生しなくなります。