diff --git a/http/http_response.hpp b/http/http_response.hpp
index c1f25a5..b1b15fb 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -41,9 +41,9 @@
     {}
 
     Response(Response&& res) noexcept :
-        stringResponse(std::move(res.stringResponse)), completed(res.completed)
+        stringResponse(std::move(res.stringResponse)),
+        jsonValue(std::move(res.jsonValue)), completed(res.completed)
     {
-        jsonValue = std::move(res.jsonValue);
         // See note in operator= move handler for why this is needed.
         if (!res.completed)
         {
diff --git a/http/utility.hpp b/http/utility.hpp
index 4f5cea7..f49aa9b 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -485,7 +485,6 @@
         char base64code0 = 0;
         char base64code1 = 0;
         char base64code2 = 0; // initialized to 0 to suppress warnings
-        char base64code3 = 0;
 
         base64code0 = getCodeValue(input[i]);
         if (base64code0 == nop)
@@ -528,7 +527,7 @@
             { // padding , end of input
                 return (base64code2 & 0x03) == 0;
             }
-            base64code3 = getCodeValue(input[i]);
+            char base64code3 = getCodeValue(input[i]);
             if (base64code3 == nop)
             { // non base64 character
                 return false;
diff --git a/include/dbus_monitor.hpp b/include/dbus_monitor.hpp
index 5f409d7..0838f0a 100644
--- a/include/dbus_monitor.hpp
+++ b/include/dbus_monitor.hpp
@@ -167,9 +167,7 @@
         // PropertiesChanged
         thisSession.matches.reserve(thisSession.matches.size() +
                                     paths->size() * (1U + interfaceCount));
-        std::string objectManagerMatchString;
-        std::string propertiesMatchString;
-        std::string objectManagerInterfacesMatchString;
+
         // These regexes derived on the rules here:
         // https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names
         std::regex validPath("^/([A-Za-z0-9_]+/?)*$");
@@ -192,7 +190,7 @@
                 conn.close();
                 return;
             }
-            propertiesMatchString =
+            std::string propertiesMatchString =
                 ("type='signal',"
                  "interface='org.freedesktop.DBus.Properties',"
                  "path_namespace='" +
@@ -234,7 +232,7 @@
                             onPropertyUpdate, &conn));
                 }
             }
