diff --git a/rules/S907/vb6/rule.adoc b/rules/S907/vb6/rule.adoc index 1395593eda8..7bbd1d1d209 100644 --- a/rules/S907/vb6/rule.adoc +++ b/rules/S907/vb6/rule.adoc @@ -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[]