diff --git a/analyzer/plugins/ody-plugins.cpp b/analyzer/plugins/ody-plugins.cpp
index e71c7f5..8bb72e3 100644
--- a/analyzer/plugins/ody-plugins.cpp
+++ b/analyzer/plugins/ody-plugins.cpp
@@ -35,11 +35,12 @@
     // Copy all signatures PLL signatures that match the node ID and parent
     // processor chip.
     auto procTrgt = getParentProcessor(getTrgt(i_ocmbChip));
-    auto itr = std::copy_if(sigList.begin(), sigList.end(), pllList.begin(),
-                            [&nodeId, &procTrgt](const auto& s) {
-        return (nodeId == s.getId() &&
-                procTrgt == getParentProcessor(getTrgt(s.getChip())));
-    });
+    auto itr = std::copy_if(
+        sigList.begin(), sigList.end(), pllList.begin(),
+        [&nodeId, &procTrgt](const auto& s) {
+            return (nodeId == s.getId() &&
+                    procTrgt == getParentProcessor(getTrgt(s.getChip())));
+        });
 
     // Shrink the size of the PLL list if necessary.
     pllList.resize(std::distance(pllList.begin(), itr));
diff --git a/analyzer/plugins/p10-plugins.cpp b/analyzer/plugins/p10-plugins.cpp
index 1d5270f..0050991 100644
--- a/analyzer/plugins/p10-plugins.cpp
+++ b/analyzer/plugins/p10-plugins.cpp
@@ -33,16 +33,17 @@
     // in this case the bit position is the same as the plugin instance.
     auto itr = std::copy_if(sigList.begin(), sigList.end(), pllList.begin(),
                             [&nodeId, &i_instance](const auto& s) {
-        return (nodeId == s.getId() && i_instance == s.getBit());
-    });
+                                return (nodeId == s.getId() &&
+                                        i_instance == s.getBit());
+                            });
 
     // Shrink the size of the PLL list if necessary.
     pllList.resize(std::distance(pllList.begin(), itr));
 
     // The clock callout priority is dependent on the number of chips with PLL
     // unlock attentions.
-    auto clockPriority = (1 < pllList.size()) ? callout::Priority::HIGH
-                                              : callout::Priority::MED;
+    auto clockPriority =
+        (1 < pllList.size()) ? callout::Priority::HIGH : callout::Priority::MED;
 
     // Callout the clock.
     auto clockCallout = (0 == i_instance) ? callout::ClockType::OSC_REF_CLOCK_0
