Skip to content

"goto" statement should not be used (UsingGoto)

Type Scope Severity Activated
by default
Minutes
to fix
Tags
Code smell BSL
OS
Critical Yes 5 standard
badpractice

Description

goto is an unstructured control flow statement. It makes code less readable and maintainable.
Structured control flow statements such as if, for, while, continue or break should be used instead.

Examples

Bad:

I = 0;
 ~loop: Message(StrTemplate("i = %1", i));
 i = i + 1;

 If i < 10 Then

     Goto ~Loop;

 EndIf;

Good:

For Counter = 0 To 10 Do

   Message(StrTemplate("Counter = %1", Counter))

EndDo;

Sources

Snippets

Diagnostic ignorance in code

// BSLLS:UsingGoto-off
// BSLLS:UsingGoto-on

Parameter for config

"UsingGoto": false