diff --git a/platform-mc/platform_manager.cpp b/platform-mc/platform_manager.cpp
index 2b11ef6..9a053fc 100644
--- a/platform-mc/platform_manager.cpp
+++ b/platform-mc/platform_manager.cpp
@@ -604,8 +604,8 @@
     co_return completionCode;
 }
 
-exec::task<int>
-    PlatformManager::getFRURecordTableMetadata(pldm_tid_t tid, uint16_t* total)
+exec::task<int> PlatformManager::getFRURecordTableMetadata(pldm_tid_t tid,
+                                                           uint16_t* total)
 {
     Request request(
         sizeof(pldm_msg_hdr) + PLDM_GET_FRU_RECORD_TABLE_METADATA_REQ_BYTES);
diff --git a/platform-mc/platform_manager.hpp b/platform-mc/platform_manager.hpp
index d16af75..c555452 100644
--- a/platform-mc/platform_manager.hpp
+++ b/platform-mc/platform_manager.hpp
@@ -72,13 +72,13 @@
      *  @param[out] transferCrc - CRC value when record data is last part of PDR
      *  @return coroutine return_value - PLDM completion code
      */
-    exec::task<int>
-        getPDR(const pldm_tid_t tid, const uint32_t recordHndl,
-               const uint32_t dataTransferHndl, const uint8_t transferOpFlag,
-               const uint16_t requestCnt, const uint16_t recordChgNum,
-               uint32_t& nextRecordHndl, uint32_t& nextDataTransferHndl,
-               uint8_t& transferFlag, uint16_t& responseCnt,
-               std::vector<uint8_t>& recordData, uint8_t& transferCrc);
+    exec::task<int> getPDR(
+        const pldm_tid_t tid, const uint32_t recordHndl,
+        const uint32_t dataTransferHndl, const uint8_t transferOpFlag,
+        const uint16_t requestCnt, const uint16_t recordChgNum,
+        uint32_t& nextRecordHndl, uint32_t& nextDataTransferHndl,
+        uint8_t& transferFlag, uint16_t& responseCnt,
+        std::vector<uint8_t>& recordData, uint8_t& transferCrc);
 
     /** @brief get PDR repository information.
      *
diff --git a/platform-mc/sensor_manager.cpp b/platform-mc/sensor_manager.cpp
index 95dd422..5924106 100644
--- a/platform-mc/sensor_manager.cpp
+++ b/platform-mc/sensor_manager.cpp
@@ -248,8 +248,8 @@
     co_return PLDM_SUCCESS;
 }
 
-exec::task<int>
-    SensorManager::getSensorReading(std::shared_ptr<NumericSensor> sensor)
+exec::task<int> SensorManager::getSensorReading(
+    std::shared_ptr<NumericSensor> sensor)
 {
     if (!sensor)
     {
diff --git a/platform-mc/terminus.cpp b/platform-mc/terminus.cpp
index 99ba92b..03f1ba4 100644
--- a/platform-mc/terminus.cpp
+++ b/platform-mc/terminus.cpp
@@ -239,8 +239,8 @@
     }
 }
 
-std::shared_ptr<SensorAuxiliaryNames>
-    Terminus::getSensorAuxiliaryNames(SensorId id)
+std::shared_ptr<SensorAuxiliaryNames> Terminus::getSensorAuxiliaryNames(
+    SensorId id)
 {
     auto it = std::find_if(
         sensorAuxiliaryNamesTbl.begin(), sensorAuxiliaryNamesTbl.end(),
@@ -258,8 +258,8 @@
     return nullptr;
 };
 
-std::shared_ptr<SensorAuxiliaryNames>
-    Terminus::parseSensorAuxiliaryNamesPDR(const std::vector<uint8_t>& pdrData)
+std::shared_ptr<SensorAuxiliaryNames> Terminus::parseSensorAuxiliaryNamesPDR(
+    const std::vector<uint8_t>& pdrData)
 {
     constexpr uint8_t nullTerminator = 0;
     auto pdr = reinterpret_cast<const struct pldm_sensor_auxiliary_names_pdr*>(
@@ -313,8 +313,8 @@
         pdr->sensor_id, pdr->sensor_count, std::move(sensorAuxNames));
 }
 
-std::shared_ptr<EntityAuxiliaryNames>
-    Terminus::parseEntityAuxiliaryNamesPDR(const std::vector<uint8_t>& pdrData)
+std::shared_ptr<EntityAuxiliaryNames> Terminus::parseEntityAuxiliaryNamesPDR(
+    const std::vector<uint8_t>& pdrData)
 {
     auto names_offset = sizeof(struct pldm_pdr_hdr) +
                         PLDM_PDR_ENTITY_AUXILIARY_NAME_PDR_MIN_LENGTH;
@@ -376,8 +376,8 @@
     return std::make_shared<EntityAuxiliaryNames>(key, nameStrings);
 }
 
-std::shared_ptr<pldm_numeric_sensor_value_pdr>
-    Terminus::parseNumericSensorPDR(const std::vector<uint8_t>& pdr)
+std::shared_ptr<pldm_numeric_sensor_value_pdr> Terminus::parseNumericSensorPDR(
+    const std::vector<uint8_t>& pdr)
 {
     const uint8_t* ptr = pdr.data();
     auto parsedPdr = std::make_shared<pldm_numeric_sensor_value_pdr>();
@@ -438,8 +438,8 @@
     }
 }
 
-std::shared_ptr<SensorAuxiliaryNames>
-    Terminus::parseCompactNumericSensorNames(const std::vector<uint8_t>& sPdr)
+std::shared_ptr<SensorAuxiliaryNames> Terminus::parseCompactNumericSensorNames(
+    const std::vector<uint8_t>& sPdr)
 {
     std::vector<std::vector<std::pair<NameLanguageTag, SensorName>>>
         sensorAuxNames{};
diff --git a/platform-mc/terminus.hpp b/platform-mc/terminus.hpp
index 10a8f55..da3d919 100644
--- a/platform-mc/terminus.hpp
+++ b/platform-mc/terminus.hpp
@@ -223,24 +223,24 @@
      *  @param[in] pdrData - the response PDRs from GetPDR command
      *  @return pointer to numeric sensor info struct
      */
-    std::shared_ptr<pldm_numeric_sensor_value_pdr>
-        parseNumericSensorPDR(const std::vector<uint8_t>& pdrData);
+    std::shared_ptr<pldm_numeric_sensor_value_pdr> parseNumericSensorPDR(
+        const std::vector<uint8_t>& pdrData);
 
     /** @brief Parse the sensor Auxiliary name PDRs
      *
      *  @param[in] pdrData - the response PDRs from GetPDR command
      *  @return pointer to sensor Auxiliary name info struct
      */
-    std::shared_ptr<SensorAuxiliaryNames>
-        parseSensorAuxiliaryNamesPDR(const std::vector<uint8_t>& pdrData);
+    std::shared_ptr<SensorAuxiliaryNames> parseSensorAuxiliaryNamesPDR(
+        const std::vector<uint8_t>& pdrData);
 
     /** @brief Parse the Entity Auxiliary name PDRs
      *
      *  @param[in] pdrData - the response PDRs from GetPDR command
      *  @return pointer to Entity Auxiliary name info struct
      */
-    std::shared_ptr<EntityAuxiliaryNames>
-        parseEntityAuxiliaryNamesPDR(const std::vector<uint8_t>& pdrData);
+    std::shared_ptr<EntityAuxiliaryNames> parseEntityAuxiliaryNamesPDR(
+        const std::vector<uint8_t>& pdrData);
 
     /** @brief Construct the NumericSensor sensor class for the compact numeric
      *         PLDM sensor.
@@ -263,8 +263,8 @@
      *  @param[in] pdrData - the response PDRs from GetPDR command
      *  @return pointer to sensor Auxiliary name info struct
      */
-    std::shared_ptr<SensorAuxiliaryNames>
-        parseCompactNumericSensorNames(const std::vector<uint8_t>& pdrData);
+    std::shared_ptr<SensorAuxiliaryNames> parseCompactNumericSensorNames(
+        const std::vector<uint8_t>& pdrData);
 
     /** @brief Create the terminus inventory path to
      *         /xyz/openbmc_project/inventory/Item/Board/.
diff --git a/platform-mc/terminus_manager.cpp b/platform-mc/terminus_manager.cpp
index 56902ad..dd5ee7f 100644
--- a/platform-mc/terminus_manager.cpp
+++ b/platform-mc/terminus_manager.cpp
@@ -52,8 +52,8 @@
     return mctpInfoTableIt->first;
 }
 
-std::optional<pldm_tid_t>
-    TerminusManager::storeTerminusInfo(const MctpInfo& mctpInfo, pldm_tid_t tid)
+std::optional<pldm_tid_t> TerminusManager::storeTerminusInfo(
+    const MctpInfo& mctpInfo, pldm_tid_t tid)
 {
     if (tid == PLDM_TID_UNASSIGNED || tid == PLDM_TID_RESERVED)
     {
@@ -144,8 +144,8 @@
                 exec::default_task_context<void>(exec::inline_scheduler{}));
 }
 
-TerminiMapper::iterator
-    TerminusManager::findTerminusPtr(const MctpInfo& mctpInfo)
+TerminiMapper::iterator TerminusManager::findTerminusPtr(
+    const MctpInfo& mctpInfo)
 {
     auto foundIter = std::find_if(
         termini.begin(), termini.end(), [&](const auto& terminusPair) {
@@ -501,8 +501,8 @@
     co_return responseMsg->payload[0];
 }
 
-exec::task<int>
-    TerminusManager::getPLDMTypes(pldm_tid_t tid, uint64_t& supportedTypes)
+exec::task<int> TerminusManager::getPLDMTypes(pldm_tid_t tid,
+                                              uint64_t& supportedTypes)
 {
     Request request(sizeof(pldm_msg_hdr));
     auto requestMsg = reinterpret_cast<pldm_msg*>(request.data());
diff --git a/platform-mc/terminus_manager.hpp b/platform-mc/terminus_manager.hpp
index 8b7cd15..c37d74d 100644
--- a/platform-mc/terminus_manager.hpp
+++ b/platform-mc/terminus_manager.hpp
@@ -133,8 +133,8 @@
      *
      *  @return tid - Terminus tid
      */
-    std::optional<pldm_tid_t>
-        storeTerminusInfo(const MctpInfo& mctpInfo, pldm_tid_t tid);
+    std::optional<pldm_tid_t> storeTerminusInfo(const MctpInfo& mctpInfo,
+                                                pldm_tid_t tid);
 
     /** @brief Member functions to remove the TID from the transportLayer and
      *         mctpInfo table
