Skip to content

Commit

Permalink
Create rule S7173: "GoSub" statements should not be used (#4580)
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored Dec 20, 2024
1 parent 5adea70 commit 98e58e1
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
2 changes: 2 additions & 0 deletions rules/S7173/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}
24 changes: 24 additions & 0 deletions rules/S7173/vb6/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"title": "\"GoSub\" statements should not be used",
"type": "CODE_SMELL",
"status": "ready",
"remediation": {
"func": "Constant\/Issue",
"constantCost": "10min"
},
"tags": [
"brain-overload"
],
"defaultSeverity": "Major",
"ruleSpecification": "RSPEC-7173",
"sqKey": "S7173",
"scope": "All",
"defaultQualityProfiles": ["Sonar way"],
"quickfix": "infeasible",
"code": {
"impacts": {
"MAINTAINABILITY": "MEDIUM"
},
"attribute": "CLEAR"
}
}
43 changes: 43 additions & 0 deletions rules/S7173/vb6/rule.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
== Why is this an issue?

The `GoSub` statement in VB6 is an unstructured control flow statement. It can lead to complex and difficult-to-maintain code, as well as potential stack overflow errors due to improper return handling.

Modern programming practices recommend using proper subroutine or function calls instead, which provide better readability, maintainability, and error handling.

== How to fix it

Replace `GoSub` statements with proper subroutine or function calls.

=== Code examples

==== Noncompliant code example

[source,vb6,diff-id=1,diff-type=noncompliant]
----
Sub ExampleProcedure()
GoSub SubRoutine
Exit Sub
SubRoutine:
' ...
Return
End Sub
----

==== Compliant solution

[source,vb6,diff-id=1,diff-type=compliant]
----
Sub ExampleProcedure()
Call SubRoutine
End Sub
Sub SubRoutine()
' ...
End Sub
----

== Resources
=== Documentation

* Microsoft Learn - https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/gosubreturn-statement[GoSub...Return statement]

0 comments on commit 98e58e1

Please sign in to comment.