diff --git a/include/commandutils.hpp b/include/commandutils.hpp
index f52b9b7..58b0b2d 100644
--- a/include/commandutils.hpp
+++ b/include/commandutils.hpp
@@ -79,10 +79,9 @@
     }
 }
 
-inline static void ipmiPrintAndRegister(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-                                        ipmi_context_t context,
-                                        ipmid_callback_t handler,
-                                        ipmi_cmd_privilege_t priv)
+inline static void ipmiPrintAndRegister(
+    ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_context_t context,
+    ipmid_callback_t handler, ipmi_cmd_privilege_t priv)
 {
     printRegistration(netfn, cmd);
     ipmi_register_callback(netfn, cmd, context, handler, priv);
diff --git a/include/oemcommands.hpp b/include/oemcommands.hpp
index 3893bdf..aedd592 100644
--- a/include/oemcommands.hpp
+++ b/include/oemcommands.hpp
@@ -167,9 +167,9 @@
            Bit3=0b: IPv4 first
            Bit3=1b: IPv6 first
 */
-std::map<std::string, int> bootMap = {{"USB_DEV", 0},  {"NET_IPV4", 1},
-                                      {"NET_IPV6", 9}, {"SATA_HDD", 2},
-                                      {"SATA_CD", 3},  {"OTHER", 4}};
+std::map<std::string, int> bootMap = {
+    {"USB_DEV", 0},  {"NET_IPV4", 1}, {"NET_IPV6", 9},
+    {"SATA_HDD", 2}, {"SATA_CD", 3},  {"OTHER", 4}};
 
 std::map<size_t, std::string> dimmVenMap = {
     {0xce, "Samsung"}, {0xad, "Hynix"}, {0x2c, "Micron"}};
diff --git a/include/sensorutils.hpp b/include/sensorutils.hpp
index 00e844d..766e9dc 100644
--- a/include/sensorutils.hpp
+++ b/include/sensorutils.hpp
@@ -77,10 +77,10 @@
         return false;
     }
     sdbusplus::bus_t dbus(bus);
-    auto mapperCall = dbus.new_method_call("xyz.openbmc_project.ObjectMapper",
-                                           "/xyz/openbmc_project/object_mapper",
-                                           "xyz.openbmc_project.ObjectMapper",
-                                           "GetSubTree");
+    auto mapperCall =
+        dbus.new_method_call("xyz.openbmc_project.ObjectMapper",
+                             "/xyz/openbmc_project/object_mapper",
+                             "xyz.openbmc_project.ObjectMapper", "GetSubTree");
     static constexpr const auto depth = 2;
     static constexpr std::array<const char*, 3> interfaces = {
         "xyz.openbmc_project.Sensor.Value",
@@ -164,10 +164,9 @@
     return 0x1; // reading type = threshold
 }
 
-static inline bool getSensorAttributes(const double max, const double min,
-                                       int16_t& mValue, int8_t& rExp,
-                                       int16_t& bValue, int8_t& bExp,
-                                       bool& bSigned)
+static inline bool getSensorAttributes(
+    const double max, const double min, int16_t& mValue, int8_t& rExp,
+    int16_t& bValue, int8_t& bExp, bool& bSigned)
 {
     // computing y = (10^rRexp) * (Mx + (B*(10^Bexp)))
     // check for 0, assume always positive
@@ -275,10 +274,9 @@
     return true;
 }
 
-static inline uint8_t
-    scaleIPMIValueFromDouble(const double value, const uint16_t mValue,
-                             const int8_t rExp, const uint16_t bValue,
-                             const int8_t bExp, const bool bSigned)
+static inline uint8_t scaleIPMIValueFromDouble(
+    const double value, const uint16_t mValue, const int8_t rExp,
+    const uint16_t bValue, const int8_t bExp, const bool bSigned)
 {
     uint32_t scaledValue =
         (value - (bValue * std::pow(10, bExp) * std::pow(10, rExp))) /
