← 返回首页
Non-case label in switch statement — CodeQL query help documentation CodeQL docs
CodeQL documentation
CodeQL resources

Non-case label in switch statement

ID: java/label-in-switch Kind: problem Security severity: Severity: recommendation Precision: very-high Tags: - quality - maintainability - readability Query suites: - java-code-quality.qls

Click to see the query in the CodeQL repository

Overview

Java allows to freely mix case labels and ordinary statement labels in the body of a switch statement. However, this is confusing to read and may be the result of a typo.

Recommendation

Examine the non-case labels to see whether they were meant to be case labels. If not, consider placing the non-case label headed code into a function, and use a function call inline in the switch body instead.

Example

public class Test { void test_noncase_label_in_switch(int p) { switch (p) { case 1: // Compliant case2: // Non-compliant, likely a typo break; case 3: notcaselabel: // Non-compliant, confusing to read for (;;) { break notcaselabel; } } } }

In the example, case2 is most likely a typo and should be fixed. For the intentional notcaselabel, placing the labelled code into a function and then calling that function is more readable.

References

CodeQL query help for JavaScript and TypeScript - Non-case label in switch statement.