-            objectManagerMatchString =
+            std::string objectManagerMatchString =
                 ("type='signal',"
                  "interface='org.freedesktop.DBus.ObjectManager',"
                  "path_namespace='" +
diff --git a/include/http_utility.hpp b/include/http_utility.hpp
index cd1be3e..e1a8e2a 100644
--- a/include/http_utility.hpp
+++ b/include/http_utility.hpp
@@ -44,11 +44,10 @@
 inline ContentType getPreferedContentType(std::string_view header,
                                           std::span<ContentType> preferedOrder)
 {
-    size_t index = 0;
     size_t lastIndex = 0;
     while (lastIndex < header.size() + 1)
     {
-        index = header.find(',', lastIndex);
+        size_t index = header.find(',', lastIndex);
         if (index == std::string_view::npos)
         {
             index = header.size();
diff --git a/include/ibm/locks.hpp b/include/ibm/locks.hpp
index e713f97..e3abb46 100644
--- a/include/ibm/locks.hpp
+++ b/include/ibm/locks.hpp
@@ -431,12 +431,9 @@
 
 inline Rc Lock::isConflictWithTable(const LockRequests& refLockRequestStructure)
 {
-
-    uint32_t thisTransactionId = 0;
-
     if (lockTable.empty())
     {
-        thisTransactionId = generateTransactionId();
+        uint32_t thisTransactionId = generateTransactionId();
         BMCWEB_LOG_DEBUG << thisTransactionId;
         // Lock table is empty, so we are safe to add the lockrecords
         // as there will be no conflict
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 95503d7..0e3e070 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -432,7 +432,6 @@
         {
             for (const auto& connection : object.second)
             {
-                std::string& objectManagerPath = connections[connection.first];
                 for (const auto& interface : connection.second)
                 {
                     BMCWEB_LOG_DEBUG << connection.first << " has interface "
@@ -441,7 +440,7 @@
                     {
                         BMCWEB_LOG_DEBUG << "found object manager path "
                                          << object.first;
-                        objectManagerPath = object.first;
+                        connections[connection.first] = object.first;
                     }
                 }
             }
diff --git a/redfish-core/include/utils/chassis_utils.hpp b/redfish-core/include/utils/chassis_utils.hpp
index 0acbf33..b7f16d8 100644
--- a/redfish-core/include/utils/chassis_utils.hpp
+++ b/redfish-core/include/utils/chassis_utils.hpp
@@ -35,11 +35,10 @@
         }
 
         std::optional<std::string> chassisPath;
-        std::string chassisName;
         for (const std::string& chassis : chassisPaths)
         {
             sdbusplus::message::object_path path(chassis);
-            chassisName = path.filename();
+            std::string chassisName = path.filename();
             if (chassisName.empty())
             {
                 BMCWEB_LOG_ERROR << "Failed to find '/' in " << chassis;
diff --git a/redfish-core/lib/health.hpp b/redfish-core/lib/health.hpp
index 2f0f156..7955fc0 100644
--- a/redfish-core/lib/health.hpp
+++ b/redfish-core/lib/health.hpp
@@ -67,7 +67,6 @@
 
         for (const auto& [path, interfaces] : statuses)
         {
-            bool isChild = false;
             bool isSelf = false;
             if (selfPath)
             {
@@ -86,6 +85,7 @@
                 // of this association is an inventory item, or one of the
                 // endpoints in this association is a child
 
+                bool isChild = false;
                 for (const std::string& child : inventory)
                 {
                     if (path.str.starts_with(child))
diff --git a/redfish-core/lib/hypervisor_system.hpp b/redfish-core/lib/hypervisor_system.hpp
index 78bf626..2b27fb4 100644
--- a/redfish-core/lib/hypervisor_system.hpp
+++ b/redfish-core/lib/hypervisor_system.hpp
@@ -585,11 +585,10 @@
     // address
     const nlohmann::json& thisJson = input[0];
 
-    // For the error string
-    std::string pathString = "IPv4StaticAddresses/1";
-
     if (!thisJson.is_null() && !thisJson.empty())
     {
+        // For the error string
+        std::string pathString = "IPv4StaticAddresses/1";
         std::optional<std::string> address;
         std::optional<std::string> subnetMask;
         std::optional<std::string> gateway;
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index 47f0c5d..33aefa3 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -273,9 +273,6 @@
                     }
                 }
 
-                nlohmann::json& value =
-                    sensorJson["PowerLimit"]["LimitInWatts"];
-
                 // LimitException is Mandatory attribute as per OCP
                 // Baseline Profile – v1.0.0, so currently making it
                 // "NoAction" as default value to make it OCP Compliant.
@@ -285,7 +282,12 @@
                 {
                     // Redfish specification indicates PowerLimit should
                     // be null if the limit is not enabled.
-                    value = powerCap * std::pow(10, scale);
+                    sensorJson["PowerLimit"]["LimitInWatts"] =
+                        powerCap * std::pow(10, scale);
+                }
+                else
+                {
+                    sensorJson["PowerLimit"]["LimitInWatts"] = nullptr;
                 }
             };
 
diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp
index b6c500e..d9c26f3 100644
--- a/redfish-core/lib/processor.hpp
+++ b/redfish-core/lib/processor.hpp
@@ -1294,9 +1294,9 @@
             return;
         }
 
-        std::string appliedConfigUri;
         if (appliedConfigJson)
         {
+            std::string appliedConfigUri;
             if (!json_util::readJson(*appliedConfigJson, asyncResp->res,
                                      "@odata.id", appliedConfigUri))
             {
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 3cd4379..627ba7e 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -531,11 +531,10 @@
             return;
         }
         const std::string* chassisPath = nullptr;
-        std::string chassisName;
         for (const std::string& chassis : chassisPaths)
         {
             sdbusplus::message::object_path path(chassis);
-            chassisName = path.filename();
+            std::string chassisName = path.filename();
             if (chassisName.empty())
             {
                 BMCWEB_LOG_ERROR << "Failed to find '/' in " << chassis;
