rspec/rules/S7055/dart/rule.adoc
github-actions[bot] c3ed549e27
Create rule S7055: Wildcard variable shouldn't be used
Co-authored-by: Marharyta Nedzelska <margarita.nedzelska@sonarsource.com>
2024-09-03 09:42:11 +02:00

76 lines
1.9 KiB
Plaintext

== 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:
`for (var _ in [1, 2, 3]) doSomething();`
or as a field, in the pattern:
[source,dart]
----
void sayHello(Person p) {
switch (p) {
case (name, _):
print('Hello, $name!');
}
}
----
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.
=== What is the potential impact?
Once the breaking change is introduced, you will need to update all the code using wildcard variables or parameters to be able to upgrade to the latest Dart language versions.
== How to fix it
If the variable/parameter are supposed to be read, then give them a proper name.
=== Code examples
==== Noncompliant code example
[source,dart,diff-id=1,diff-type=noncompliant]
----
void sayHello(String __) {
print('Hello, $__!');
}
----
==== Compliant solution
[source,dart,diff-id=1,diff-type=compliant]
----
void sayHello(String name) {
print('Hello, $name!');
}
----
== Resources
=== Documentation
* Dart Docs - https://dart.dev/tools/linter-rules/no_wildcard_variable_uses[Dart Linter rule - no_wildcard_variable_uses]
* Dart Docs - https://dart.dev/language/pattern-types#wildcard[wildcard pattern]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
* The referenced identifier is a wildcard.
=== Highlighting
Wildcard identifier
'''
== Comments And Links
(visible only on this page)
endif::env-github,rspecator-view[]