Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix: missing placeholders in violation messages forno-unnecessary-type-constraint andno-unsafe-argument (and enableeslint-plugin/recommended rules internally)#5453

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation

bmish
Copy link
Contributor

@bmishbmish commentedAug 9, 2022
edited by JoshuaKGoldberg
Loading

PR Checklist

Overview

Fixes bugs caught by theeslint-plugin/no-missing-placeholders andeslint-plugin/no-unused-placeholders rules:

  1. Bug:no-unnecessary-type-constraint missing placeholder in suggestion message #5460
  2. Bug:no-unsafe-argument missing placeholders in violation message #5461

Enables therecommended config fromeslint-plugin-eslint-plugin which catches mistakes and enforces best practices in eslint plugins. Note that I have been actively making fixes to eslint-plugin-eslint-plugin to eliminate any false positives with its rules.

If desired, I can extract these bug fixes into separate PRs to go in ahead of the rest of the eslint-plugin-eslint-plugin additions.

…pe-constraint and no-unsafe-argument (and enable eslint-plugin/recommended rules internally)
@typescript-eslint
Copy link
Contributor

Thanks for the PR,@bmish!

typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community.

The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately.

Thanks again!


🙏Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently onhttps://opencollective.com/typescript-eslint. As a thank you, your profile/company logo will be added to our main README which receives thousands of unique visitorsper day.

@nx-cloud
Copy link

nx-cloudbot commentedAug 9, 2022
edited
Loading

☁️ Nx Cloud Report

CI is running/has finished running commands for commitec3fb4b. As they complete they will appear below. Click to see the status, the terminal output, and the build insights.

📂 See all runs for this branch


✅ Successfully ran 47 targets

Sent with 💌 fromNxCloud.

@netlify
Copy link

netlifybot commentedAug 9, 2022
edited
Loading

Deploy Preview fortypescript-eslint ready!

NameLink
🔨 Latest commitec3fb4b
🔍 Latest deploy loghttps://app.netlify.com/sites/typescript-eslint/deploys/62f5112688f7de00085d9c36
😎 Deploy Previewhttps://deploy-preview-5453--typescript-eslint.netlify.app
📱 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 yourNetlify site settings.

