diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java b/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
index 3a8c8c1..0fcc800 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java
@@ -71,7 +71,7 @@
      */
     public DefaultDeviceDescription(DeviceDescription base,
                                     SparseAnnotations... annotations) {
-        this(base.deviceURI(), base.type(), base.manufacturer(),
+        this(base.deviceUri(), base.type(), base.manufacturer(),
              base.hwVersion(), base.swVersion(), base.serialNumber(),
              base.chassisId(), annotations);
     }
@@ -83,13 +83,13 @@
      * @param annotations Annotations to use.
      */
     public DefaultDeviceDescription(DeviceDescription base, Type type, SparseAnnotations... annotations) {
-        this(base.deviceURI(), type, base.manufacturer(),
+        this(base.deviceUri(), type, base.manufacturer(),
                 base.hwVersion(), base.swVersion(), base.serialNumber(),
                 base.chassisId(), annotations);
     }
 
     @Override
-    public URI deviceURI() {
+    public URI deviceUri() {
         return uri;
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java b/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java
index 64b84b5..f206b08 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java
@@ -33,7 +33,7 @@
      *
      * @return provider specific URI for the device
      */
-    URI deviceURI();
+    URI deviceUri();
 
     /**
      * Returns the type of the infrastructure device.
diff --git a/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java b/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
index 3dcdc22..c00a6de 100644
--- a/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
+++ b/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java
@@ -41,7 +41,7 @@
     public void basics() {
         DeviceDescription device =
                 new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID);
-        assertEquals("incorrect uri", DURI, device.deviceURI());
+        assertEquals("incorrect uri", DURI, device.deviceUri());
         assertEquals("incorrect type", SWITCH, device.type());
         assertEquals("incorrect manufacturer", MFR, device.manufacturer());
         assertEquals("incorrect hw", HW, device.hwVersion());
diff --git a/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java b/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java
index f54e741..15abc2b 100644
--- a/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java
+++ b/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java
@@ -57,7 +57,7 @@
     }
 
     @Test(expected = IOException.class)
-    public void badXML() throws IOException {
+    public void badXml() throws IOException {
         XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader());
         loader.loadDrivers(getClass().getResourceAsStream("drivers.bad.xml"), null);
     }
@@ -77,4 +77,4 @@
         driver.createBehaviour(new DefaultDriverData(driver, DEVICE_ID), TestBehaviour.class);
     }
 
-}
\ No newline at end of file
+}
diff --git a/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java b/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
index d77c1b2..b870d48 100644
--- a/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
+++ b/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
@@ -115,19 +115,19 @@
     }
 
     @Test
-    public void swEpisodeII() {
+    public void swEpisodeIi() {
         assertTrue("r2d2 c3po",
                    cmp.compare(SmallStarWars.R2D2, SmallStarWars.C3PO) > 0);
     }
 
     @Test
-    public void swEpisodeIII() {
+    public void swEpisodeIii() {
         assertTrue("luke c3po",
                    cmp.compare(SmallStarWars.LUKE, SmallStarWars.C3PO) > 0);
     }
 
     @Test
-    public void swEpisodeIV() {
+    public void swEpisodeIv() {
         assertTrue("c3po luke",
                    cmp.compare(SmallStarWars.C3PO, SmallStarWars.LUKE) < 0);
     }
@@ -139,7 +139,7 @@
     }
 
     @Test
-    public void swEpisodeVI() {
+    public void swEpisodeVi() {
         assertTrue("r2d2 luke",
                    cmp.compare(SmallStarWars.R2D2, SmallStarWars.LUKE) < 0);
     }
