From 9bbffa71b3674e0f39db147e14db76a7db9fe474 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 3 Feb 2015 12:17:49 +0900 Subject: [PATCH] RFC: Enable Eclipse warning about fall-through cases in switch statements Enable the "'switch' case fall-through" warning in Eclipse to catch unintentional fall-through to the following 'case' block when a 'break' statement is omitted. All warnings raised in the current codebase are caused by intentional fall-throughs, so add "//$FALL-THROUGH$" comments to suppress those warnings. This change was inspired by the coverity report [1] which found the problem in PutConfig (see CID 19880) but interestingly did not report anything for the other ones. RFC because I'm not sure if the "//$FALL-THROUGH$" comments will cause the warnings to be suppressed on subsequent coverity scans. [1] https://scan.coverity.com/projects/4032 Change-Id: Iad003bd7d086c67cccdbfb1312c8bd82d17fcc57 --- .settings/org.eclipse.jdt.core.prefs | 2 +- .../src/main/java/com/google/gerrit/server/change/Submit.java | 1 + .../main/java/com/google/gerrit/server/git/ReceiveCommits.java | 1 + .../java/com/google/gerrit/server/project/CreateBranch.java | 1 + .../main/java/com/google/gerrit/server/project/PutConfig.java | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 286d59b2c2..0fa494d319 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -17,7 +17,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod= org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=warning org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled org.eclipse.jdt.core.compiler.problem.fieldHiding=warning org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java index 2642831ea9..6891fc7c31 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java @@ -227,6 +227,7 @@ public class Submit implements RestModifyView, if (msg != null) { throw new ResourceConflictException(msg.getMessage()); } + //$FALL-THROUGH$ default: throw new ResourceConflictException("change is " + status(change)); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index fd424d5714..5959b1d71e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -1733,6 +1733,7 @@ public class ReceiveCommits { addMessage("Change " + c.getChangeId() + ": " + msg.getMessage()); break; } + //$FALL-THROUGH$ default: addMessage("change " + c.getChangeId() + " is " + c.getStatus().name().toLowerCase()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java index 983549d059..834dba5a15 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java @@ -166,6 +166,7 @@ public class CreateBranch implements RestModifyView { } refPrefix = getRefPrefix(refPrefix); } + //$FALL-THROUGH$ default: { throw new IOException(result.name()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java index 33252e8e3b..ca15287728 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java @@ -253,6 +253,7 @@ public class PutConfig implements RestModifyView { "The value '%s' is not permitted for parameter '%s' of plugin '" + pluginName + "'", value, v.getKey())); } + //$FALL-THROUGH$ case STRING: cfg.setString(v.getKey(), value); break;