@@ -194,7 +195,7 @@ module.exports = {
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'eslint-plugin/no-identical-tests': 'error',
Copy link
ContributorAuthor

Choose a reason for hiding this comment

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

This rule is now included in therecommended config.

@@ -9,7 +9,7 @@ export default util.createRule({
description: 'Disallow duplicate enum member values',
recommended: 'strict',
},
hasSuggestions:true,
hasSuggestions:false,
Copy link
ContributorAuthor

@bmishbmishAug 9, 2022
edited
Loading

Choose a reason for hiding this comment

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

Many of these rules indicated they had suggestions but do not actually provide suggestions.

Caught by theeslint-plugin/require-meta-has-suggestions rule.

@@ -15,10 +15,9 @@ export default util.createRule<Options, MessageIds>({
docs: {
description: 'Disallow the declaration of empty interfaces',
recommended: 'error',
suggestion: true,
Copy link
ContributorAuthor

@bmishbmishAug 9, 2022
edited
Loading

Choose a reason for hiding this comment

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

Thismeta.docs.suggestion property was replaced bymeta.hasSuggestions (more info ineslint/eslint#14312). It's confusing to leave the old property here especially when it's incorrectly specified in many of the rules.

@@ -89,6 +88,9 @@ export default util.createRule({
suggest: [
{
messageId: 'removeUnnecessaryConstraint',
data: {
constraint,
Copy link
ContributorAuthor

@bmishbmishAug 9, 2022
edited
Loading

Choose a reason for hiding this comment

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

This is an actual bug. This data was missing for the suggestion message and would thus show as{{constraint}} to the user instead of the actual value. I updated the tests to test this data.

I can extract this bug fix into a separate PR if desired.

Caught by theeslint-plugin/no-missing-placeholders andeslint-plugin/no-unused-placeholders rules.

@@ -142,7 +142,7 @@ export default util.createRule<[], MessageIds>({
unsafeArgument:
'Unsafe argument of type `{{sender}}` assigned to a parameter of type `{{receiver}}`.',
unsafeTupleSpread:
'Unsafe spread of a tuple type. The{{index}} elementis of type `{{sender}}` and is assigned to a parameter of type `{{reciever}}`.',
'Unsafe spread of a tuple type. Theargumentis of type `{{sender}}` and is assigned to a parameter of type `{{receiver}}`.',
Copy link
ContributorAuthor

@bmishbmishAug 9, 2022
edited
Loading

Choose a reason for hiding this comment

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

This is an actual bug. The{{index}} placeholder was never provided for this message. It also doesn't seem necessary to me as the violation is already reported on the specific argument that it refers to.

I can extract this bug fix into a separate PR if desired.

Caught by theeslint-plugin/no-missing-placeholders andeslint-plugin/no-unused-placeholders rules.

@@ -142,7 +142,7 @@ export default util.createRule<[], MessageIds>({
unsafeArgument:
'Unsafe argument of type `{{sender}}` assigned to a parameter of type `{{receiver}}`.',
unsafeTupleSpread:
'Unsafe spread of a tuple type. The{{index}} elementis of type `{{sender}}` and is assigned to a parameter of type `{{reciever}}`.',
'Unsafe spread of a tuple type. Theargumentis of type `{{sender}}` and is assigned to a parameter of type `{{receiver}}`.',
Copy link
ContributorAuthor

@bmishbmishAug 9, 2022
edited
Loading

Choose a reason for hiding this comment

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

This is an actual bug. There is a typo in thereceiver placeholder name.

I can extract this bug fix into a separate PR if desired.

Caught by theeslint-plugin/no-missing-placeholders andeslint-plugin/no-unused-placeholders rules.

JoshuaKGoldberg
JoshuaKGoldberg previously approved these changesAug 10, 2022
Copy link
Member

@JoshuaKGoldbergJoshuaKGoldberg left a comment

Choose a reason for hiding this comment

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

Wow, I had no idea eslint-plugin-eslint-plugin (😂 what a name!) was so powerful! Fantastic stuff this PR brings in. Thanks for sending it over!

LGTM, just a few notes on filing & linking issues. I'm down to help fill those requests in if it'd be helpful!

bmish reacted with hooray emoji
.eslintrc.js Outdated
@@ -194,7 +195,7 @@ module.exports = {
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'eslint-plugin/no-identical-tests': 'error',
'eslint-plugin/consistent-output': 'off',

Choose a reason for hiding this comment

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

Out of curiosity, why is this still enabled inplugin:eslint-plugin/recommended? Is it just a legacy thing?

Copy link
ContributorAuthor

Choose a reason for hiding this comment

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

I disabledeslint-plugin/consistent-output for two reasons:

  1. There are 100 violations so we could follow-up to enable it in a separate PR if we want to.
  2. I think it's less useful now that ESLint v7validates that test cases provide output when they produce an autofix, and it's tedious to includeoutput: null when not necessary. It might beremoved asrecommended eventually.

Choose a reason for hiding this comment

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

Heh, yeah, now that ESLint is already at 8.21.0, it feels like removing from recommended is the right step 😄

Could you just add a todo comment around this line with a link to an issue? Either one on this repo if you think we should enable it, or one on the eslint-plugin repo if you think it should be removed fromrecommended?

Copy link
ContributorAuthor

Choose a reason for hiding this comment

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

Filed and added a link to this issue:eslint-community/eslint-plugin-eslint-plugin#284

@@ -1,3 +1,7 @@
/* eslint-disable eslint-comments/no-use */
/* eslint eslint-plugin/no-unused-message-ids:"off" -- disabled because the rule doesn't understand our helper function checkCall() */

Choose a reason for hiding this comment

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

We generally like filing issues when a bug is found, both to get a link to a full discussion & to help drive to fixing it. Do you have the bandwidth to file one so we can link it here?

(here and the other disable)

Copy link
ContributorAuthor

Choose a reason for hiding this comment

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

Choose a reason for hiding this comment

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

Awesome, thanks! ✨

Copy link
Member

@JoshuaKGoldbergJoshuaKGoldberg left a comment

Choose a reason for hiding this comment

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

This is fantastic work, thanks so much for sending it in! 👏

Just requesting changes on adding some comments around disables, to help us track removing them over time. Otherwise I think this is good to ship!

bmish reacted with hooray emoji
@JoshuaKGoldbergJoshuaKGoldberg added the awaiting responseIssues waiting for a reply from the OP or another party labelAug 10, 2022
Copy link
Member

@JoshuaKGoldbergJoshuaKGoldberg left a comment

Choose a reason for hiding this comment

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

Glorious, thanks for introducingeslint-plugin-eslint-plugin to the repo (and me)! Let's get these fixes in 💪

bmish reacted with hooray emoji
@JoshuaKGoldbergJoshuaKGoldbergenabled auto-merge (squash)August 11, 2022 14:24
@JoshuaKGoldbergJoshuaKGoldberg merged commitd023910 intotypescript-eslint:mainAug 11, 2022
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this pull requestAug 23, 2022
This PR contains the following updates:| Package | Type | Update | Change ||---|---|---|---|| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | patch | [`5.33.0` -> `5.33.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.33.0/5.33.1) || [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | patch | [`5.33.0` -> `5.33.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.33.0/5.33.1) |---### Release Notes<details><summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>### [`v5.33.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5331-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5330v5331-2022-08-15)[Compare Source](typescript-eslint/typescript-eslint@v5.33.0...v5.33.1)##### Bug Fixes-   missing placeholders in violation messages for `no-unnecessary-type-constraint` and `no-unsafe-argument` (and enable `eslint-plugin/recommended` rules internally) ([#&#8203;5453](typescript-eslint/typescript-eslint#5453)) ([d023910](typescript-eslint/typescript-eslint@d023910))</details><details><summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>### [`v5.33.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5331-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5330v5331-2022-08-15)[Compare Source](typescript-eslint/typescript-eslint@v5.33.0...v5.33.1)**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.--- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.---This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xNTkuMSIsInVwZGF0ZWRJblZlciI6IjMyLjE1OS4xIn0=-->Co-authored-by: cabr2-bot <cabr2.help@gmail.com>Reviewed-on:https://codeberg.org/Calciumdibromid/CaBr2/pulls/1509Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org>Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this pull requestSep 1, 2022
This PR contains the following updates:| Package | Type | Update | Change ||---|---|---|---|| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.33.1` -> `5.35.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.33.1/5.35.1) || [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.33.1` -> `5.35.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.33.1/5.35.1) |---### Release Notes<details><summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>### [`v5.35.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5351-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5350v5351-2022-08-24)[Compare Source](typescript-eslint/typescript-eslint@v5.35.0...v5.35.1)##### Bug Fixes-   **eslint-plugin:** correct rule schemas to pass ajv validation ([#&#8203;5531](typescript-eslint/typescript-eslint#5531)) ([dbf8b56](typescript-eslint/typescript-eslint@dbf8b56))### [`v5.35.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5350-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5340v5350-2022-08-24)[Compare Source](typescript-eslint/typescript-eslint@v5.34.0...v5.35.0)##### Features-   **eslint-plugin:** \[explicit-member-accessibility] suggest adding explicit accessibility specifiers ([#&#8203;5492](typescript-eslint/typescript-eslint#5492)) ([0edb94a](typescript-eslint/typescript-eslint@0edb94a))### [`v5.34.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5340-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5331v5340-2022-08-22)[Compare Source](typescript-eslint/typescript-eslint@v5.33.1...v5.34.0)##### Bug Fixes-   **eslint-plugin:** \[no-useless-constructor] handle parameter decorator ([#&#8203;5450](typescript-eslint/typescript-eslint#5450)) ([864dbcf](typescript-eslint/typescript-eslint@864dbcf))##### Features-   **eslint-plugin:** \[prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#&#8203;5266](typescript-eslint/typescript-eslint#5266)) ([aca935c](typescript-eslint/typescript-eslint@aca935c))#### [5.33.1](typescript-eslint/typescript-eslint@v5.33.0...v5.33.1) (2022-08-15)##### Bug Fixes-   missing placeholders in violation messages for `no-unnecessary-type-constraint` and `no-unsafe-argument` (and enable `eslint-plugin/recommended` rules internally) ([#&#8203;5453](typescript-eslint/typescript-eslint#5453)) ([d023910](typescript-eslint/typescript-eslint@d023910))</details><details><summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>### [`v5.35.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5351-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5350v5351-2022-08-24)[Compare Source](typescript-eslint/typescript-eslint@v5.35.0...v5.35.1)**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)### [`v5.35.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5350-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5340v5350-2022-08-24)[Compare Source](typescript-eslint/typescript-eslint@v5.34.0...v5.35.0)**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)### [`v5.34.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5340-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5331v5340-2022-08-22)[Compare Source](typescript-eslint/typescript-eslint@v5.33.1...v5.34.0)**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)#### [5.33.1](typescript-eslint/typescript-eslint@v5.33.0...v5.33.1) (2022-08-15)**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.--- - [x] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.---This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xNjkuMSIsInVwZGF0ZWRJblZlciI6IjMyLjE3My4wIn0=-->Co-authored-by: cabr2-bot <cabr2.help@gmail.com>Co-authored-by: Epsilon_02 <epsilon_02@noreply.codeberg.org>Reviewed-on:https://codeberg.org/Calciumdibromid/CaBr2/pulls/1519Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org>Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
@github-actionsgithub-actionsbot locked asresolvedand limited conversation to collaboratorsSep 11, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account?Sign in.
Reviewers

@JoshuaKGoldbergJoshuaKGoldbergJoshuaKGoldberg approved these changes

Assignees
No one assigned
Labels
awaiting responseIssues waiting for a reply from the OP or another party
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

Bug:no-unsafe-argument missing placeholders in violation message Bug:no-unnecessary-type-constraint missing placeholder in suggestion message
2 participants
@bmish@JoshuaKGoldberg

[8]ページ先頭

©2009-2025 Movatter.jp