-
Type:
Code Smell Detection
-
Status: Active
-
Resolution: Unresolved
-
Labels:
-
Message:Replace this ["switch"|"CASE"|"Select Case"] statement with ["if"|"IF"|"If"] statements to increase readability.
-
Default Severity:Minor
-
Impact:Low
-
Likelihood:Low
-
Default Quality Profiles:Sonar way
-
Targeted languages:Cobol, PL/I, RPG
-
Covered Languages:ABAP, C#, C, C++, Flex, Java, JavaScript, Objective-C, PHP, Swift, TypeScript, VB.Net, VB6
-
Irrelevant for Languages:Go, HTML, PL/SQL, Python, T-SQL, XML
-
Remediation Function:Constant/Issue
-
Constant Cost:5min
-
Analysis Level:Syntactic Analysis
-
Analysis Scope:Main Sources, Test Sources
-
Common Rule:Yes
-
ESLint-SonarJS:no-small-switch
-
PC-Lint:764, 1764, 483, 1483
-
PMD:TooFewBranchesForASwitchStatement
-
TSLint-SonarTS:no-small-switch
switch statements are useful when there are many different cases depending on the value of the same expression.
For just one or two cases however, the code will be more readable with if statements.
Noncompliant Code Example
switch (variable) { case 0: doSomething(); break; default: doSomethingElse(); break; }
Compliant Solution
if (variable == 0) { doSomething(); } else { doSomethingElse(); }
- deprecates
-
RSPEC-921 Each switch statement should have at least one "case"
- Closed
- is implemented by
-
SONARCOBOL-1494 Rule: "switch" statements should have at least 3 "case" clauses
-
- Open
-
-
SONARPLI-171 Rule: "switch" statements should have at least 3 "case" clauses
-
- Open
-
-
SONARRPG-169 Rule: "switch" statements should have at least 3 "case" clauses
-
- Open
-
-
CPP-604 Rule: switch statements should have at least 3 case clauses
-
- Closed
-
-
SONARABAP-232 Rule: ["switch"|"CASE"] statements should have at least 3 ["case"|"WHEN"] clauses
-
- Closed
-
-
SONARSWIFT-66 Rule: "switch" statements should have at least 3 "case" clauses
-
- Closed
-
-
SONARVB-287 Rule S1301: "switch" statements should have at least 3 "case" clauses
-
- Closed
-
-
SONARVBSIX-168 Rule: ["switch"|"CASE"|"Select Case"] statements should have at least 3 ["case"|"WHEN"|"Case"] clauses
-
- Closed
-
-
SONARVBSIX-250 Rule: "switch" statements should have at least 3 "case" clauses
-
- Closed
-
-
CPP-707 Create Objective-C rules repository containing targeted rules
-
- Closed
-
- is related to
-
CPP-2437 S1301: Fix false-positives by reducing the number of catch to 2
-
- Closed
-
-
RSPEC-920 Switch statement conditions should not have essentially boolean type
- Active
-
RSPEC-5309 Every switch statement shall have at least one case-clause
- Active
- links to
1.
|
C# | RSPEC-2828 |
|
Active | Unassigned | |
2.
|
PHP | RSPEC-3189 |
|
Active | Unassigned | |
3.
|
VB6: "Select Case" statements should have at least 3 "Case" clauses | RSPEC-3190 |
|
Active | Unassigned | |
4.
|
ABAP: "CASE statements should have at least 3 "WHEN" clauses | RSPEC-3191 |
|
Active | Unassigned | |
5.
|
Swift | RSPEC-3192 |
|
Active | Unassigned | |
6.
|
C-Family | RSPEC-3690 |
|
Active | Unassigned | |
7.
|
JavaScript | RSPEC-3913 |
|
Active | Unassigned | |
8.
|
VB.NET "Select" statements should have at least 3 "Case" clauses | RSPEC-4865 |
|
Active | Unassigned |