diff --git a/phosphor-regulators/src/actions/action_environment.hpp b/phosphor-regulators/src/actions/action_environment.hpp
index 7f6c402..265a7bf 100644
--- a/phosphor-regulators/src/actions/action_environment.hpp
+++ b/phosphor-regulators/src/actions/action_environment.hpp
@@ -74,8 +74,7 @@
                                Services& services) :
         idMap{idMap},
         deviceID{deviceID}, services{services}
-    {
-    }
+    {}
 
     /**
      * Adds the specified key/value pair to the map of additional error data
diff --git a/phosphor-regulators/src/actions/and_action.hpp b/phosphor-regulators/src/actions/and_action.hpp
index f4c3fca..ceaa322 100644
--- a/phosphor-regulators/src/actions/and_action.hpp
+++ b/phosphor-regulators/src/actions/and_action.hpp
@@ -51,8 +51,7 @@
      */
     explicit AndAction(std::vector<std::unique_ptr<Action>> actions) :
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Executes the actions specified in the constructor.
diff --git a/phosphor-regulators/src/actions/compare_presence_action.hpp b/phosphor-regulators/src/actions/compare_presence_action.hpp
index f2038d1..14d92bc 100644
--- a/phosphor-regulators/src/actions/compare_presence_action.hpp
+++ b/phosphor-regulators/src/actions/compare_presence_action.hpp
@@ -50,8 +50,7 @@
      */
     explicit ComparePresenceAction(const std::string& fru, bool value) :
         fru{fru}, value{value}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/compare_vpd_action.hpp b/phosphor-regulators/src/actions/compare_vpd_action.hpp
index 8825220..110b8b5 100644
--- a/phosphor-regulators/src/actions/compare_vpd_action.hpp
+++ b/phosphor-regulators/src/actions/compare_vpd_action.hpp
@@ -57,8 +57,7 @@
                               const std::vector<uint8_t>& value) :
         fru{fru},
         keyword{keyword}, value{value}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/i2c_compare_byte_action.hpp b/phosphor-regulators/src/actions/i2c_compare_byte_action.hpp
index a32bbdf..0459880 100644
--- a/phosphor-regulators/src/actions/i2c_compare_byte_action.hpp
+++ b/phosphor-regulators/src/actions/i2c_compare_byte_action.hpp
@@ -58,8 +58,7 @@
                                   uint8_t mask = 0xFF) :
         reg{reg},
         value{value}, mask{mask}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/i2c_compare_bytes_action.hpp b/phosphor-regulators/src/actions/i2c_compare_bytes_action.hpp
index 3f0ec83..2fdd5ff 100644
--- a/phosphor-regulators/src/actions/i2c_compare_bytes_action.hpp
+++ b/phosphor-regulators/src/actions/i2c_compare_bytes_action.hpp
@@ -60,8 +60,7 @@
                                    const std::vector<uint8_t>& values) :
         I2CCompareBytesAction(reg, values,
                               std::vector<uint8_t>(values.size(), 0xFF))
-    {
-    }
+    {}
 
     /**
      * Constructor.
diff --git a/phosphor-regulators/src/actions/i2c_write_byte_action.hpp b/phosphor-regulators/src/actions/i2c_write_byte_action.hpp
index 99ea154..3f9e1f6 100644
--- a/phosphor-regulators/src/actions/i2c_write_byte_action.hpp
+++ b/phosphor-regulators/src/actions/i2c_write_byte_action.hpp
@@ -57,8 +57,7 @@
                                 uint8_t mask = 0xFF) :
         reg{reg},
         value{value}, mask{mask}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/if_action.hpp b/phosphor-regulators/src/actions/if_action.hpp
index 10b2f5b..b35aa89 100644
--- a/phosphor-regulators/src/actions/if_action.hpp
+++ b/phosphor-regulators/src/actions/if_action.hpp
@@ -71,8 +71,7 @@
                           std::vector<std::unique_ptr<Action>>{}) :
         conditionAction{std::move(conditionAction)},
         thenActions{std::move(thenActions)}, elseActions{std::move(elseActions)}
-    {
-    }
+    {}
 
     /**
      * Executes the condition action specified in the constructor.
diff --git a/phosphor-regulators/src/actions/log_phase_fault_action.hpp b/phosphor-regulators/src/actions/log_phase_fault_action.hpp
index c0690b4..70c4cd0 100644
--- a/phosphor-regulators/src/actions/log_phase_fault_action.hpp
+++ b/phosphor-regulators/src/actions/log_phase_fault_action.hpp
@@ -48,8 +48,7 @@
      * @param type phase fault type
      */
     explicit LogPhaseFaultAction(PhaseFaultType type) : type{type}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/not_action.hpp b/phosphor-regulators/src/actions/not_action.hpp
