365 文字
2 分
ESLintでエラーが出ているルールをjqを利用してリスト表示する
ESLint の結果を JSON 形式で出力する
ESLint は--format json
オプションを利用することで、実行結果を JSON 形式で出力できる。
eslint . --format json
次のような出力が得られる。
[ { "filePath": "source-file-0.ts", // ... "errorCount": 2, // ... } { "filePath": "source-file-1.ts", "messages": [ { "ruleId": "unused-imports/no-unused-vars", "severity": 2, "message": "'hoge' is defined but never used. Allowed unused args must match /^_/u.", "line": 8, "column": 31, "nodeType": null, "messageId": "unusedVar", "endLine": 8, "endColumn": 35, }, { "ruleId": "unused-imports/no-unused-vars", // ... }, ], "suppressedMessages": [ { "ruleId": "unused-imports/no-unused-imports", "severity": 2, "message": "'React' is defined but never used.", "line": 2, "column": 8, "nodeType": null, "messageId": "unusedVar", "endLine": 2, "endColumn": 13, "fix": { "range": [67, 74], "text": "", }, "suppressions": [ { "kind": "directive", "justification": "", }, ], }, { "ruleId": "unused-imports/no-unused-imports", // ... }, ], "errorCount": 2, "fatalErrorCount": 0, "warningCount": 0, "fixableErrorCount": 0, "fixableWarningCount": 0, "source": "// eslint-disable-next-line unused-imports/no-unused-imports\nimport React, { useState } from \"react\";\n\ninterface MyComponentProps {\n hoge?: string;\n}\n\nexport const MyComponent = ({ hoge }: MyComponentProps) => {\n return \"Hello, World\";\n};\n\nexport const MyComponent2 = ({ hoge, ...props }: MyComponentProps) => {\n return props;\n};\n\nexport const MyComponent3 = ({ hoge: _hoge, ...props }: MyComponentProps) => {\n return props;\n};\n\n// eslint-disable-next-line unused-imports/no-unused-vars\n(function (foo, bar, baz, qux) {\n return bar;\n})();\n\n(function (foo, bar, baz, qux) {\n return qux;\n})();\n", "usedDeprecatedRules": [], },]
jq を利用して ESLint の JSON から ruleId を抽出する
ESLint の JSON 出力を見ると、ソースファイル毎にエラーが出ていれば errorCount がインクリメントされ、 messages でその内容を確認できることが分かる。またメッセージが error か warning かは severity で表現されている。 よって次のようにすれば、エラーを取得できる。
eslint . --format json | jq -r 'map(select(.errorCount > 0).messages[] | select(.severity == 2).ruleId ) | unique'
次のような結果が得られる。
["unused-imports/no-unused-imports","unused-imports/no-unused-vars"]
ESLintでエラーが出ているルールをjqを利用してリスト表示する
https://blog.ohirunewani.com/posts/eslint-show-error-list-with-jq/