diff --git a/pldmtool/pldm_fru_cmd.cpp b/pldmtool/pldm_fru_cmd.cpp
index 5d012da..39e7e51 100644
--- a/pldmtool/pldm_fru_cmd.cpp
+++ b/pldmtool/pldm_fru_cmd.cpp
@@ -100,8 +100,8 @@
                 reinterpret_cast<const pldm_fru_record_data_format*>(p);
             output["FRU Record Set Identifier"] =
                 (int)le16toh(record->record_set_id);
-            output["FRU Record Type"] =
-                typeToString(fruRecordTypes, record->record_type);
+            output["FRU Record Type"] = typeToString(fruRecordTypes,
+                                                     record->record_type);
             output["Number of FRU fields"] = (int)record->num_fru_fields;
             output["Encoding Type for FRU fields"] =
                 typeToString(fruEncodingType, record->encoding_type);
@@ -124,22 +124,22 @@
                                            fruGeneralFieldTypes.end());
                     if (tlv->type == PLDM_FRU_FIELD_TYPE_IANA)
                     {
-                        fruFieldValue =
-                            fruFieldParserU32(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldParserU32(tlv->value,
+                                                          tlv->length);
                     }
                     else if (tlv->type == PLDM_FRU_FIELD_TYPE_MANUFAC_DATE)
                     {
-                        fruFieldValue =
-                            fruFieldParserTimestamp(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldParserTimestamp(tlv->value,
+                                                                tlv->length);
                     }
                     else
                     {
-                        fruFieldValue =
-                            fruFieldValuestring(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldValuestring(tlv->value,
+                                                            tlv->length);
                     }
 
-                    frudata["FRU Field Type"] =
-                        typeToString(FruFieldTypeMap, tlv->type);
+                    frudata["FRU Field Type"] = typeToString(FruFieldTypeMap,
+                                                             tlv->type);
                     frudata["FRU Field Length"] = (int)(tlv->length);
                     frudata["FRU Field Value"] = fruFieldValue;
                     frufielddata.emplace_back(frudata);
@@ -149,8 +149,8 @@
 #ifdef OEM_IBM
                     if (tlv->type == PLDM_OEM_FRU_FIELD_TYPE_RT)
                     {
-                        auto oemIPZValue =
-                            fruFieldValuestring(tlv->value, tlv->length);
+                        auto oemIPZValue = fruFieldValuestring(tlv->value,
+                                                               tlv->length);
 
                         if (populateMaps.find(oemIPZValue) !=
                             populateMaps.end())
@@ -168,21 +168,21 @@
                     }
                     if (tlv->type == PLDM_OEM_FRU_FIELD_TYPE_IANA)
                     {
-                        fruFieldValue =
-                            fruFieldParserU32(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldParserU32(tlv->value,
+                                                          tlv->length);
                     }
                     else if (tlv->type != 2)
                     {
-                        fruFieldValue =
-                            fruFieldIPZParser(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldIPZParser(tlv->value,
+                                                          tlv->length);
                     }
                     else
                     {
-                        fruFieldValue =
-                            fruFieldValuestring(tlv->value, tlv->length);
+                        fruFieldValue = fruFieldValuestring(tlv->value,
+                                                            tlv->length);
                     }
-                    frudata["FRU Field Type"] =
-                        typeToString(FruFieldTypeMap, tlv->type);
+                    frudata["FRU Field Type"] = typeToString(FruFieldTypeMap,
+                                                             tlv->type);
                     frudata["FRU Field Length"] = (int)(tlv->length);
                     frudata["FRU Field Value"] = fruFieldValue;
                     frufielddata.emplace_back(frudata);
@@ -457,13 +457,13 @@
     commands.push_back(std::make_unique<GetFruRecordTableMetadata>(
         "fru", "GetFruRecordTableMetadata", getFruRecordTableMetadata));
 
-    auto getFRURecordByOption =
-        fru->add_subcommand("GetFRURecordByOption", "get FRU Record By Option");
+    auto getFRURecordByOption = fru->add_subcommand("GetFRURecordByOption",
+                                                    "get FRU Record By Option");
     commands.push_back(std::make_unique<GetFRURecordByOption>(
         "fru", "GetFRURecordByOption", getFRURecordByOption));
 
-    auto getFruRecordTable =
-        fru->add_subcommand("GetFruRecordTable", "get FRU Record Table");
+    auto getFruRecordTable = fru->add_subcommand("GetFruRecordTable",
+                                                 "get FRU Record Table");
     commands.push_back(std::make_unique<GetFruRecordTable>(
         "fru", "GetFruRecordTable", getFruRecordTable));
 }
