规则squid:128似乎存在以防止在开关盒中出现故障,除非明确声明。这似乎是一个合理的规则,因为它是一个失败的突破声明是一个常见的错误。Sonar,S128:开关盒应该以无条件的“break”语句结束VS继续
然而,通缉是完全有效的,当需要。
这条规则的文档指出,实现落空的唯一方法是使用继续
case 4: // Use of continue statement
continue;
我还检查SwitchCaseWithoutBreakCheck的源代码是实现真正检查“继续”的声明
@Override
public void visitContinueStatement(ContinueStatementTree tree) {
super.visitContinueStatement(tree);
markSwitchCasesAsCompliant();
}
但是,Java语言不支持在switch/case中继续。在线文档和./java-checks/src/test/files/checks/SwitchCaseWithoutBreakCheck.java都不是有效的Java程序。
我是否错过了一些东西,或者这个规则是完全破坏的,并且防止使用fall-through?
感谢您创建票证。我同意允许或禁止穿越是主观的。但是,如果S128的目标是禁止掉头,我相信文件应该更清楚地说明。如果不是,那么能够明确说明给定的突破是有意的(IIRC有可能在某个时候使用特定的尾随评论)将是非常好的。禁用规则并将问题标记为误报都不能使读者明确地明白。 [注:我更愿意直接参与Jira,但似乎不可能创建一个帐户] –
因此,以及**可以如何实现所需的'/ * FALLTHROUGH * /'(lint for C语法)? – mirabilos