diff --git a/apps/dhcp/src/main/java/org/onosproject/dhcp/DhcpStore.java b/apps/dhcp/src/main/java/org/onosproject/dhcp/DhcpStore.java
index afdc08d..4e2d67d 100644
--- a/apps/dhcp/src/main/java/org/onosproject/dhcp/DhcpStore.java
+++ b/apps/dhcp/src/main/java/org/onosproject/dhcp/DhcpStore.java
@@ -37,6 +37,7 @@
      * Returns an IP Address for a Mac ID, in response to a DHCP DISCOVER message.
      *
      * @param macID Mac ID of the client requesting an IP
+     * @param requestedIP requested IP address
      * @return IP address assigned to the Mac ID
      */
     Ip4Address suggestIP(MacAddress macID, Ip4Address requestedIP);
diff --git a/apps/dhcp/src/main/java/org/onosproject/dhcp/IpAssignment.java b/apps/dhcp/src/main/java/org/onosproject/dhcp/IpAssignment.java
index 4fb0f09..c8bd190 100644
--- a/apps/dhcp/src/main/java/org/onosproject/dhcp/IpAssignment.java
+++ b/apps/dhcp/src/main/java/org/onosproject/dhcp/IpAssignment.java
@@ -128,6 +128,7 @@
     /**
      * Creates and returns a new builder instance that clones an existing IPAssignment.
      *
+     * @param assignment ip address assignment
      * @return new builder
      */
     public static Builder builder(IpAssignment assignment) {
diff --git a/apps/dhcp/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java b/apps/dhcp/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java
index 38df577..bfa2767 100644
--- a/apps/dhcp/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java
+++ b/apps/dhcp/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java
@@ -104,6 +104,7 @@
      * Post a new static MAC/IP binding.
      * Registers a static binding to the DHCP server, and displays the current set of bindings.
      *
+     * @param stream JSON stream
      * @return 200 OK
      */
     @POST
@@ -139,6 +140,7 @@
      * Delete a static MAC/IP binding.
      * Removes a static binding from the DHCP Server, and displays the current set of bindings.
      *
+     * @param macID mac address identifier
      * @return 200 OK
      */
     @DELETE
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 e0e9faf..35ff705 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java
@@ -102,6 +102,7 @@
      * @param intentService the intent service
      * @param hostService the host service
      * @param configService the SDN-IP configuration service
+     * @param interfaceService the interface service
      */
     IntentSynchronizer(ApplicationId appId, IntentService intentService,
                        HostService hostService,
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 1e9db5b..459db2b 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/PeerConnectivityManager.java
@@ -67,6 +67,8 @@
      * @param appId              the application ID
      * @param intentSynchronizer the intent synchronizer
      * @param configService      the SDN-IP config service
+     * @param interfaceService   the interface service
+     * @param routerAppId        application ID
      */
     public PeerConnectivityManager(ApplicationId appId,
                                    IntentSynchronizer intentSynchronizer,
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
index 257b42a..cdc53a0 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
@@ -65,7 +65,7 @@
      * @param input JSON stream for policy to create
      * @return status of the request - OK if the policy is created,
      * INTERNAL_SERVER_ERROR if the JSON is invalid or the policy cannot be created
-     * @throws IOException
+     * @throws IOException if JSON processing fails
      */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
index a4176b1..0dbbb451 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
@@ -344,6 +344,7 @@
 
         /**
          * @deprecated in Drake Release.
+         * @return integer value of label
          */
         // Consider changing return value to MplsLabel
         // after deprecation process so that it'll be symmetric to
diff --git a/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java b/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java
index cd4d514..0758232 100644
--- a/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java
+++ b/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java
@@ -90,6 +90,7 @@
 
     /**
      * Tells controller that we're ready to accept ovsdb node loop.
+     * @throws InterruptedException if thread is interrupted
      */
     public void run() throws InterruptedException {
         initEventLoopGroup();
diff --git a/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java b/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java
index 2e53f67..aceb7ea 100644
--- a/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java
+++ b/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java
@@ -181,6 +181,7 @@
      * Reads channel buffer and returns object of Remote TE Node Descriptors TLV.
      *
      * @param c input channel buffer
+     * @param length length of buffer
      * @return object of RemoteTENodeDescriptorsTLV
      * @throws PcepParseException if mandatory fields are missing
      */
diff --git a/providers/netconf/flow/src/main/java/org/onosproject/provider/netconf/flow/impl/NetconfOperation.java b/providers/netconf/flow/src/main/java/org/onosproject/provider/netconf/flow/impl/NetconfOperation.java
index 457b9c0..d03e75a 100644
--- a/providers/netconf/flow/src/main/java/org/onosproject/provider/netconf/flow/impl/NetconfOperation.java
+++ b/providers/netconf/flow/src/main/java/org/onosproject/provider/netconf/flow/impl/NetconfOperation.java
@@ -43,6 +43,11 @@
 
     /**
      * This will send a Xml message to the device.
+     * @param xmlMsg XML to send
+     * @param username user name
+     * @param password pass word
+     * @param deviceIp ip address of the device
+     * @param devicePort port on the device
      */
     protected void sendXmlMessage(String xmlMsg, String username,
                                   String password, String deviceIp,
@@ -105,10 +110,18 @@
 
     /**
      * To establish SSH Connection.
+     *
+     * @param username user name
+     * @param password pass word
+     * @param sshHost host
+     * @param sshPort port
+     * @return new SSH connection
+     * @throws IOException if connection fails
+     * @throws JNCException if connection causes an error
      */
     public SSHConnection getConnection(String username, String password,
                                        String sshHost, Integer sshPort)
-            throws Exception {
+            throws IOException, JNCException {
         SSHConnection sshConnection;
         try {
             sshConnection = new SSHConnection(sshHost, sshPort);
diff --git a/utils/misc/src/main/java/org/onlab/packet/IGMPMembership.java b/utils/misc/src/main/java/org/onlab/packet/IGMPMembership.java
index 174bd6f..495e283 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IGMPMembership.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IGMPMembership.java
@@ -78,8 +78,8 @@
      *
      * @param bb the ByteBuffer wrapping the serialized message.  The position of the
      *           ByteBuffer should be pointing at the head of either message type.
-     * @return
-     * @throws DeserializationException
+     * @return IGMP Group
+     * @throws DeserializationException if deserialization fails
      */
     public IGMPGroup deserialize(ByteBuffer bb) throws DeserializationException {
 
@@ -155,4 +155,4 @@
         result = prime * result + this.sources.hashCode();
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java b/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
index 378ca10..bb53eba 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
@@ -63,7 +63,7 @@
     /**
      * Get the Querier Robustness Variable.
      *
-     * @return
+     * @return querier robustness value
      */
     public byte getQrv() {
         return qrv;
@@ -72,7 +72,7 @@
     /**
      * Set the Querier Robustness Variable. Default is 2.
      *
-     * @param qrv
+     * @param qrv new querier robustness value
      */
     public void setQrv(byte qrv) {
         this.qrv = qrv;
@@ -199,4 +199,4 @@
         result = prime * result + this.sources.hashCode();
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ConfigWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ConfigWebResource.java
index b0db475..1bf5fe9 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ConfigWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ConfigWebResource.java
@@ -15,15 +15,7 @@
  */
 package org.onosproject.rest.resources;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.host.HostProviderRegistry;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onlab.rest.BaseResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.io.InputStream;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -31,8 +23,17 @@
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
+
+import org.onlab.rest.BaseResource;
+import org.onosproject.net.device.DeviceProviderRegistry;
+import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.host.HostProviderRegistry;
+import org.onosproject.net.link.LinkProviderRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
 
@@ -49,13 +50,12 @@
      *
      * @param input JSON blob
      * @return 200 OK
-     * @throws IOException
      */
     @POST
     @Path("topology")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public Response topology(InputStream input) throws IOException {
+    public Response topology(InputStream input) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             JsonNode cfg = mapper.readTree(input);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
index 4dcaeb1..3d733f9 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
@@ -181,6 +181,7 @@
      * </ul>
      *
      * @param mode monitoring mode
+     * @param nodeSelection how to select a node
      */
     public synchronized void monitor(Mode mode, NodeSelection nodeSelection) {
         log.debug("monitor: {} -- {}", mode, nodeSelection);
