javascript - Finns det ett sätt att få de unika fel som rapporteras av ESLint
Jag refaktorerar ett befintligt projekt med TypeScript och React. Jag har infört ESLint och det rapporteras över 300 fel i koden.
Detta är en ganska stor uppgift eftersom dessa inte kan rättas automatiskt med ESLint själv.
Finns det ett sätt att få det distinkta felet från ESLint CLI-utdata och sedan använda den regeln för att få filerna som orsakar regel-felet så att jag kan fixa det regel för regel istället för fil för fil?
Svar #1
Eslint stöder anpassade formatterare. Så du kan göra något i stil med:
Lägg till fil lint-formatter.js
module.exports = results => {
const byRuleId = results.reduce(
(map, current) => {
current.messages.forEach(({ ruleId, line, column }) => {
if (!map[ruleId]) {
map[ruleId] = [];
}
const occurrence = `${current.filePath}:${line}:${column}`;
map[ruleId].push(occurrence);
});
return map;
}, {}
);
return Object.entries(byRuleId)
.map(([ruleId, occurrences]) => `${ruleId} (total: ${occurrences.length})\n${occurrences.join('\n')}`)
.join('\n########################\n');
};
Exemplet ovan grupperar fel/varningar efter regel-id, men självklart är allt i dina händer.
Kör sedan linter med din anpassade formatterare:
eslint -f ./lint-formatter.js
Exempelutdata:
object-curly-spacing (total: 2)
foo/bar.js:2:8
foo/bar.js:3:13
########################
no-trailing-spaces (total: 1)
foo/bar.js:7:11
########################
object-curly-newline (total: 2)
foo/bar.js:14:8
foo/bar.js:15:31
########################
space-infix-ops (total: 1)
foo/bar.js:18:29