@@ -136,8 +137,8 @@
 {
     // Get the OMI target for this instance
     auto procTarget = util::pdbg::getTrgt(i_chip);
-    auto omiTarget = util::pdbg::getChipUnit(procTarget, util::pdbg::TYPE_OMI,
-                                             i_instance);
+    auto omiTarget =
+        util::pdbg::getChipUnit(procTarget, util::pdbg::TYPE_OMI, i_instance);
 
     if (nullptr != omiTarget)
     {
diff --git a/analyzer/plugins/p10-tod-plugins.cpp b/analyzer/plugins/p10-tod-plugins.cpp
index e7aecde..1ec99a4 100644
--- a/analyzer/plugins/p10-tod-plugins.cpp
+++ b/analyzer/plugins/p10-tod-plugins.cpp
@@ -165,8 +165,8 @@
     auto iohsUnit = getChipUnit(i_chipReportingError, TYPE_IOHS, i_iohsPos);
     if (nullptr != iohsUnit)
     {
-        auto clockSourceUnit = getConnectedTarget(iohsUnit,
-                                                  callout::BusType::SMP_BUS);
+        auto clockSourceUnit =
+            getConnectedTarget(iohsUnit, callout::BusType::SMP_BUS);
         if (nullptr != clockSourceUnit)
         {
             chipSourcingClock = getParentChip(clockSourceUnit);
@@ -234,8 +234,8 @@
             // The master path selects are sourced from the oscilator reference
             // clocks. So, we'll need to determine which one was used at the
             // time of the failure.
-            auto masterPathSelect = statusReg.getFieldRight(isPriTop ? 12 : 16,
-                                                            1);
+            auto masterPathSelect =
+                statusReg.getFieldRight(isPriTop ? 12 : 16, 1);
 
             // Determine if there is a step check fault for this path select.
             if (errorReg.isBitSet((0 == masterPathSelect) ? 14 : 15))
@@ -254,8 +254,8 @@
             // The slave path selects are sourced from other processor chips.
             // So, we'll need to determine which one was used at the time of the
             // failure.
-            auto slavePathSelect = statusReg.getFieldRight(isPriTop ? 15 : 19,
-                                                           1);
+            auto slavePathSelect =
+                statusReg.getFieldRight(isPriTop ? 15 : 19, 1);
 
             // Determine if there is a step check fault for this path select.
             if (errorReg.isBitSet((0 == slavePathSelect) ? 16 : 21))
diff --git a/analyzer/ras-data/ras-data-parser.cpp b/analyzer/ras-data/ras-data-parser.cpp
index de0a60d..023559f 100644
--- a/analyzer/ras-data/ras-data-parser.cpp
+++ b/analyzer/ras-data/ras-data-parser.cpp
@@ -291,9 +291,8 @@
 
 //------------------------------------------------------------------------------
 
-std::string
-    RasDataParser::parseSignature(const nlohmann::json& i_data,
-                                  const libhei::Signature& i_signature) const
+std::string RasDataParser::parseSignature(
+    const nlohmann::json& i_data, const libhei::Signature& i_signature) const
 {
     // Get the signature keys. All are hex (lower case) with no prefix.
     char buf[5];
@@ -328,9 +327,8 @@
 
 //------------------------------------------------------------------------------
 
-std::tuple<callout::BusType, std::string>
-    RasDataParser::parseBus(const nlohmann::json& i_data,
-                            const std::string& i_name)
+std::tuple<callout::BusType, std::string> RasDataParser::parseBus(
+    const nlohmann::json& i_data, const std::string& i_name)
 {
     auto bus = i_data.at("buses").at(i_name);
 
@@ -356,9 +354,8 @@
 
 //------------------------------------------------------------------------------
 
-std::shared_ptr<Resolution>
-    RasDataParser::parseAction(const nlohmann::json& i_data,
-                               const std::string& i_action)
+std::shared_ptr<Resolution> RasDataParser::parseAction(
+    const nlohmann::json& i_data, const std::string& i_action)
 {
     auto o_list = std::make_shared<ResolutionList>();
 
diff --git a/analyzer/resolution.hpp b/analyzer/resolution.hpp
index fc717ca..9b72b95 100644
--- a/analyzer/resolution.hpp
+++ b/analyzer/resolution.hpp
@@ -37,8 +37,7 @@
      */
     HardwareCalloutResolution(const std::string& i_unitPath,
                               callout::Priority i_priority, bool i_guard) :
-        iv_unitPath(i_unitPath),
-        iv_priority(i_priority), iv_guard(i_guard)
+        iv_unitPath(i_unitPath), iv_priority(i_priority), iv_guard(i_guard)
     {}
 
   private:
@@ -72,8 +71,8 @@
     ConnectedCalloutResolution(const callout::BusType& i_busType,
                                const std::string& i_unitPath,
                                callout::Priority i_priority, bool i_guard) :
-        iv_busType(i_busType),
-        iv_unitPath(i_unitPath), iv_priority(i_priority), iv_guard(i_guard)
+        iv_busType(i_busType), iv_unitPath(i_unitPath), iv_priority(i_priority),
+        iv_guard(i_guard)
     {}
 
   private:
@@ -114,8 +113,8 @@
     BusCalloutResolution(const callout::BusType& i_busType,
                          const std::string& i_unitPath,
                          callout::Priority i_priority, bool i_guard) :
-        iv_busType(i_busType),
-        iv_unitPath(i_unitPath), iv_priority(i_priority), iv_guard(i_guard)
+        iv_busType(i_busType), iv_unitPath(i_unitPath), iv_priority(i_priority),
+        iv_guard(i_guard)
     {}
 
   private:
@@ -149,8 +148,7 @@
      */
     ClockCalloutResolution(const callout::ClockType& i_clockType,
                            callout::Priority i_priority, bool i_guard) :
-        iv_clockType(i_clockType),
-        iv_priority(i_priority), iv_guard(i_guard)
+        iv_clockType(i_clockType), iv_priority(i_priority), iv_guard(i_guard)
     {}
 
   private:
@@ -178,8 +176,7 @@
      */
     ProcedureCalloutResolution(const callout::Procedure& i_procedure,
                                callout::Priority i_priority) :
-        iv_procedure(i_procedure),
-        iv_priority(i_priority)
+        iv_procedure(i_procedure), iv_priority(i_priority)
     {}
 
   private:
@@ -204,8 +201,7 @@
      */
     PartCalloutResolution(const callout::PartType& i_part,
                           callout::Priority i_priority) :
-        iv_part(i_part),
-        iv_priority(i_priority)
+        iv_part(i_part), iv_priority(i_priority)
     {}
 
   private:
diff --git a/analyzer/service_data.hpp b/analyzer/service_data.hpp
index a749f73..69e1ba7 100644
--- a/analyzer/service_data.hpp
+++ b/analyzer/service_data.hpp
@@ -27,8 +27,8 @@
     ServiceData(const libhei::Signature& i_rootCause,
                 AnalysisType i_analysisType,
                 const libhei::IsolationData& i_isoData) :
-        iv_rootCause(i_rootCause),
-        iv_analysisType(i_analysisType), iv_isoData(i_isoData)
+        iv_rootCause(i_rootCause), iv_analysisType(i_analysisType),
+        iv_isoData(i_isoData)
     {}
 
     /** @brief Destructor. */
