Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modify rule S907: vb6 LaYC #4581

Merged
merged 1 commit into from
Dec 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 41 additions & 30 deletions rules/S907/vb6/rule.adoc
Original file line number Diff line number Diff line change
@@ -1,48 +1,59 @@
== Why is this an issue?

``++GoTo++`` is an unstructured control flow statement. It makes code less readable and maintainable. Structured control flow statements such as ``++If++``, ``++For++``, ``++While++``, or ``++Exit++`` should be used instead.
`GoTo` is an unstructured control flow statement. It makes code less readable and maintainable. Structured control flow statements such as `If`, `For`, `While`, or `Exit` should be used instead.

=== Noncompliant code example
=== Exceptions

`On Error GoTo` statements are ignored as correct error handling.

== How to fix it

Replace `GoTo` statements with structured control flow statements.

=== Code examples

==== Noncompliant code example

[source,vb6]
[source,vb6,diff-id=1,diff-type=noncompliant]
----
Sub gotoStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then GoTo Line1 Else GoTo Line2
Sub gotoStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
sampleString = "Number equals 1"
GoTo LastLine
sampleString = "Number equals 1"
GoTo LastLine
Line2:
' The following statement never gets executed because number = 1.
sampleString = "Number equals 2"
' The following statement never gets executed because number = 1.
sampleString = "Number equals 2"
LastLine:
' Write "Number equals 1" in the Debug window.
Debug.WriteLine(sampleString)
End Sub
' Write "Number equals 1" in the Debug window.
Debug.WriteLine(sampleString)
End Sub
----

=== Compliant solution
==== Compliant solution

[source,vb6]
[source,vb6,diff-id=1,diff-type=compliant]
----
Sub gotoStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then
sampleString = "Number equals 1"
Else
sampleString = "Number equals 2"
End If
Debug.WriteLine(sampleString)
End Sub
Sub gotoStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then
sampleString = "Number equals 1"
Else
sampleString = "Number equals 2"
End If
Debug.WriteLine(sampleString)
End Sub
----

=== Exceptions
== Resources
=== Documentation

``++On Error GoTo++`` statements are ignored as correct error handling.
* Microsoft Learn - https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/goto-statement[GoTo statement]

ifdef::env-github,rspecator-view[]

Expand Down
Loading