diff --git a/src/rde/external_storer_file.cpp b/src/rde/external_storer_file.cpp
index 6a162ed..5cc14cf 100644
--- a/src/rde/external_storer_file.cpp
+++ b/src/rde/external_storer_file.cpp
@@ -48,8 +48,7 @@
 ExternalStorerFileInterface::ExternalStorerFileInterface(
     sdbusplus::bus_t& bus, std::string_view rootPath,
     std::unique_ptr<FileHandlerInterface> fileHandler) :
-    rootPath(rootPath),
-    fileHandler(std::move(fileHandler)), logServiceId(""),
+    rootPath(rootPath), fileHandler(std::move(fileHandler)), logServiceId(""),
     cperNotifier(std::make_unique<CperFileNotifierHandler>(bus))
 {}
 
diff --git a/src/rde/rde_dictionary_manager.cpp b/src/rde/rde_dictionary_manager.cpp
index 0904fad..aa92c51 100644
--- a/src/rde/rde_dictionary_manager.cpp
+++ b/src/rde/rde_dictionary_manager.cpp
@@ -18,8 +18,8 @@
     auto itemIt = dictionaries.find(resourceId);
     if (itemIt == dictionaries.end())
     {
-        dictionaries[resourceId] = std::make_unique<DictionaryEntry>(false,
-                                                                     data);
+        dictionaries[resourceId] =
+            std::make_unique<DictionaryEntry>(false, data);
         return;
     }
 
diff --git a/src/rde/rde_handler.cpp b/src/rde/rde_handler.cpp
index fd8ed0a..2b8a1e4 100644
--- a/src/rde/rde_handler.cpp
+++ b/src/rde/rde_handler.cpp
@@ -26,9 +26,8 @@
     calcCrcTable();
 }
 
-RdeDecodeStatus
-    RdeCommandHandler::decodeRdeCommand(std::span<const uint8_t> rdeCommand,
-                                        RdeCommandType type)
+RdeDecodeStatus RdeCommandHandler::decodeRdeCommand(
+    std::span<const uint8_t> rdeCommand, RdeCommandType type)
 {
     if (type == RdeCommandType::RdeMultiPartReceiveResponse)
     {
@@ -98,9 +97,9 @@
 
     // Soon after header, we have bejLocator field. Then we have the encoded
     // data.
-    const uint8_t* encodedPldmBlock = rdeCommand.data() +
-                                      sizeof(RdeOperationInitReqHeader) +
-                                      header->operationLocatorLength;
+    const uint8_t* encodedPldmBlock =
+        rdeCommand.data() + sizeof(RdeOperationInitReqHeader) +
+        header->operationLocatorLength;
 
     // Decoded the data.
     if (decoder.decode(dictionaries, std::span(encodedPldmBlock,
@@ -197,9 +196,9 @@
     const MultipartReceiveResHeader* header =
         reinterpret_cast<const MultipartReceiveResHeader*>(
             multiReceiveRespCmd.data());
-    const uint8_t* checksumPtr = multiReceiveRespCmd.data() +
-                                 sizeof(MultipartReceiveResHeader) +
-                                 header->dataLengthBytes;
+    const uint8_t* checksumPtr =
+        multiReceiveRespCmd.data() + sizeof(MultipartReceiveResHeader) +
+        header->dataLengthBytes;
     uint32_t checksum = checksumPtr[0] | (checksumPtr[1] << 8) |
                         (checksumPtr[2] << 16) | (checksumPtr[3] << 24);
 
@@ -226,10 +225,9 @@
     flagState = RdeDictTransferFlagState::RdeStateStartRecvd;
 }
 
-RdeDecodeStatus
-    RdeCommandHandler::handleFlagMiddle(const MultipartReceiveResHeader* header,
-                                        const uint8_t* data,
-                                        uint32_t resourceId)
+RdeDecodeStatus RdeCommandHandler::handleFlagMiddle(
+    const MultipartReceiveResHeader* header, const uint8_t* data,
+    uint32_t resourceId)
 {
     if (flagState != RdeDictTransferFlagState::RdeStateStartRecvd)
     {
@@ -264,10 +262,10 @@
     return RdeDecodeStatus::RdeOk;
 }
 
-RdeDecodeStatus
-    RdeCommandHandler::handleFlagEnd(std::span<const uint8_t> rdeCommand,
-                                     const MultipartReceiveResHeader* header,
-                                     const uint8_t* data, uint32_t resourceId)
+RdeDecodeStatus RdeCommandHandler::handleFlagEnd(
+    std::span<const uint8_t> rdeCommand,
+    const MultipartReceiveResHeader* header, const uint8_t* data,
+    uint32_t resourceId)
 {
     if (flagState != RdeDictTransferFlagState::RdeStateStartRecvd)
     {
