Create rule S6146: "Option Explicit" should be enabled (#4582)

* Add vb6 to rule S6146

* Add description

* Update description for LaYC

---------

Co-authored-by: thahnen <thahnen@users.noreply.github.com>
Co-authored-by: Tobi Hahnen <tobias.hahnen@sonarsource.com>
This commit is contained in:
github-actions[bot] 2024-12-18 16:32:34 +01:00 committed by GitHub
parent 1d97909d90
commit 38ffd02fc3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,2 @@
{
}

36
rules/S6146/vb6/rule.adoc Normal file
View File

@ -0,0 +1,36 @@
== Why is this an issue?
There are several compilations options available for Visual Basic source code and `Option Explicit` defines compiler behavior for implicit variable declarations. Not specifying `Option Explicit` will allow creating a variable by it's first usage. This behavior can lead to unexpected runtime errors due to typos in variable names.
== How to fix it
`Option Explicit` should be added to every individual source file.
=== Code examples
==== Noncompliant code example
[source,vb6,diff-id=1,diff-type=noncompliant]
----
Sub DoSomething(First As String, Second As String)
Parameter = Fist ' New local variable "Fist" is created and assigned to new local variable "Parameter" instead of "First" argument.
DoSomething(Parameter)
Parametr = Second ' "Second" argument is assigned to newly created variable "Parametr" instead of intended "Parameter".
DoSomething(Parameter) ' Value of "Parameter" is always Nothing
End Sub
----
==== Compliant solution
[source,vb6,diff-id=1,diff-type=compliant]
----
Option Explicit
Sub DoSomething(First As String, Second As String)
Dim Parameter As String = First
DoSomething(Parameter)
Parameter = Second
DoSomething(Parameter)
End Sub
----