index 762f5b5..b578042 100644
--- a/phosphor-regulators/src/actions/not_action.hpp
+++ b/phosphor-regulators/src/actions/not_action.hpp
@@ -50,8 +50,7 @@
      */
     explicit NotAction(std::unique_ptr<Action> action) :
         action{std::move(action)}
-    {
-    }
+    {}
 
     /**
      * Executes the action specified in the constructor.
diff --git a/phosphor-regulators/src/actions/or_action.hpp b/phosphor-regulators/src/actions/or_action.hpp
index 5dcff7a..a14b605 100644
--- a/phosphor-regulators/src/actions/or_action.hpp
+++ b/phosphor-regulators/src/actions/or_action.hpp
@@ -51,8 +51,7 @@
      */
     explicit OrAction(std::vector<std::unique_ptr<Action>> actions) :
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Executes the actions specified in the constructor.
diff --git a/phosphor-regulators/src/actions/pmbus_read_sensor_action.hpp b/phosphor-regulators/src/actions/pmbus_read_sensor_action.hpp
index 36df590..38c5d8f 100644
--- a/phosphor-regulators/src/actions/pmbus_read_sensor_action.hpp
+++ b/phosphor-regulators/src/actions/pmbus_read_sensor_action.hpp
@@ -71,8 +71,7 @@
                                    std::optional<int8_t> exponent) :
         type{type},
         command{command}, format{format}, exponent{exponent}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/run_rule_action.hpp b/phosphor-regulators/src/actions/run_rule_action.hpp
index 6cf63ac..87cd0c4 100644
--- a/phosphor-regulators/src/actions/run_rule_action.hpp
+++ b/phosphor-regulators/src/actions/run_rule_action.hpp
@@ -48,8 +48,7 @@
      * @param ruleID rule ID
      */
     explicit RunRuleAction(const std::string& ruleID) : ruleID{ruleID}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/actions/set_device_action.hpp b/phosphor-regulators/src/actions/set_device_action.hpp
index 955891e..7009cf6 100644
--- a/phosphor-regulators/src/actions/set_device_action.hpp
+++ b/phosphor-regulators/src/actions/set_device_action.hpp
@@ -47,8 +47,7 @@
      * @param deviceID device ID
      */
     explicit SetDeviceAction(const std::string& deviceID) : deviceID{deviceID}
-    {
-    }
+    {}
 
     /**
      * Executes this action.
diff --git a/phosphor-regulators/src/config_file_parser_error.hpp b/phosphor-regulators/src/config_file_parser_error.hpp
index 28db75a..9c783c5 100644
--- a/phosphor-regulators/src/config_file_parser_error.hpp
+++ b/phosphor-regulators/src/config_file_parser_error.hpp
@@ -49,8 +49,7 @@
                                    const std::string& error) :
         pathName{pathName},
         error{"ConfigFileParserError: " + pathName.string() + ": " + error}
-    {
-    }
+    {}
 
     /**
      * Returns the configuration file path name.
diff --git a/phosphor-regulators/src/configuration.hpp b/phosphor-regulators/src/configuration.hpp
index f0dd766..d0f7a44 100644
--- a/phosphor-regulators/src/configuration.hpp
+++ b/phosphor-regulators/src/configuration.hpp
@@ -74,8 +74,7 @@
                            std::vector<std::unique_ptr<Action>> actions) :
         volts{volts},
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Executes the actions to configure the specified device.
diff --git a/phosphor-regulators/src/dbus_sensors.hpp b/phosphor-regulators/src/dbus_sensors.hpp
index 229ae9f..590c960 100644
--- a/phosphor-regulators/src/dbus_sensors.hpp
+++ b/phosphor-regulators/src/dbus_sensors.hpp
@@ -52,8 +52,7 @@
      */
     explicit DBusSensors(sdbusplus::bus::bus& bus) :
         bus{bus}, manager{bus, sensorsObjectPath}
-    {
-    }
+    {}
 
     /** @copydoc Sensors::enable() */
     virtual void enable() override;
