diff --git a/include/error_monitors.hpp b/include/error_monitors.hpp
index 80332b0..def14d5 100644
--- a/include/error_monitors.hpp
+++ b/include/error_monitors.hpp
@@ -36,8 +36,9 @@
 }
 
 // Start the signal monitors
-bool startMonitors(boost::asio::io_context& io,
-                   std::shared_ptr<sdbusplus::asio::connection> conn)
+bool startMonitors(
+    [[maybe_unused]] boost::asio::io_context& io,
+    [[maybe_unused]] std::shared_ptr<sdbusplus::asio::connection> conn)
 {
     // smiMonitor =
     // std::make_unique<host_error_monitor::smi_monitor::SMIMonitor>(
diff --git a/include/error_monitors/base_gpio_monitor.hpp b/include/error_monitors/base_gpio_monitor.hpp
index 74e1f88..1da5580 100644
--- a/include/error_monitors/base_gpio_monitor.hpp
+++ b/include/error_monitors/base_gpio_monitor.hpp
@@ -34,11 +34,11 @@
 
 class BaseGPIOMonitor : public host_error_monitor::base_monitor::BaseMonitor
 {
-    AssertValue assertValue;
-
     gpiod::line line;
     boost::asio::posix::stream_descriptor event;
 
+    AssertValue assertValue;
+
     virtual void logEvent()
     {}
 
diff --git a/include/error_monitors/base_gpio_poll_monitor.hpp b/include/error_monitors/base_gpio_poll_monitor.hpp
index 8b4fe1f..189efb3 100644
--- a/include/error_monitors/base_gpio_poll_monitor.hpp
+++ b/include/error_monitors/base_gpio_poll_monitor.hpp
@@ -35,16 +35,16 @@
 
 class BaseGPIOPollMonitor : public host_error_monitor::base_monitor::BaseMonitor
 {
-    AssertValue assertValue;
-    size_t pollingTimeMs;
-    size_t timeoutMs;
-
     boost::asio::steady_timer pollingTimer;
     std::chrono::steady_clock::time_point timeoutTime;
 
     gpiod::line line;
     boost::asio::posix::stream_descriptor event;
 
+    AssertValue assertValue;
+    size_t pollingTimeMs;
+    size_t timeoutMs;
+
     virtual void logEvent()
     {}
 
@@ -127,7 +127,7 @@
             {
                 line.event_read();
             }
-            catch (std::system_error)
+            catch (std::system_error&)
             {
                 break;
             }
diff --git a/include/host_error_monitor.hpp b/include/host_error_monitor.hpp
index c69359d..25ff550 100644
--- a/include/host_error_monitor.hpp
+++ b/include/host_error_monitor.hpp
@@ -93,8 +93,9 @@
 }
 
 void startCrashdumpAndRecovery(
-    std::shared_ptr<sdbusplus::asio::connection> conn,
-    RecoveryType requestedRecovery, const std::string& triggerType)
+    [[maybe_unused]] std::shared_ptr<sdbusplus::asio::connection> conn,
+    [[maybe_unused]] RecoveryType requestedRecovery,
+    [[maybe_unused]] const std::string& triggerType)
 {
 #ifdef CRASHDUMP
     static RecoveryType recovery;
@@ -108,7 +109,7 @@
             *conn,
             "type='signal',interface='com.intel.crashdump',member='"
             "CrashdumpComplete'",
-            [conn](sdbusplus::message::message& msg) {
+            [conn](sdbusplus::message::message& /*msg*/) {
                 std::cerr << "Crashdump completed\n";
                 handleRecovery(recovery, conn);
                 crashdumpCompleteMatch.reset();
@@ -151,8 +152,9 @@
 }
 #endif
 
-static void beep(std::shared_ptr<sdbusplus::asio::connection> conn,
-                 const uint8_t& beepPriority)
+[[maybe_unused]] static void
+    beep(std::shared_ptr<sdbusplus::asio::connection> conn,
+         const uint8_t& beepPriority)
 {
     conn->async_method_call(
         [](boost::system::error_code ec) {
@@ -168,8 +170,9 @@
         "xyz.openbmc_project.BeepCode", "Beep", uint8_t(beepPriority));
 }
 
-static void checkErrPinCPUs(const size_t errPin,
-                            std::bitset<MAX_CPUS>& errPinCPUs)
+[[maybe_unused]] static void
+    checkErrPinCPUs([[maybe_unused]] const size_t errPin,
+                    std::bitset<MAX_CPUS>& errPinCPUs)
 {
     errPinCPUs.reset();
 #ifdef LIBPECI
diff --git a/src/host_error_monitor.cpp b/src/host_error_monitor.cpp
index a98a407..998f748 100644
--- a/src/host_error_monitor.cpp
+++ b/src/host_error_monitor.cpp
@@ -119,7 +119,7 @@
 }
 } // namespace host_error_monitor
 
-int main(int argc, char* argv[])
+int main(int /*argc*/, char* /*argv*/[])
 {
     // setup connection to dbus
     host_error_monitor::conn =
