diff --git a/include/cpu.hpp b/include/cpu.hpp
index 20ff0cf..2cdc161 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -289,22 +289,23 @@
 
 // Definition follow smbios spec DSP0134 3.0.0
 static const std::array<std::optional<processor::Capability>, 16>
-    characteristicsTable{std::nullopt,
-                         std::nullopt,
-                         processor::Capability::Capable64bit,
-                         processor::Capability::MultiCore,
-                         processor::Capability::HardwareThread,
-                         processor::Capability::ExecuteProtection,
-                         processor::Capability::EnhancedVirtualization,
-                         processor::Capability::PowerPerformanceControl,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt,
-                         std::nullopt};
+    characteristicsTable{
+        std::nullopt,
+        std::nullopt,
+        processor::Capability::Capable64bit,
+        processor::Capability::MultiCore,
+        processor::Capability::HardwareThread,
+        processor::Capability::ExecuteProtection,
+        processor::Capability::EnhancedVirtualization,
+        processor::Capability::PowerPerformanceControl,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt,
+        std::nullopt};
 
 class Cpu :
     sdbusplus::server::object_t<processor, asset, location, connector, rev,
diff --git a/include/cpuinfo.hpp b/include/cpuinfo.hpp
index 39ae4d1..2788120 100644
--- a/include/cpuinfo.hpp
+++ b/include/cpuinfo.hpp
@@ -40,8 +40,8 @@
 {
     CPUInfo(const size_t cpuId, const uint8_t peciAddress,
             const uint8_t i2cBusNum, const uint8_t i2cSlaveAddress) :
-        id(cpuId),
-        peciAddr(peciAddress), i2cBus(i2cBusNum), i2cDevice(i2cSlaveAddress)
+        id(cpuId), peciAddr(peciAddress), i2cBus(i2cBusNum),
+        i2cDevice(i2cSlaveAddress)
     {}
 
     void publishUUID(sdbusplus::bus_t& bus, const std::string& uuid)
diff --git a/include/mdrv2.hpp b/include/mdrv2.hpp
index 315bdab..5834408 100644
--- a/include/mdrv2.hpp
+++ b/include/mdrv2.hpp
@@ -144,10 +144,9 @@
 
     std::vector<uint8_t> getDataInformation(uint8_t idIndex) override;
 
-    bool sendDirectoryInformation(uint8_t dirVersion, uint8_t dirIndex,
-                                  uint8_t returnedEntries,
-                                  uint8_t remainingEntries,
-                                  std::vector<uint8_t> dirEntry) override;
+    bool sendDirectoryInformation(
+        uint8_t dirVersion, uint8_t dirIndex, uint8_t returnedEntries,
+        uint8_t remainingEntries, std::vector<uint8_t> dirEntry) override;
 
     std::vector<uint8_t> getDataOffer() override;
 