diff --git a/phosphor-regulators/src/device.hpp b/phosphor-regulators/src/device.hpp
index c45f330..af0e8ec 100644
--- a/phosphor-regulators/src/device.hpp
+++ b/phosphor-regulators/src/device.hpp
@@ -79,8 +79,7 @@
         configuration{std::move(configuration)},
         phaseFaultDetection{std::move(phaseFaultDetection)}, rails{std::move(
                                                                  rails)}
-    {
-    }
+    {}
 
     /**
      * Adds this Device object to the specified IDMap.
diff --git a/phosphor-regulators/src/error_logging.hpp b/phosphor-regulators/src/error_logging.hpp
index e6abfbe..1468604 100644
--- a/phosphor-regulators/src/error_logging.hpp
+++ b/phosphor-regulators/src/error_logging.hpp
@@ -167,8 +167,7 @@
      * @param bus D-Bus bus object
      */
     explicit DBusErrorLogging(sdbusplus::bus::bus& bus) : bus{bus}
-    {
-    }
+    {}
 
     /** @copydoc ErrorLogging::logConfigFileError() */
     virtual void logConfigFileError(Entry::Level severity,
diff --git a/phosphor-regulators/src/exception_utils.cpp b/phosphor-regulators/src/exception_utils.cpp
index 4640d0b..965deb5 100644
--- a/phosphor-regulators/src/exception_utils.cpp
+++ b/phosphor-regulators/src/exception_utils.cpp
@@ -52,8 +52,7 @@
             getExceptions(e.nested_ptr(), exceptions);
         }
         catch (...)
-        {
-        }
+        {}
 
         // Append this exception to vector
         exceptions.emplace_back(eptr);
@@ -72,8 +71,7 @@
         getMessages(inner, messages);
     }
     catch (...)
-    {
-    }
+    {}
 
     // Append error message from this exception
     messages.emplace_back(e.what());
diff --git a/phosphor-regulators/src/interfaces/manager_interface.cpp b/phosphor-regulators/src/interfaces/manager_interface.cpp
index 1b35d25..47c233d 100644
--- a/phosphor-regulators/src/interfaces/manager_interface.cpp
+++ b/phosphor-regulators/src/interfaces/manager_interface.cpp
@@ -35,8 +35,7 @@
 
 ManagerInterface::ManagerInterface(sdbusplus::bus::bus& bus, const char* path) :
     _serverInterface(bus, path, interface, _vtable, this)
-{
-}
+{}
 
 int ManagerInterface::callbackConfigure(sd_bus_message* msg, void* context,
                                         sd_bus_error* error)
diff --git a/phosphor-regulators/src/journal.cpp b/phosphor-regulators/src/journal.cpp
index ba9d846..eed5a70 100644
--- a/phosphor-regulators/src/journal.cpp
+++ b/phosphor-regulators/src/journal.cpp
@@ -44,8 +44,7 @@
     JournalCloser& operator=(JournalCloser&&) = delete;
 
     JournalCloser(sd_journal* journal) : journal{journal}
-    {
-    }
+    {}
 
     ~JournalCloser()
     {
diff --git a/phosphor-regulators/src/phase_fault_detection.hpp b/phosphor-regulators/src/phase_fault_detection.hpp
index 467d8c7..876d90e 100644
--- a/phosphor-regulators/src/phase_fault_detection.hpp
+++ b/phosphor-regulators/src/phase_fault_detection.hpp
@@ -79,8 +79,7 @@
                                  const std::string& deviceID = "") :
         actions{std::move(actions)},
         deviceID{deviceID}
-    {
-    }
+    {}
 
     /**
      * Clears all error history.
diff --git a/phosphor-regulators/src/pmbus_error.hpp b/phosphor-regulators/src/pmbus_error.hpp
index 1050af3..ac2a0a5 100644
--- a/phosphor-regulators/src/pmbus_error.hpp
+++ b/phosphor-regulators/src/pmbus_error.hpp
@@ -49,8 +49,7 @@
                         const std::string& inventoryPath) :
         error{"PMBusError: " + error},
         deviceID{deviceID}, inventoryPath{inventoryPath}
-    {
-    }
+    {}
 
     /**
      * Returns the unique ID of the device where the error occurred.
diff --git a/phosphor-regulators/src/presence_detection.hpp b/phosphor-regulators/src/presence_detection.hpp
index 0574003..07edb26 100644
--- a/phosphor-regulators/src/presence_detection.hpp
+++ b/phosphor-regulators/src/presence_detection.hpp
@@ -72,8 +72,7 @@
      */
     explicit PresenceDetection(std::vector<std::unique_ptr<Action>> actions) :
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Clears the cached presence value.
diff --git a/phosphor-regulators/src/presence_service.hpp b/phosphor-regulators/src/presence_service.hpp
index 79f839c..83b73c1 100644
--- a/phosphor-regulators/src/presence_service.hpp
+++ b/phosphor-regulators/src/presence_service.hpp
@@ -84,8 +84,7 @@
      * @param bus D-Bus bus object
      */
     explicit DBusPresenceService(sdbusplus::bus::bus& bus) : bus{bus}
