规则Squid:128似乎存在是为了防止在switch case语句中发生穿透现象,除非明确说明。这似乎是一个合理的规则,因为忘记break是一个常见的错误。
然而,当需要时,穿透现象是完全有效的。
该规则的文档说明了实现穿透现象的唯一方法是使用continue。
case 4: // Use of continue statement
continue;
我也检查了SwitchCaseWithoutBreakCheck的源代码,确实检查了"continue"语句的实现
@Override
public void visitContinueStatement(ContinueStatementTree tree) {
super.visitContinueStatement(tree);
markSwitchCasesAsCompliant();
}
然而,Java语言不支持在switch/case中使用continue。在线文档和./java-checks/src/test/files/checks/SwitchCaseWithoutBreakCheck.java都不是有效的Java程序。
我是否漏掉了什么,还是这个规则完全失效并且防止使用穿透?
/* FALLTHROUGH */
(用于 C 语法的 lint)呢? - mirabilos