diff --git a/src/usb-dbg.cpp b/src/usb-dbg.cpp
index 4ec6a3d..33584c4 100644
--- a/src/usb-dbg.cpp
+++ b/src/usb-dbg.cpp
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#include <usb-dbg.hpp>
 #include <commandutils.hpp>
+#include <usb-dbg.hpp>
 
 namespace ipmi
 {
@@ -48,11 +48,11 @@
     try
     {
         std::shared_ptr<sdbusplus::asio::connection> dbus = getSdBus();
-        std::string service =
-            getService(*dbus, ipmi::selector::interface, ipmi::selector::path);
-        Value variant =
-            getDbusProperty(*dbus, service, ipmi::selector::path,
-                            ipmi::selector::interface, "MaxPosition");
+        std::string service = getService(*dbus, ipmi::selector::interface,
+                                         ipmi::selector::path);
+        Value variant = getDbusProperty(*dbus, service, ipmi::selector::path,
+                                        ipmi::selector::interface,
+                                        "MaxPosition");
         maxPosition = std::get<size_t>(variant);
     }
     catch (const std::exception& e)
@@ -68,8 +68,8 @@
     try
     {
         std::shared_ptr<sdbusplus::asio::connection> dbus = getSdBus();
-        std::string service =
-            getService(*dbus, ipmi::selector::interface, ipmi::selector::path);
+        std::string service = getService(*dbus, ipmi::selector::interface,
+                                         ipmi::selector::path);
         Value variant = getDbusProperty(*dbus, service, ipmi::selector::path,
                                         ipmi::selector::interface, "Position");
         hostPosition = std::get<size_t>(variant);
@@ -507,8 +507,8 @@
             {
                 if (postObj.size() != phase)
                 {
-                    std::string nextPhaseStr =
-                        "Phase" + std::to_string(phase + 1);
+                    std::string nextPhaseStr = "Phase" +
+                                               std::to_string(phase + 1);
                     postCode = postObj[nextPhaseStr][0][0];
                     *next = stoul(postCode, nullptr, 16);
                     *end = 0;
@@ -751,8 +751,8 @@
                     senStr += unitStr;
 
                 std::string thresholdStr;
-                int ret =
-                    ipmi::storage::getSensorThreshold(senName, thresholdStr);
+                int ret = ipmi::storage::getSensorThreshold(senName,
+                                                            thresholdStr);
                 if (ret < 0)
                 {
                     phosphor::logging::log<phosphor::logging::level::ERR>(