-    {
-    }
+    {}
 
     /** @copydoc PresenceService::clearCache() */
     virtual void clearCache(void) override
diff --git a/phosphor-regulators/src/rail.hpp b/phosphor-regulators/src/rail.hpp
index c661183..5591c36 100644
--- a/phosphor-regulators/src/rail.hpp
+++ b/phosphor-regulators/src/rail.hpp
@@ -64,8 +64,7 @@
         id{id},
         configuration{std::move(configuration)}, sensorMonitoring{std::move(
                                                      sensorMonitoring)}
-    {
-    }
+    {}
 
     /**
      * Clears all error history.
diff --git a/phosphor-regulators/src/rule.hpp b/phosphor-regulators/src/rule.hpp
index 407f50e..ddfaa62 100644
--- a/phosphor-regulators/src/rule.hpp
+++ b/phosphor-regulators/src/rule.hpp
@@ -60,8 +60,7 @@
                   std::vector<std::unique_ptr<Action>> actions) :
         id{id},
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Executes the actions in this rule.
diff --git a/phosphor-regulators/src/sensor_monitoring.hpp b/phosphor-regulators/src/sensor_monitoring.hpp
index 0254fb2..00823af 100644
--- a/phosphor-regulators/src/sensor_monitoring.hpp
+++ b/phosphor-regulators/src/sensor_monitoring.hpp
@@ -64,8 +64,7 @@
      */
     explicit SensorMonitoring(std::vector<std::unique_ptr<Action>> actions) :
         actions{std::move(actions)}
-    {
-    }
+    {}
 
     /**
      * Clears all error history.
diff --git a/phosphor-regulators/src/services.hpp b/phosphor-regulators/src/services.hpp
index 42701c3..07e3d5f 100644
--- a/phosphor-regulators/src/services.hpp
+++ b/phosphor-regulators/src/services.hpp
@@ -114,8 +114,7 @@
     explicit BMCServices(sdbusplus::bus::bus& bus) :
         bus{bus}, errorLogging{bus},
         presenceService{bus}, sensors{bus}, vpd{bus}
-    {
-    }
+    {}
 
     /** @copydoc Services::getBus() */
     virtual sdbusplus::bus::bus& getBus() override
diff --git a/phosphor-regulators/src/vpd.hpp b/phosphor-regulators/src/vpd.hpp
index 8ae1314..4af3fa7 100644
--- a/phosphor-regulators/src/vpd.hpp
+++ b/phosphor-regulators/src/vpd.hpp
@@ -88,8 +88,7 @@
      * @param bus D-Bus bus object
      */
     explicit DBusVPD(sdbusplus::bus::bus& bus) : bus{bus}
-    {
-    }
+    {}
 
     /** @copydoc VPD::clearCache() */
     virtual void clearCache(void) override
diff --git a/phosphor-regulators/src/write_verification_error.hpp b/phosphor-regulators/src/write_verification_error.hpp
index bd92ce5..6a7420d 100644
--- a/phosphor-regulators/src/write_verification_error.hpp
+++ b/phosphor-regulators/src/write_verification_error.hpp
@@ -53,8 +53,7 @@
                                     const std::string& inventoryPath) :
         error{"WriteVerificationError: " + error},
         deviceID{deviceID}, inventoryPath{inventoryPath}
-    {
-    }
+    {}
 
     /**
      * Returns the unique ID of the device where the error occurred.
diff --git a/phosphor-regulators/test/test_sdbus_error.hpp b/phosphor-regulators/test/test_sdbus_error.hpp
index 09cc5f7..1937e2d 100644
--- a/phosphor-regulators/test/test_sdbus_error.hpp
+++ b/phosphor-regulators/test/test_sdbus_error.hpp
@@ -29,8 +29,7 @@
 {
   public:
     TestSDBusError(const std::string& error) : error{error}
-    {
-    }
+    {}
 
     const char* what() const noexcept override
     {
