diff --git a/pldmtool/pldm_bios_cmd.cpp b/pldmtool/pldm_bios_cmd.cpp
index 160afd7..3b76b68 100644
--- a/pldmtool/pldm_bios_cmd.cpp
+++ b/pldmtool/pldm_bios_cmd.cpp
@@ -239,9 +239,9 @@
         return std::make_optional<Table>(tableData, tableData + tableSize);
     }
 
-    const pldm_bios_attr_table_entry*
-        findAttrEntryByName(const std::string& name, const Table& attrTable,
-                            const Table& stringTable)
+    const pldm_bios_attr_table_entry* findAttrEntryByName(
+        const std::string& name, const Table& attrTable,
+        const Table& stringTable)
     {
         auto stringEntry = pldm_bios_table_string_find_by_string(
             stringTable.data(), stringTable.size(), name.c_str());
@@ -266,9 +266,9 @@
         return nullptr;
     }
 
-    std::optional<uint16_t>
-        findAttrHandleByName(const std::string& name, const Table& attrTable,
-                             const Table& stringTable)
+    std::optional<uint16_t> findAttrHandleByName(const std::string& name,
+                                                 const Table& attrTable,
+                                                 const Table& stringTable)
     {
         auto attribute = findAttrEntryByName(name, attrTable, stringTable);
         if (attribute == nullptr)
@@ -677,10 +677,10 @@
         const GetBIOSAttributeCurrentValueByHandle&) = delete;
     GetBIOSAttributeCurrentValueByHandle(
         GetBIOSAttributeCurrentValueByHandle&&) = delete;
-    GetBIOSAttributeCurrentValueByHandle&
-        operator=(const GetBIOSAttributeCurrentValueByHandle&) = delete;
-    GetBIOSAttributeCurrentValueByHandle&
-        operator=(GetBIOSAttributeCurrentValueByHandle&&) = delete;
+    GetBIOSAttributeCurrentValueByHandle& operator=(
+        const GetBIOSAttributeCurrentValueByHandle&) = delete;
+    GetBIOSAttributeCurrentValueByHandle& operator=(
+        GetBIOSAttributeCurrentValueByHandle&&) = delete;
 
     explicit GetBIOSAttributeCurrentValueByHandle(
         const char* type, const char* name, CLI::App* app) :
@@ -767,10 +767,10 @@
     SetBIOSAttributeCurrentValue() = delete;
     SetBIOSAttributeCurrentValue(const SetBIOSAttributeCurrentValue&) = delete;
     SetBIOSAttributeCurrentValue(SetBIOSAttributeCurrentValue&&) = delete;
-    SetBIOSAttributeCurrentValue&
-        operator=(const SetBIOSAttributeCurrentValue&) = delete;
-    SetBIOSAttributeCurrentValue&
-        operator=(SetBIOSAttributeCurrentValue&&) = delete;
+    SetBIOSAttributeCurrentValue& operator=(
+        const SetBIOSAttributeCurrentValue&) = delete;
+    SetBIOSAttributeCurrentValue& operator=(SetBIOSAttributeCurrentValue&&) =
+        delete;
 
     explicit SetBIOSAttributeCurrentValue(const char* type, const char* name,
                                           CLI::App* app) :
diff --git a/pldmtool/pldm_fru_cmd.cpp b/pldmtool/pldm_fru_cmd.cpp
index b67d1bd..aeb6f09 100644
--- a/pldmtool/pldm_fru_cmd.cpp
+++ b/pldmtool/pldm_fru_cmd.cpp
@@ -33,8 +33,8 @@
     GetFruRecordTableMetadata() = delete;
     GetFruRecordTableMetadata(const GetFruRecordTableMetadata&) = delete;
     GetFruRecordTableMetadata(GetFruRecordTableMetadata&&) = default;
-    GetFruRecordTableMetadata&
-        operator=(const GetFruRecordTableMetadata&) = delete;
+    GetFruRecordTableMetadata& operator=(const GetFruRecordTableMetadata&) =
+        delete;
     GetFruRecordTableMetadata& operator=(GetFruRecordTableMetadata&&) = delete;
 
     using CommandInterface::CommandInterface;
