DART-213 Modify rules S1161, S7055: update descriptions and messages (#4799)

* DART-213 Modify rule S1161: update message details

* S7055: Update description

* Update rule.adoc
This commit is contained in:
Antonio Aversa 2025-03-19 16:28:12 +01:00 committed by GitHub
parent 74068df10a
commit d41b77b623
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 5 deletions

View File

@ -47,8 +47,6 @@ ifdef::env-github,rspecator-view[]
The member '<method name>' overrides an inherited member but isn't annotated with '@override'. The member '<method name>' overrides an inherited member but isn't annotated with '@override'.
If the member is a setter, the method name will end with a `=` sign, to distinguish it from the corresponding getter.
=== Highlighting === Highlighting
The identifier of the method, property or operator. The identifier of the method, property or operator.

View File

@ -1,6 +1,10 @@
== Why is this an issue? == Why is this an issue?
In Dart, you can use wildcard names(names consisting on underscores only: `++_++`, `++__++`, `++___++`, ... ). Usually it should be used to name the variable/parameter that won't be directly used but needs to be declared. For example, as counter in the for-loop: In Dart, you can use wildcard names, that are names consisting on underscores only: `++_++`, `++__++`, `++___++`, ...
Usually, wildcard names should be used to name the variable/parameter that won't be directly used but needs to be declared.
For example, as counter in the for-loop:
`for (var _ in [1, 2, 3]) doSomething();` `for (var _ in [1, 2, 3]) doSomething();`
@ -16,7 +20,18 @@ void sayHello(Person p) {
} }
---- ----
Currently, this is possible to read such wildcard variables, for example, `print(_);`. However, such behavior is supposed to change in the next versions of the Dart language, making such variables non-binding and breaking the code, where such variables are used. To avoid problems during upgrades, it's recommended to refactor the code, to not use wildcard variables. In Dart 3.6 and below, it is possible to read `++_++` wildcard variables, for example, `print(_);`.
However, such behavior has changed in Dart 3.7, making `++_++` variables non-binding and breaking the code, where those variables are used.
[source,dart]
----
void sayHello(String _) {
print('Hello, $_!'); // Compiler error in Dart 3.7 and above: _ is non-binding
}
----
To avoid problems during upgrades from Dart 3.6-, it's recommended to refactor the code, to not use wildcard variables.
=== What is the potential impact? === What is the potential impact?
@ -33,7 +48,7 @@ If the variable/parameter are supposed to be read, then give them a proper name.
[source,dart,diff-id=1,diff-type=noncompliant] [source,dart,diff-id=1,diff-type=noncompliant]
---- ----
void sayHello(String __) { void sayHello(String __) {
print('Hello, $__!'); print('Hello, $__!'); // Noncompliant in Dart 3.6 and below
} }
---- ----