diff --git a/bmc/activation.hpp b/bmc/activation.hpp
index 4ec621b..47da9b5 100644
--- a/bmc/activation.hpp
+++ b/bmc/activation.hpp
@@ -144,11 +144,11 @@
     }
 
     ActivationBlocksTransition(const ActivationBlocksTransition&) = delete;
-    ActivationBlocksTransition&
-        operator=(const ActivationBlocksTransition&) = delete;
+    ActivationBlocksTransition& operator=(const ActivationBlocksTransition&) =
+        delete;
     ActivationBlocksTransition(ActivationBlocksTransition&&) = delete;
-    ActivationBlocksTransition&
-        operator=(ActivationBlocksTransition&&) = delete;
+    ActivationBlocksTransition& operator=(ActivationBlocksTransition&&) =
+        delete;
 
   private:
     sdbusplus::bus_t& bus;
@@ -234,8 +234,8 @@
      *
      * @return Success or exception thrown
      */
-    RequestedActivations
-        requestedActivation(RequestedActivations value) override;
+    RequestedActivations requestedActivation(
+        RequestedActivations value) override;
 
     /** @brief Overloaded write flash function */
     void flashWrite() override;
diff --git a/bmc/item_updater.cpp b/bmc/item_updater.cpp
index 351fc4c..2e889fb 100644
--- a/bmc/item_updater.cpp
+++ b/bmc/item_updater.cpp
@@ -570,8 +570,8 @@
     helper.cleanup();
 }
 
-ItemUpdater::ActivationStatus
-    ItemUpdater::validateSquashFSImage(const std::string& filePath)
+ItemUpdater::ActivationStatus ItemUpdater::validateSquashFSImage(
+    const std::string& filePath)
 {
     bool valid = true;
 
diff --git a/bmc/update_manager.cpp b/bmc/update_manager.cpp
index 37bbb85..922f2bc 100644
--- a/bmc/update_manager.cpp
+++ b/bmc/update_manager.cpp
@@ -208,9 +208,9 @@
     co_return;
 }
 
-sdbusplus::message::object_path
-    Manager::startUpdate(sdbusplus::message::unix_fd image,
-                         ApplyTimeIntf::RequestedApplyTimes applyTime)
+sdbusplus::message::object_path Manager::startUpdate(
+    sdbusplus::message::unix_fd image,
+    ApplyTimeIntf::RequestedApplyTimes applyTime)
 {
     info("Starting update for image {FD}", "FD", static_cast<int>(image));
     using sdbusplus::xyz::openbmc_project::Common::Error::Unavailable;
diff --git a/bmc/update_manager.hpp b/bmc/update_manager.hpp
index 59c185f..caba541 100644
--- a/bmc/update_manager.hpp
+++ b/bmc/update_manager.hpp
@@ -48,9 +48,9 @@
     /** @brief Implementation for StartUpdate
      *  Start a firware update to be performed asynchronously.
      */
-    sdbusplus::message::object_path
-        startUpdate(sdbusplus::message::unix_fd image,
-                    ApplyTimeIntf::RequestedApplyTimes applyTime) override;
+    sdbusplus::message::object_path startUpdate(
+        sdbusplus::message::unix_fd image,
+        ApplyTimeIntf::RequestedApplyTimes applyTime) override;
 
     /* @brief Process the image supplied via image fd */
     auto processImage(sdbusplus::message::unix_fd image,
diff --git a/bmc/version.hpp b/bmc/version.hpp
index bb66341..5f97955 100644
--- a/bmc/version.hpp
+++ b/bmc/version.hpp
@@ -113,8 +113,8 @@
      *
      * @return The values of the repeated key.
      **/
-    static std::vector<std::string>
-        getRepeatedValues(const std::string& manifestFilePath, std::string key);
+    static std::vector<std::string> getRepeatedValues(
+        const std::string& manifestFilePath, std::string key);
 
     /**
      * @brief Calculate the version id from the version string.
@@ -148,8 +148,8 @@
      *
      * @return The extended version string.
      */
-    static std::string
-        getBMCExtendedVersion(const std::string& releaseFilePath);
+    static std::string getBMCExtendedVersion(
+        const std::string& releaseFilePath);
 
     /**
      * @brief Get the active BMC version string.
