Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: disallow multiple configuration comments for same rule #18157

Merged
merged 3 commits into from Mar 3, 2024

Conversation

mdjermanovic
Copy link
Member

@mdjermanovic mdjermanovic commented Feb 29, 2024

Prerequisites checklist

What is the purpose of this pull request? (put an "X" next to an item)

[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[x] Add something to the core
[ ] Other, please explain:

Fixes #18132

What changes did you make? (Give an overview)

Updated code that processes /*eslint*/ comments (both in flat and eslintrc modes) to check if the rule has already been configured by another comment. In that case, the previous comment still applies, while the duplicate is reported as a lint error.

Is there anything you'd like reviewers to focus on?

This doesn't cover cases where a rule appears multiple times in the same comment. Configuration comments are parsed by levn (with a fallback to JSON parsing), which allows duplicate keys in objects and just returns the last entry. Detecting these duplicates would probably require another tool or custom parsing. I think these cases are much less important than the cases with multiple comments.

@mdjermanovic mdjermanovic added core Relates to ESLint's core APIs and features accepted There is consensus among the team that this change meets the criteria for inclusion feature This change adds a new feature to ESLint labels Feb 29, 2024
@mdjermanovic mdjermanovic requested a review from a team as a code owner February 29, 2024 12:48
@eslint-github-bot eslint-github-bot bot added the breaking This change is backwards-incompatible label Feb 29, 2024
Copy link

netlify bot commented Feb 29, 2024

Deploy Preview for docs-eslint ready!

Name Link
🔨 Latest commit fe02b89
🔍 Latest deploy log https://app.netlify.com/sites/docs-eslint/deploys/65e1b62fe614810008173c0d
😎 Deploy Preview https://deploy-preview-18157--docs-eslint.netlify.app/use/migrate-to-9.0.0
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@nzakas
Copy link
Member

nzakas commented Feb 29, 2024

This doesn't cover cases where a rule appears multiple times in the same comment. Configuration comments are parsed by levn (with a fallback to JSON parsing), which allows duplicate keys in objects and just returns the last entry. Detecting these duplicates would probably require another tool or custom parsing. I think these cases are much less important than the cases with multiple comments.

💯

Copy link
Member

@nzakas nzakas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM. Just a suggestion on improving the error message.

lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
mdjermanovic and others added 2 commits March 1, 2024 11:55
Co-authored-by: Nicholas C. Zakas <nicholas@humanwhocodes.com>
@mdjermanovic
Copy link
Member Author

Just a suggestion on improving the error message.

I have updated the message.

Copy link
Member

@nzakas nzakas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Leaving open for a couple more days to give others a chance to review.

Copy link
Contributor

@snitin315 snitin315 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@snitin315 snitin315 merged commit 79a95eb into main Mar 3, 2024
19 checks passed
@snitin315 snitin315 deleted the issue18132 branch March 3, 2024 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion breaking This change is backwards-incompatible core Relates to ESLint's core APIs and features feature This change adds a new feature to ESLint
Projects
Status: Complete
Development

Successfully merging this pull request may close these issues.

Change Request: Disallow multiple configuration comments for the same rule
3 participants