-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
975c89f
commit 05cc2be
Showing
2 changed files
with
31 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,24 @@ | ||
{ | ||
"title": "FIXME", | ||
"title": "\"GoSub\" statements should not be used", | ||
"type": "CODE_SMELL", | ||
"status": "ready", | ||
"remediation": { | ||
"func": "Constant\/Issue", | ||
"constantCost": "5min" | ||
"constantCost": "10min" | ||
}, | ||
"tags": [ | ||
"brain-overload" | ||
], | ||
"defaultSeverity": "Major", | ||
"ruleSpecification": "RSPEC-7173", | ||
"sqKey": "S7173", | ||
"scope": "All", | ||
"defaultQualityProfiles": ["Sonar way"], | ||
"quickfix": "unknown", | ||
"quickfix": "infeasible", | ||
"code": { | ||
"impacts": { | ||
"MAINTAINABILITY": "HIGH", | ||
"RELIABILITY": "MEDIUM", | ||
"SECURITY": "LOW" | ||
"MAINTAINABILITY": "MEDIUM" | ||
}, | ||
"attribute": "CONVENTIONAL" | ||
"attribute": "CLEAR" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,47 @@ | ||
FIXME: add a description | ||
== Why is this an issue? | ||
|
||
// If you want to factorize the description uncomment the following line and create the file. | ||
//include::../description.adoc[] | ||
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. | ||
|
||
== Why is this an issue? | ||
Modern programming practices recommend using proper subroutine or function calls instead, which provide better readability, maintainability, and error handling. | ||
|
||
FIXME: remove the unused optional headers (that are commented out) | ||
=== Exceptions | ||
|
||
//=== What is the potential impact? | ||
`On Error GoSub` statements are ignored as correct error handling. | ||
|
||
== How to fix it | ||
//== How to fix it in FRAMEWORK NAME | ||
|
||
Replace `GoSub` statements with proper subroutine or function calls. | ||
|
||
=== Code examples | ||
|
||
==== Noncompliant code example | ||
|
||
[source,vb6,diff-id=1,diff-type=noncompliant] | ||
---- | ||
FIXME | ||
Sub ExampleProcedure() | ||
GoSub SubRoutine | ||
Exit Sub | ||
SubRoutine: | ||
' ... | ||
Return | ||
End Sub | ||
---- | ||
|
||
==== Compliant solution | ||
|
||
[source,vb6,diff-id=1,diff-type=compliant] | ||
---- | ||
FIXME | ||
---- | ||
Sub ExampleProcedure() | ||
Call SubRoutine | ||
End Sub | ||
//=== How does this work? | ||
|
||
//=== Pitfalls | ||
|
||
//=== Going the extra mile | ||
Sub SubRoutine() | ||
' ... | ||
End Sub | ||
---- | ||
|
||
== Resources | ||
=== Documentation | ||
|
||
//== Resources | ||
//=== Documentation | ||
//=== Articles & blog posts | ||
//=== Conference presentations | ||
//=== Standards | ||
//=== External coding guidelines | ||
//=== Benchmarks | ||
* Microsoft Learn - https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/gosubreturn-statement[GoSub...Return statement] |