diff --git a/src/ADCSensor.cpp b/src/ADCSensor.cpp
index 3daadcb..22194e8 100644
--- a/src/ADCSensor.cpp
+++ b/src/ADCSensor.cpp
@@ -54,10 +54,10 @@
     Sensor(boost::replace_all_copy(sensorName, " ", "_"),
            std::move(_thresholds), sensorConfiguration,
            "xyz.openbmc_project.Configuration.ADC", maxReading, minReading),
-    objServer(objectServer), scaleFactor(scaleFactor), path(path),
-    readState(std::move(readState)), inputDev(io, open(path.c_str(), O_RDONLY)),
-    waitTimer(io), errCount(0), thresholdTimer(io, this),
-    bridgeGpio(std::move(bridgeGpio))
+    objServer(objectServer), inputDev(io, open(path.c_str(), O_RDONLY)),
+    waitTimer(io), path(path), errCount(0), scaleFactor(scaleFactor),
+    bridgeGpio(std::move(bridgeGpio)), readState(std::move(readState)),
+    thresholdTimer(io, this)
 {
     sensorInterface = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/voltage/" + name,
diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index 9458896..27c9c38 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -44,8 +44,9 @@
            std::move(_thresholds), sensorConfiguration, objectType, maxReading,
            minReading),
     objServer(objectServer), inputDev(io, open(path.c_str(), O_RDONLY)),
-    path(path), waitTimer(io), show(show), dtsOffset(dtsOffset),
-    privTcontrol(std::numeric_limits<double>::quiet_NaN()), errCount(0)
+    waitTimer(io), path(path),
+    privTcontrol(std::numeric_limits<double>::quiet_NaN()),
+    dtsOffset(dtsOffset), show(show), errCount(0)
 {
     nameTcontrol = labelTcontrol;
     nameTcontrol += " CPU" + std::to_string(cpuId);
diff --git a/src/ChassisIntrusionSensor.cpp b/src/ChassisIntrusionSensor.cpp
index 536589c..60d0f0d 100644
--- a/src/ChassisIntrusionSensor.cpp
+++ b/src/ChassisIntrusionSensor.cpp
@@ -339,10 +339,10 @@
 ChassisIntrusionSensor::ChassisIntrusionSensor(
     boost::asio::io_service& io,
     std::shared_ptr<sdbusplus::asio::dbus_interface> iface) :
-    mPollTimer(io),
-    mIface(iface), mInputDev(io), mType(IntrusionSensorType::gpio), mBusId(-1),
-    mSlaveAddr(-1), mGpioIndex(-1), mGpioInverted(false), mValue("unknown"),
-    mOldValue("unknown")
+    mIface(iface),
+    mType(IntrusionSensorType::gpio), mValue("unknown"), mOldValue("unknown"),
+    mBusId(-1), mSlaveAddr(-1), mPollTimer(io), mGpioIndex(-1),
+    mGpioInverted(false), mInputDev(io)
 {
 }
 
diff --git a/src/ExitAirTempSensor.cpp b/src/ExitAirTempSensor.cpp
index 9692f7f..adf670e 100644
--- a/src/ExitAirTempSensor.cpp
+++ b/src/ExitAirTempSensor.cpp
@@ -166,8 +166,8 @@
            std::move(thresholdData), sensorConfiguration,
            "xyz.openbmc_project.Configuration.ExitAirTemp", cfmMaxReading,
            cfmMinReading),
