diff --git a/vpd-parser/ipz_parser.cpp b/vpd-parser/ipz_parser.cpp
index d923aa6..bb4ee2f 100644
--- a/vpd-parser/ipz_parser.cpp
+++ b/vpd-parser/ipz_parser.cpp
@@ -34,4 +34,4 @@
 } // namespace parser
 } // namespace ipz
 } // namespace vpd
-} // namespace openpower
\ No newline at end of file
+} // namespace openpower
diff --git a/vpd-parser/ipz_parser.hpp b/vpd-parser/ipz_parser.hpp
index e431cd3..1b1f034 100644
--- a/vpd-parser/ipz_parser.hpp
+++ b/vpd-parser/ipz_parser.hpp
@@ -41,8 +41,7 @@
         vpd(VpdVector),
         inventoryPath(path), vpdFilePath(vpdFilePath),
         vpdStartOffset(vpdStartOffset)
-    {
-    }
+    {}
 
     /**
      * @brief Parse the memory VPD binary data.
diff --git a/vpd-parser/isdimm_vpd_parser.cpp b/vpd-parser/isdimm_vpd_parser.cpp
index 334a2a3..7071516 100644
--- a/vpd-parser/isdimm_vpd_parser.cpp
+++ b/vpd-parser/isdimm_vpd_parser.cpp
@@ -132,7 +132,6 @@
 
 auto isdimmVpdParser::getDDR4PartNumber(Binary::const_iterator& iterator)
 {
-
     char tmpPN[constants::PART_NUM_LEN + 1] = {'\0'};
     sprintf(tmpPN, "%02X%02X%02X%X",
             iterator[SPD_JEDEC_DDR4_SDRAM_DENSITY_BANK_OFFSET],
diff --git a/vpd-parser/isdimm_vpd_parser.hpp b/vpd-parser/isdimm_vpd_parser.hpp
index 9d6cca8..69ae2c5 100644
--- a/vpd-parser/isdimm_vpd_parser.hpp
+++ b/vpd-parser/isdimm_vpd_parser.hpp
@@ -30,9 +30,7 @@
      *
      * Move memVpdVector to parser object's memVpdVector
      */
-    isdimmVpdParser(const Binary& VpdVector) : memVpd(VpdVector)
-    {
-    }
+    isdimmVpdParser(const Binary& VpdVector) : memVpd(VpdVector) {}
 
     /**
      * @brief Parse the memory SPD binary data.
diff --git a/vpd-parser/keyword_vpd_parser.cpp b/vpd-parser/keyword_vpd_parser.cpp
index 1d100a8..ca05692 100644
--- a/vpd-parser/keyword_vpd_parser.cpp
+++ b/vpd-parser/keyword_vpd_parser.cpp
@@ -199,7 +199,6 @@
 
 void KeywordVpdParser::itrOutOfBoundCheck(uint8_t incVar)
 {
-
     if ((std::distance(keywordVpdVector.begin(), kwVpdIterator + incVar)) >
         std::distance(keywordVpdVector.begin(), keywordVpdVector.end()))
     {
diff --git a/vpd-parser/keyword_vpd_parser.hpp b/vpd-parser/keyword_vpd_parser.hpp
index e48e7d5..4466c6b 100644
--- a/vpd-parser/keyword_vpd_parser.hpp
+++ b/vpd-parser/keyword_vpd_parser.hpp
@@ -51,8 +51,7 @@
      */
     KeywordVpdParser(const openpower::vpd::Binary& kwVpdVector) :
         keywordVpdVector(kwVpdVector)
-    {
-    }
+    {}
 
     /**
      * @brief Parse the keyword VPD binary data.
@@ -74,13 +73,13 @@
 
   private:
     openpower::vpd::Binary::const_iterator
-        checkSumStart; //!< Pointer to the start byte from where
-                       //!< the checksum need to be calculated
+        checkSumStart;    //!< Pointer to the start byte from where
+                          //!< the checksum need to be calculated
     openpower::vpd::Binary::const_iterator
-        checkSumEnd; //!< Pointer to the end byte until which the
-                     //!< checksum need to be calculated
+        checkSumEnd;      //!< Pointer to the end byte until which the
+                          //!< checksum need to be calculated
     openpower::vpd::Binary::const_iterator
-        kwVpdIterator; //!< Iterator to parse the vector
+        kwVpdIterator;    //!< Iterator to parse the vector
     const openpower::vpd::Binary&
         keywordVpdVector; //!< Vector which stores keyword VPD data
 
diff --git a/vpd-parser/memory_vpd_parser.cpp b/vpd-parser/memory_vpd_parser.cpp
index 1ce495c..eb07bff 100644
--- a/vpd-parser/memory_vpd_parser.cpp
+++ b/vpd-parser/memory_vpd_parser.cpp
@@ -151,4 +151,4 @@
 } // namespace parser
 } // namespace memory
 } // namespace vpd
-} // namespace openpower
\ No newline at end of file
+} // namespace openpower
diff --git a/vpd-parser/memory_vpd_parser.hpp b/vpd-parser/memory_vpd_parser.hpp
index cbd44bb..21a45b9 100644
--- a/vpd-parser/memory_vpd_parser.hpp
+++ b/vpd-parser/memory_vpd_parser.hpp
@@ -30,9 +30,7 @@
      *
      * Move memVpdVector to parser object's memVpdVector
      */
-    memoryVpdParser(const Binary& VpdVector) : memVpd(VpdVector)
-    {
-    }
+    memoryVpdParser(const Binary& VpdVector) : memVpd(VpdVector) {}
 
     /**
      * @brief Parse the memory VPD binary data.
@@ -72,4 +70,4 @@
 } // namespace parser
 } // namespace memory
 } // namespace vpd
-} // namespace openpower
\ No newline at end of file
+} // namespace openpower
diff --git a/vpd-parser/parser_factory.hpp b/vpd-parser/parser_factory.hpp
index 983b8fd..ca9f41e 100644
--- a/vpd-parser/parser_factory.hpp
+++ b/vpd-parser/parser_factory.hpp
@@ -49,4 +49,4 @@
 } // namespace factory
 } // namespace parser
 } // namespace vpd
-} // namespace openpower
\ No newline at end of file
+} // namespace openpower
diff --git a/vpd-parser/parser_interface.hpp b/vpd-parser/parser_interface.hpp
index 2f11aff..4ad583f 100644
--- a/vpd-parser/parser_interface.hpp
+++ b/vpd-parser/parser_interface.hpp
@@ -49,9 +49,7 @@
     /**
      * @brief Virtual destructor for the interface.
      */
-    virtual ~ParserInterface()
-    {
-    }
+    virtual ~ParserInterface() {}
 
 }; // class Parserinterface
 } // namespace interface
