diff --git a/CHANGELOG.md b/CHANGELOG.md index a53c514a72..02855710b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased + +* fix: support index expressions for no-magic-number rule. + ## 4.13.0 * feat: add [Checkstyle](https://dartcodemetrics.dev/docs/cli/analyze#checkstyle) format reporter. @@ -67,7 +71,7 @@ * feat: add static code diagnostics [`avoid-global-state`](https://dartcodemetrics.dev/docs/rules/common/avoid-global-state), [`avoid-unrelated-type-assertions`](https://dartcodemetrics.dev/docs/rules/common/avoid-unrelated-type-assertions). * feat: support extensions and static getters for [`check-unused-l10n`](https://dartcodemetrics.dev/docs/cli/check-unused-l10n). -* feat: improve [ `prefer-correct-type-name`](https://dartcodemetrics.dev/docs/rules/common/prefer-correct-type-name), [`prefer-match-file-name`](https://dartcodemetrics.dev/docs/rules/common/prefer-match-file-name) rules. +* feat: improve [prefer-correct-type-name](https://dartcodemetrics.dev/docs/rules/common/prefer-correct-type-name), [`prefer-match-file-name`](https://dartcodemetrics.dev/docs/rules/common/prefer-match-file-name) rules. * feat: add `delete-files` flag to [`check-unused-files`](https://dartcodemetrics.dev/docs/cli/check-unused-files) command. * feat: facelift console reporters. * chore: restrict `analyzer` version to `>=2.4.0 <3.1.0`. diff --git a/lib/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/no_magic_number_rule.dart b/lib/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/no_magic_number_rule.dart index 71b6760e2a..08dc55c564 100644 --- a/lib/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/no_magic_number_rule.dart +++ b/lib/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/no_magic_number_rule.dart @@ -43,6 +43,7 @@ class NoMagicNumberRule extends CommonRule { .where(_isNotInsideConstMap) .where(_isNotInsideConstConstructor) .where(_isNotInDateTime) + .where(_isNotInsideIndexExpression) .map((lit) => createIssue( rule: this, location: nodeLocation( @@ -86,4 +87,6 @@ class NoMagicNumberRule extends CommonRule { l.thisOrAncestorMatching((ancestor) => ancestor is InstanceCreationExpression && ancestor.isConst) == null; + + bool _isNotInsideIndexExpression(Literal l) => l.parent is! IndexExpression; } diff --git a/test/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/examples/exceptions_example.dart b/test/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/examples/exceptions_example.dart index e36e423c08..be03d55a46 100644 --- a/test/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/examples/exceptions_example.dart +++ b/test/src/analyzers/lint_analyzer/rules/rules_list/no_magic_number/examples/exceptions_example.dart @@ -1,12 +1,24 @@ -int good_f1(int x) => x + 1; -bool good_f2(int x) => x != 0; -bool good_f3(String x) => x.indexOf(str) != -1; -final someDay = DateTime(2006, 12, 1); -final anotherDay = DateTime.utc(2006, 12, 1); -final f = Intl.message(example: const {'Assigned': 3}); -final f = foo(const [32, 12]); -final f = Future.delayed(const Duration(seconds: 5)); -final f = foo(const Bar(5)); -final number = 500; -var number = 500; -var numbers = [100, 200, 300]; +void main() { + int good_f1(int x) => x + 1; + bool good_f2(int x) => x != 0; + bool good_f3(String x) => x.indexOf(str) != -1; + final someDay = DateTime(2006, 12, 1); + final anotherDay = DateTime.utc(2006, 12, 1); + final f = Intl.message(example: const {'Assigned': 3}); + final f = foo(const [32, 12]); + final f = Future.delayed(const Duration(seconds: 5)); + final f = foo(const Bar(5)); + final number = 500; + var number = 500; + var numbers = [100, 200, 300]; + numbers[0]; + + Map m = { + 1: '', + 2: '', + 3: '', + }; + String? mv = m[2]; + final mf = m[2]; + print(m[2]); +}