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

Update: stricter array index check in no-magic-numbers (fixes #12845) #12851

Merged
merged 2 commits into from Mar 28, 2020

Conversation

mdjermanovic
Copy link
Member

@mdjermanovic mdjermanovic commented Jan 31, 2020

Prerequisites checklist

  • I have read the contributing guidelines.
  • The team has reached consensus on the changes proposed in this pull request. If not, I understand that the evaluation process will begin with this pull request and won't be merged until the team has reached consensus.

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

[X] Bug fix #12845

This bug fix produces more warnings.

What changes did you make? (Give an overview)

no-magic-numbers with option ignoreArrayIndexes: true was allowing all numbers x in a[x], assuming they're array indexes, like:

a[-1], a[2.5], a[1e500] ...

This PR changes the ignoreArrayIndexes option to allow only those numbers that will result in a valid array index name: "0", "1" ... "4294967294".

All notations are still allowed, as long as the expression evaluates and coerces to a valid index.

I also renamed some unrelated functions and removed some extra params.

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

Added max array length check, too. That wasn't mentioned in the original issue, is it okay?

@eslint-deprecated eslint-deprecated bot added the triage An ESLint team member will look at this issue soon label Jan 31, 2020
Copy link
Member

@kaicataldo kaicataldo left a comment

Choose a reason for hiding this comment

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

Thanks for working on this! I think these changes are good candidates for updating the documentation (particularly around the max length index access, as I think that's something that isn't immediately clear).

@@ -6,6 +6,7 @@
"use strict";

const { isNumericLiteral } = require("./utils/ast-utils");
const MAX_ARRAY_LENGTH = 2 ** 32 - 1;
Copy link
Member

Choose a reason for hiding this comment

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

Thanks for naming this so that it's not a magic number, but I wonder if even more context would be helpful here? MDN has some documentation we can use for this (and refer to in the docs)

Copy link
Member Author

Choose a reason for hiding this comment

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

Completely agree 👍 I'll update the docs.

Did you also mean to add more explanation in the code? There is already something in the description for function isArrayIndex()

Copy link
Member Author

Choose a reason for hiding this comment

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

It's also interesting that the rule itself wouldn't allow this line in its own code.

This was proposed in #12535

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated the docs and comments in the code. I hope this specifies the option well and that it's explained in an understandable way, all suggestions are welcome!

Also, is using <sup></sup> okay? Couldn't find any examples in other documents.

Copy link
Member

@kaicataldo kaicataldo Feb 5, 2020

Choose a reason for hiding this comment

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

Also, is using <sup></sup> okay?

According to the Eleventy documentation, it looks like it should work! I think we'll just want to double check the site after the next release. :)

Copy link
Member Author

Choose a reason for hiding this comment

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

@kaicataldo kaicataldo added accepted There is consensus among the team that this change meets the criteria for inclusion bug ESLint is working incorrectly rule Relates to ESLint's core rules and removed triage An ESLint team member will look at this issue soon labels Feb 1, 2020
Copy link
Member

@kaicataldo kaicataldo left a comment

Choose a reason for hiding this comment

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

As always, thank you for the well documented code and tests! LGTM.

@kaicataldo kaicataldo merged commit e0f1b6c into master Mar 28, 2020
@kaicataldo kaicataldo deleted the issue12845 branch March 28, 2020 00:27
@eslint-deprecated eslint-deprecated bot locked and limited conversation to collaborators Sep 25, 2020
@eslint-deprecated eslint-deprecated bot added the archived due to age This issue has been archived; please open a new issue for any further discussion label Sep 25, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion archived due to age This issue has been archived; please open a new issue for any further discussion bug ESLint is working incorrectly rule Relates to ESLint's core rules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

no-magic-numbers false negatives on invalid array indexes
2 participants