eslint-find-rules
eslint-find-rules copied to clipboard
'extends: eslint:recommended' causes *all* rules to be considered used
Take the following minimal .eslintrc.yaml
:
extends: eslint:recommended
When I run eslint-find-rules -c .eslintrc.yaml
it dumps a list of every eslint rule, which is extremely unhelpful.
I think the problem here is that eslint:recommended
is implemented by setting the value for non-recommended rules to off
instead of leaving them out. The only workaround I can think of for this is to explicitly mask out eslint:recommended
and then later fill them back in. However, this seems like a bit of a bodge; is there a better way to do this?
The alternative is to add a flag such as --off-is-unused
to consider any rules which have been turned off to be unused. Of course, that would prevent rules from being removed from the list.
"used" means precisely that - "defined". It's not "--enabled".
I think a new flag that finds rules that aren't enabled would be great! However, that's an entirely separate flag than --unused
- otherwise you'd be breaking the existing use case of locating rules that aren't defined in the eslint config.
No, I completely understand that 'unused' is different from 'enabled'. I think the problem is that I expected eslint:recommended
to only define the list of recommended rules, in the same way that for example eslint-config-standard only lists the rules it's enabling, rather than listing out every possible eslint rule.
My specific use case is writing an eslint config that's based off the recommended list with a lot of extra rules added. Right now I'm commenting out the extends
line, running eslint-find-rules
, and manually removing all of the recommended rules from the list.
Basically, what I'm looking for is something like eslint-find-rules --unused --no-extends .eslintrc.yaml
minus eslint-find-rules --enabled --only-extends .eslintrc.yaml
Hopefully that makes sense? Now that I look closer at the eslint API I'm not even sure if it's possible to do this, but it's kind of hard for me to tell without diving in and having a go at it.
It will eventually be possible, once getRules()
is exposed by ESLint's API (see #172 and issues linked within).
I think that if you want the recommended set to only list the rules it's enabling, that perhaps that's a change that should be made upstream in eslint itself?
@jfmengels did you open an issue upstream? I couldn't find one. Seems like a reasonable request to me, and I'm in the same boat as you trying to find unused rules.
Edit: @jfmengels just thumbs-up'ed it. Didn't scroll back up far enough to see that @wolfgang42 was the one who opened originally.
No, I haven't. I could probably in a few days (a bit busy lately), but go ahead if you feel like it in the meantime.
@ta2edchimp Are you guys considering this?
Definitely.
But as I do not have the perfect idea about how to approach this, I'd recommend to use eslint-diff-rules
in verbose mode as a workaround in the meanwhile:
eslint-diff-rules [your own config] ./node_modles/eslint/conf/eslint-recommended.js -v