-    std::enable_shared_from_this<CFMSensor>(), dbusConnection(conn),
-    parent(parent), objServer(objectServer)
+    std::enable_shared_from_this<CFMSensor>(), parent(parent),
+    dbusConnection(conn), objServer(objectServer)
 {
     sensorInterface =
         objectServer.add_interface("/xyz/openbmc_project/sensors/cfm/" + name,
diff --git a/src/HwmonTempSensor.cpp b/src/HwmonTempSensor.cpp
index b195c0c..15d4d38 100644
--- a/src/HwmonTempSensor.cpp
+++ b/src/HwmonTempSensor.cpp
@@ -47,8 +47,8 @@
     Sensor(boost::replace_all_copy(sensorName, " ", "_"),
            std::move(_thresholds), sensorConfiguration, objectType, maxReading,
            minReading),
-    path(path), objServer(objectServer),
-    inputDev(io, open(path.c_str(), O_RDONLY)), waitTimer(io), errCount(0)
+    objServer(objectServer), inputDev(io, open(path.c_str(), O_RDONLY)),
+    waitTimer(io), path(path), errCount(0)
 {
     sensorInterface = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/temperature/" + name,
diff --git a/src/IntrusionSensorMain.cpp b/src/IntrusionSensorMain.cpp
index a7ca495..96da5f6 100644
--- a/src/IntrusionSensorMain.cpp
+++ b/src/IntrusionSensorMain.cpp
@@ -275,7 +275,7 @@
                             *pState == "degraded");
 
     // get ethNum from path. /org/freedesktop/network1/link/_32 for eth0
-    int pos = pathName.find("/_");
+    size_t pos = pathName.find("/_");
     if (pos == std::string::npos || pathName.length() <= pos + 2)
     {
         std::cerr << "unexpected path name " << pathName << "\n";
diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index d9a4e25..b0b20de 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -69,8 +69,8 @@
            std::move(thresholdData), sensorConfiguration,
            "xyz.openbmc_project.Configuration.ExitAirTemp", ipmbMaxReading,
            ipmbMinReading),
-    objectServer(objectServer), dbusConnection(conn), waitTimer(io),
-    deviceAddress(deviceAddress), readState(PowerState::on)
+    deviceAddress(deviceAddress), readState(PowerState::on),
+    objectServer(objectServer), dbusConnection(conn), waitTimer(io)
 {
     std::string dbusPath = sensorPathPrefix + sensorTypeName + "/" + name;
 
diff --git a/src/MCUTempSensor.cpp b/src/MCUTempSensor.cpp
index 581919c..06376b6 100644
--- a/src/MCUTempSensor.cpp
+++ b/src/MCUTempSensor.cpp
@@ -62,8 +62,8 @@
            std::move(thresholdData), sensorConfiguration,
            "xyz.openbmc_project.Configuration.ExitAirTemp", mcuTempMaxReading,
            mcuTempMinReading),
-    objectServer(objectServer), dbusConnection(conn), waitTimer(io),
-    busId(busId), mcuAddress(mcuAddress), tempReg(tempReg)
+    busId(busId), mcuAddress(mcuAddress), tempReg(tempReg),
+    objectServer(objectServer), dbusConnection(conn), waitTimer(io)
 {
     sensorInterface = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/temperature/" + name,
diff --git a/src/PSUEvent.cpp b/src/PSUEvent.cpp
index f56b281..08101de 100644
--- a/src/PSUEvent.cpp
+++ b/src/PSUEvent.cpp
@@ -98,9 +98,9 @@
     std::shared_ptr<std::set<std::string>> combineEvent,
     std::shared_ptr<bool> state, const std::string& psuName) :
     eventInterface(eventInterface),
-    inputDev(io, open(path.c_str(), O_RDONLY)), waitTimer(io), errCount(0),
-    path(path), eventName(eventName), assertState(state), asserts(asserts),
-    combineEvent(combineEvent), psuName(psuName)
+    asserts(asserts), combineEvent(combineEvent), assertState(state),
+    errCount(0), path(path), eventName(eventName), waitTimer(io),
+    inputDev(io, open(path.c_str(), O_RDONLY)), psuName(psuName)
 {
     auto found = logID.find(eventName);
     if (found == logID.end())
diff --git a/src/PSUSensor.cpp b/src/PSUSensor.cpp
index a7b72a8..fc24704 100644
--- a/src/PSUSensor.cpp
+++ b/src/PSUSensor.cpp
@@ -44,8 +44,9 @@
                      double max, double min) :
     Sensor(boost::replace_all_copy(sensorName, " ", "_"),
            std::move(_thresholds), sensorConfiguration, objectType, max, min),
-    path(path), objServer(objectServer),
-    inputDev(io, open(path.c_str(), O_RDONLY)), waitTimer(io), errCount(0),
+    objServer(objectServer), inputDev(io, open(path.c_str(), O_RDONLY)),
+    waitTimer(io), path(path), errCount(0),
+
     sensorFactor(factor)
 {
     if constexpr (DEBUG)
diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
index eed0168..3d386e4 100644
--- a/src/PSUSensorMain.cpp
+++ b/src/PSUSensorMain.cpp
@@ -544,7 +544,7 @@
             {
                 /* Find out sensor name index for this label */
                 std::regex rgx("[A-Za-z]+([0-9]+)");
-                int nameIndex{0};
+                size_t nameIndex{0};
                 if (std::regex_search(labelHead, matches, rgx))
                 {
                     nameIndex = std::stoi(matches[1]);
diff --git a/src/PwmSensor.cpp b/src/PwmSensor.cpp
index 3fdde65..5aa729e 100644
--- a/src/PwmSensor.cpp
+++ b/src/PwmSensor.cpp
@@ -29,8 +29,8 @@
 PwmSensor::PwmSensor(const std::string& name, const std::string& sysPath,
                      sdbusplus::asio::object_server& objectServer,
                      const std::string& sensorConfiguration) :
-    name(name),
-    sysPath(sysPath), objectServer(objectServer)
+    sysPath(sysPath),
+    objectServer(objectServer), name(name)
 {
     // add interface under sensor and Control.FanPwm as Control is used
     // in obmc project, also add sensor so it can be viewed as a sensor
diff --git a/src/TachSensor.cpp b/src/TachSensor.cpp
index 86b548f..91a08c1 100644
--- a/src/TachSensor.cpp
+++ b/src/TachSensor.cpp
@@ -50,9 +50,10 @@
                        const std::pair<size_t, size_t>& limits) :
     Sensor(boost::replace_all_copy(fanName, " ", "_"), std::move(_thresholds),
            sensorConfiguration, objectType, limits.second, limits.first),
-    path(path), objServer(objectServer), presence(std::move(presenceSensor)),
-    redundancy(redundancy), inputDev(io, open(path.c_str(), O_RDONLY)),
-    waitTimer(io), errCount(0)
+    objServer(objectServer), redundancy(redundancy),
+    presence(std::move(presenceSensor)),
+    inputDev(io, open(path.c_str(), O_RDONLY)), waitTimer(io), path(path),
+    errCount(0)
 {
     sensorInterface = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/fan_tach/" + name,
diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index bbddcde..fe5537f 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -120,7 +120,7 @@
                       std::shared_ptr<sdbusplus::asio::connection>& conn,
                       size_t thresholdCount)
 {
-    for (int ii = 0; ii < thresholdCount; ii++)
+    for (size_t ii = 0; ii < thresholdCount; ii++)
     {
         std::string thresholdInterface =
             baseInterface + ".Thresholds" + std::to_string(ii);
