BSL199 — Else...The...ElseIf... statement should end with Else branch¶
Summary¶
Else...The...ElseIf... statement should end with Else branch
Identifiers¶
| Field | Value |
|---|---|
| Rule code | BSL199 |
| Compatible alias | IfElseIfEndsWithElse |
| Severity | INFORMATION |
| Enabled by default | Yes |
| Implemented | Yes |
| Tags | design, robustness |
Behavior¶
- The public identifier
BSL199and aliasIfElseIfEndsWithElseare stable. - The rule reports the cases documented on this page.
- Suppressions and project configuration are applied before publication.
- The rule requires neither an external analyzer nor network access.
Configuration and suppression¶
BSL### is the primary stable identifier. The compatible alias is accepted
in select, ignore, and compatible block suppression comments.
All three suppression families support both a current line and a range. When an opening comment follows code, it affects only that line. Use any one form:
noqa:
bsl-disable:
- compatible
BSLLSform:
When the same opening comment is on a line by itself, it starts a range. Close it with the matching marker from the same family:
// noqa: BSL199
// code without this diagnostic
// noqa-enable: BSL199
// bsl-disable: BSL199
// code without this diagnostic
// bsl-enable: BSL199
// BSLLS:IfElseIfEndsWithElse-off
// code without this diagnostic
// BSLLS:IfElseIfEndsWithElse-on
To disable the rule until the end of the file, omit the closing
noqa-enable, bsl-enable, or BSLLS:…-on marker.
Opening and closing markers must belong to the same family.
Description¶
The rule is applied whenever the conditional operator If Then ElseIf contains one or more blocks ElseIf . After block ElseIf must be followed by block Else.
The requirement to the final blockElse - it protective programming. Such constructions are resistant to possible changes and do not mask possible errors.
The construct Else must either take appropriate action or contain a suitable comment as to why no action is being taken.
Examples¶
Incorrect:
If TypeOf(InputParameter) = Type("Structure") Then
Result = FillByStructure(InputParameter);
ElsIf TypeOf(InputParameter) = Type("Document.Ref.MajorDocument") Then
Result = FillByDocument(InputParameter);
EndIf;
Correct: