diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
index 690a358..16074bb 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
@@ -425,6 +425,7 @@
                         deviceService.isAvailable(event.subject().id())) {
                     setupDefaultFlows();
                 }
+                break;
             default:
                 break;
             }
diff --git a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackRestHandler.java b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackRestHandler.java
index 9065bc5..599b7e6 100644
--- a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackRestHandler.java
+++ b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackRestHandler.java
@@ -78,7 +78,7 @@
             OpenstackNetworkCodec networkCodec = new OpenstackNetworkCodec();
             networkList.forEach(n -> openstackNetworks.add(networkCodec.decode((ObjectNode) n, null)));
         } catch (IOException e) {
-            e.printStackTrace();
+            log.warn("getNetworks()", e);
         }
 
         log.debug("networks response:" + response);
@@ -106,7 +106,7 @@
             OpenstackPortCodec portCodec = new OpenstackPortCodec();
             portList.forEach(p -> openstackPorts.add(portCodec.decode((ObjectNode) p, null)));
         } catch (IOException e) {
-            e.printStackTrace();
+            log.warn("getPorts()", e);
         }
 
         log.debug("port response:" + response);
@@ -134,7 +134,7 @@
             OpenstackSubnetCodec subnetCodec = new OpenstackSubnetCodec();
             subnetList.forEach(s -> subnets.add(subnetCodec.decode((ObjectNode) s, null)));
         } catch (IOException e) {
-            e.printStackTrace();
+            log.warn("getSubnets()", e);
         }
 
         log.debug("subnets response:" + response);
@@ -163,7 +163,7 @@
                 ObjectNode node = (ObjectNode) mapper.readTree(response);
                 tokenId = node.path("access").path("token").path("id").asText();
             } catch (IOException e) {
-                e.printStackTrace();
+                log.warn("getToken()", e);
             }
             log.debug("token response:" + response);
         }
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java
index 09d4a43..221fc99 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java
@@ -184,7 +184,7 @@
                 intentsToAdd.add(localIntent);
             } else {
                 IntentState state = intentService.getIntentState(serviceIntent.key());
-                if (!IntentUtils.equals(serviceIntent, localIntent) || state == null ||
+                if (!IntentUtils.intentsAreEqual(serviceIntent, localIntent) || state == null ||
                         state == IntentState.WITHDRAW_REQ ||
                         state == IntentState.WITHDRAWING ||
                         state == IntentState.WITHDRAWN) {
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java
index edc2df4..b558c79 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java
@@ -135,7 +135,7 @@
 
             buildSpeakerIntents(bgpSpeaker).forEach(i -> {
                 PointToPointIntent intent = existingIntents.remove(i.key());
-                if (intent == null || !IntentUtils.equals(i, intent)) {
+                if (intent == null || !IntentUtils.intentsAreEqual(i, intent)) {
                     peerIntents.put(i.key(), i);
                     intentSynchronizer.submit(i);
                 }
diff --git a/apps/sdnip/src/test/java/org/onosproject/sdnip/IntentSyncTest.java b/apps/sdnip/src/test/java/org/onosproject/sdnip/IntentSyncTest.java
index 4736aa1..1265cc1 100644
--- a/apps/sdnip/src/test/java/org/onosproject/sdnip/IntentSyncTest.java
+++ b/apps/sdnip/src/test/java/org/onosproject/sdnip/IntentSyncTest.java
@@ -216,7 +216,7 @@
         // Compose a intent, which is equal to intent5 but the id is different.
         MultiPointToSinglePointIntent intent5New =
                 staticIntentBuilder(intent5, routeEntry5, "00:00:00:00:00:01");
-        assertThat(IntentUtils.equals(intent5, intent5New), is(true));
+        assertThat(IntentUtils.intentsAreEqual(intent5, intent5New), is(true));
         assertFalse(intent5.equals(intent5New));
 
         MultiPointToSinglePointIntent intent6 = intentBuilder(
diff --git a/apps/sdnip/src/test/java/org/onosproject/sdnip/TestIntentServiceHelper.java b/apps/sdnip/src/test/java/org/onosproject/sdnip/TestIntentServiceHelper.java
index 4df7f9d..da17c78 100644
--- a/apps/sdnip/src/test/java/org/onosproject/sdnip/TestIntentServiceHelper.java
+++ b/apps/sdnip/src/test/java/org/onosproject/sdnip/TestIntentServiceHelper.java
@@ -84,7 +84,7 @@
             Intent providedIntent = (Intent) object;
             providedString = providedIntent.toString();
 
-            return IntentUtils.equals(intent, providedIntent);
+            return IntentUtils.intentsAreEqual(intent, providedIntent);
         }
     }
 
diff --git a/apps/test/messaging-perf/src/main/java/org/onosproject/messagingperf/MessagingPerfApp.java b/apps/test/messaging-perf/src/main/java/org/onosproject/messagingperf/MessagingPerfApp.java
index 8b41bd5..a0bc7d5 100644
--- a/apps/test/messaging-perf/src/main/java/org/onosproject/messagingperf/MessagingPerfApp.java
+++ b/apps/test/messaging-perf/src/main/java/org/onosproject/messagingperf/MessagingPerfApp.java
@@ -310,7 +310,7 @@
                 messageSendingExecutor.submit(this::requestReply);
             });
         } catch (Exception e) {
-            e.printStackTrace();
+            log.info("requestReply()", e);
         }
     }
 
@@ -323,7 +323,7 @@
                     encoder,
                     randomPeer());
         } catch (Exception e) {
-            e.printStackTrace();
+            log.info("unicast()", e);
         }
         messageSendingExecutor.submit(this::unicast);
     }
@@ -336,7 +336,7 @@
                     TEST_UNICAST_MESSAGE_TOPIC,
                     encoder);
         } catch (Exception e) {
-            e.printStackTrace();
+            log.info("broadcast()", e);
         }
         messageSendingExecutor.submit(this::broadcast);
     }
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddTestFlowsCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddTestFlowsCommand.java
index e1e158a..4a741ed 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddTestFlowsCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddTestFlowsCommand.java
@@ -63,6 +63,7 @@
     String numOfRuns = null;
 
     @Override
+    @java.lang.SuppressWarnings("squid:S1148")
     protected void execute() {
         FlowRuleService flowService = get(FlowRuleService.class);
         DeviceService deviceService = get(DeviceService.class);
diff --git a/cli/src/main/java/org/onosproject/cli/security/ReviewCommand.java b/cli/src/main/java/org/onosproject/cli/security/ReviewCommand.java
index 9d17eb2..cf24e01 100644
--- a/cli/src/main/java/org/onosproject/cli/security/ReviewCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/security/ReviewCommand.java
@@ -114,6 +114,7 @@
                         print("\t[Other] " + perm.getClass().getSimpleName() +
                                 " " + perm.getName() + " (" + perm.getActions() + ")");
                     }
+                    break;
                 default:
                     break;
             }
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java b/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java
index f6e33b6..dd77a9a 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java
@@ -42,7 +42,7 @@
      * @param two second intent
      * @return true if the two intents represent the same value, otherwise false
      */
-    public static boolean equals(Intent one, Intent two) {
+    public static boolean intentsAreEqual(Intent one, Intent two) {
         if (one.getClass() != two.getClass()) {
             return false;
         }
diff --git a/core/security/src/main/java/org/onosproject/security/store/DistributedSecurityModeStore.java b/core/security/src/main/java/org/onosproject/security/store/DistributedSecurityModeStore.java
index ac16966..925298c 100644
--- a/core/security/src/main/java/org/onosproject/security/store/DistributedSecurityModeStore.java
+++ b/core/security/src/main/java/org/onosproject/security/store/DistributedSecurityModeStore.java
@@ -232,6 +232,7 @@
                         break;
                     case SECURED:
                         notifyDelegate(new SecurityModeEvent(SecurityModeEvent.Type.POLICY_ACCEPTED, appId));
+                        break;
                     default:
                         break;
                 }
@@ -312,4 +313,4 @@
     public void unsetDelegate(SecurityModeStoreDelegate delegate) {
         super.setDelegate(delegate);
     }
-}
\ No newline at end of file
+}
diff --git a/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java b/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java
index 2f591d3..493ac2f 100644
--- a/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java
+++ b/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java
@@ -87,8 +87,7 @@
         try {
             sendHandshakeOFExperimenterPortDescRequest();
         } catch (IOException e) {
-            log.error("Exception while sending experimenter port desc:", e.getMessage());
-            e.printStackTrace();
+            log.error("Exception while sending experimenter port desc:", e);
         }
 
     }
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
index 1dcf48f..1e79860 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
@@ -223,7 +223,7 @@
             JsonNode jsonNode = input.get(i);
             Operation operation = operations.get(i);
             if (jsonNode != null && jsonNode.size() > 0) {
-                if (i >= operations.size() || operation.getOp() != "select") {
+                if (i >= operations.size() || !operation.getOp().equals("select")) {
                     OperationResult or = objectMapper.convertValue(jsonNode, OperationResult.class);
                     operationResults.add(or);
                 } else {
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
index b37cb42..7b1828d 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
@@ -488,7 +488,7 @@
                                               + " tell us which one.");
                         }
                     }
-
+                    break;
                 default:
                     log.debug("Unhandled message type: {}", msg.getType());
             }
diff --git a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
index 3e3e17a..b2ced25 100644
--- a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
+++ b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
@@ -36,6 +36,7 @@
  * Produces ONOS component configuration catalogue resources.
  */
 @Mojo(name = "cfg", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+@java.lang.SuppressWarnings("squid:S1148")
 public class OnosCfgMojo extends AbstractMojo {
 
     private static final String COMPONENT = "org.apache.felix.scr.annotations.Component";
diff --git a/utils/misc/src/main/java/org/onlab/packet/pim/PIMHelloOption.java b/utils/misc/src/main/java/org/onlab/packet/pim/PIMHelloOption.java
index bf021fb..1ea0ba8 100644
--- a/utils/misc/src/main/java/org/onlab/packet/pim/PIMHelloOption.java
+++ b/utils/misc/src/main/java/org/onlab/packet/pim/PIMHelloOption.java
@@ -85,6 +85,7 @@
             case OPT_ADDRLIST:
                 this.optLength = 0;   // We don't know what the length will be yet.
                 this.optValue = null;
+                break;
 
             default:
                 //log.error("Unkown option type: " + type + "\n" );
