rspec/rules/S2302/vbnet/rule.adoc
Fred Tingaud 51369b610e
Make sure that includes are always surrounded by empty lines (#2270)
When an include is not surrounded by empty lines, its content is inlined
on the same line as the adjacent content. That can lead to broken tags
and other display issues.
This PR fixes all such includes and introduces a validation step that
forbids introducing the same problem again.
2023-06-22 10:38:01 +02:00

56 lines
1.5 KiB
Plaintext

== Why is this an issue?
Because parameter names could be changed during refactoring, they should not be spelled out literally in strings. Instead, use ``++NameOf()++``, and the string that's output will always be correct.
This rule raises an issue when any string in the ``++Throw++`` statement is an exact match for the name of one of the method parameters.
=== Noncompliant code example
[source,vbnet]
----
Public Sub DoSomething(param As Integer, secondParam As String)
If (param < 0)
Throw New Exception("param") ' Noncompliant
End If
If secondParam is Nothing
Throw New Exception("secondParam should be valid") ' Noncompliant
End If
End Sub
----
=== Compliant solution
[source,vbnet]
----
Public Sub DoSomething(param As Integer, secondParam As String)
If (param < 0)
Throw New Exception(NameOf(param))
End If
If secondParam is Nothing
Throw New Exception($"{NameOf(secondParam)} should be valid")
End If
End Sub
----
=== Exceptions
* The rule doesn't raise any issue when using VB.NET < 14.0.
* When the parameter name is contained in a sentence inside the ``++Throw++`` statement string, the rule will raise an issue only if the parameter name is at least 5 characters long. This is to avoid false positives.
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]