Probably not, but it's a trick question: if you try to look for exceptions to the rule, you have already wasted so much time that running a linter on all files would be faster.
Every file not touched in any given diff
What if the linter uses more context than a single file, a type-checker for example or even just checking the correct number of arguments (regardless of type) are passed to an imported function - or that that symbol is indeed even callable? Should we only run the linter on the caller's file, or the callee's, when they haven't both changed?
Also, ESLint doesn't do type checking. That's typescripts job, and apparently typescripts runtime isn't an issue.
In particular, the call site itself hasn't changed, as this thread assumes the linter is only run on changed files
I'm not sure if Eslint does this either, but indices or some incremental static analysis sounds like it could help the linter minimize rechecks or use previous state.
I'm not sure how well this could scale across (600- 1000?) different lints though. I should look into static analysis a bit more.
If a file has been linted, is unchanged since it was linted, there's literally no need to lint it again. Much like if you only need to process one record, you don't query the whole table to get the record.
But I'm generally working in a (human & financially) resource-constrained environment.
I'm not aware of eslint rules which would complain about some other untouched file if types have changed in ways such that the program still compiles
https://typescript-eslint.io/rules/await-thenable/
https://typescript-eslint.io/rules/no-for-in-array
https://typescript-eslint.io/rules/no-duplicate-type-constit...
ESLint could also cache things fairly trivially:
hash = hash_file_contents()
if previously_seen_hashes.contains(hash)
report_previous_results()
else
run_lint_and_cache_results()
end
maybe that already exists. But that has the same problem.When you've got enough hardware to throw at it, then "just run it on the full code" is the safest.