規則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