Skip to content

Commit 463f281

Browse files
committed
chore: add utility to identify deprecated rules
This has been useful to catch a few improperly deprecated rules like: * jsx-eslint/eslint-plugin-jsx-a11y#825 * eslint/eslint#15292
1 parent 20f0fc1 commit 463f281

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

compare/find-deprecated.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/* eslint-disable import/no-extraneous-dependencies */
2+
/* eslint-disable no-console */
3+
4+
/**
5+
* https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/825
6+
* https://github.com/eslint/eslint/issues/15292
7+
*/
8+
9+
const got = require('got');
10+
const {
11+
getLoadedRules,
12+
} = require('./utilities');
13+
14+
(async () => {
15+
const loadedRules = await getLoadedRules();
16+
17+
const ruleNames = Object.keys(loadedRules);
18+
19+
for (const ruleName of ruleNames) {
20+
if (loadedRules[ruleName]?.meta?.deprecated) {
21+
continue;
22+
}
23+
24+
const ruleDocumentationUrl = loadedRules[ruleName]?.meta?.docs?.url;
25+
26+
if (!ruleDocumentationUrl) {
27+
continue;
28+
}
29+
30+
const response = await got(ruleDocumentationUrl, {
31+
resolveBodyOnly: true,
32+
});
33+
34+
if (response.toLowerCase().includes('deprecated')) {
35+
console.warn('⚠️ ' + ruleName + ' suspected improperly deprecated rule (' + ruleDocumentationUrl + ')');
36+
}
37+
}
38+
})();

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"@babel/register": "^7.16.0",
5353
"ava": "^3.15.0",
5454
"eslint": "^8.2.0",
55+
"got": "^11.8.2",
5556
"husky": "^7.0.4",
5657
"jsonlint": "^1.6.3",
5758
"semantic-release": "^18.0.0"
@@ -76,6 +77,7 @@
7677
},
7778
"scripts": {
7879
"compare": "(cd compare; node compare.js)",
80+
"find-deprecated": "(cd compare; node find-deprecated.js)",
7981
"format": "jsonlint --sort-keys --in-place --indent ' ' ./configurations/eslintrc.json && echo '' >> ./configurations/eslintrc.json && jsonlint --sort-keys --in-place --indent ' ' ./configurations/lodash.json && echo '' >> ./configurations/lodash.json && jsonlint --sort-keys --in-place --indent ' ' ./configurations/flowtype.json && echo '' >> ./configurations/flowtype.json",
8082
"generate-typescript-compatibility-rules": "node bin/generate-typescript-compatibility-rules.js > configurations/typescript-compatibility.json",
8183
"lint": "eslint --report-unused-disable-directives .",

0 commit comments

Comments
 (0)