Turn on ALL perf checks

1st, alphabetize the tidy-list for good housekeeping.

Next, enable all the clang-tidy performance checks, and resolve all the
issues.  most of the issues boil down to:
1. Using std::move on const variables.  This does nothing.
2. Passing big variables (like std::string) by value.
3. Using double quotes on a find call, which constructs an intermediate
string, rather than using the character overload.

Tested
Loaded on system, logged in successfully and pulled down webui-vue.  No
new errors.

Walked the Redfish tree a bit, and observed no new problems.

Ran redfish service validator.  Got no new failures (although there are
a lot of log service deprecation warnings that we should look at).

Signed-off-by: Ed Tanous <ed@tanous.net>
Change-Id: I2238958c4b22c1e554e09a0a1787c744bdbca43e
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 7ece888..54dafb4 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -156,14 +156,14 @@
 {
     // The redfish log format is "<Timestamp> <MessageId>,<MessageArgs>"
     // First get the Timestamp
-    size_t space = logEntry.find_first_of(" ");
+    size_t space = logEntry.find_first_of(' ');
     if (space == std::string::npos)
     {
         return -EINVAL;
     }
     timestamp = logEntry.substr(0, space);
     // Then get the log contents
-    size_t entryStart = logEntry.find_first_not_of(" ", space);
+    size_t entryStart = logEntry.find_first_not_of(' ', space);
     if (entryStart == std::string::npos)
     {
         return -EINVAL;
@@ -247,8 +247,8 @@
     // Get the Created time from the timestamp. The log timestamp is in
     // RFC3339 format which matches the Redfish format except for the
     // fractional seconds between the '.' and the '+', so just remove them.
-    std::size_t dot = timestamp.find_first_of(".");
-    std::size_t plus = timestamp.find_first_of("+");
+    std::size_t dot = timestamp.find_first_of('.');
+    std::size_t plus = timestamp.find_first_of('+');
     if (dot != std::string::npos && plus != std::string::npos)
     {
         timestamp.erase(dot, plus - dot);
@@ -259,8 +259,8 @@
                     {"EventType", "Event"},
                     {"Severity", std::move(severity)},
                     {"Message", std::move(msg)},
-                    {"MessageId", std::move(messageID)},
-                    {"MessageArgs", std::move(messageArgs)},
+                    {"MessageId", messageID},
+                    {"MessageArgs", messageArgs},
                     {"EventTimestamp", std::move(timestamp)},
                     {"Context", customText}};
     return 0;
@@ -1122,7 +1122,7 @@
         std::string logEntry;
         while (std::getline(logStream, logEntry))
         {
-            size_t space = logEntry.find_first_of(" ");
+            size_t space = logEntry.find_first_of(' ');
             if (space == std::string::npos)
             {
                 // Shouldn't enter here but lets skip it.
@@ -1346,7 +1346,7 @@
     void getMetricReading(const std::string& service,
                           const std::string& objPath, const std::string& intf)
     {
-        std::size_t found = objPath.find_last_of("/");
+        std::size_t found = objPath.find_last_of('/');
         if (found == std::string::npos)
         {
             BMCWEB_LOG_DEBUG << "Invalid objPath received";
diff --git a/redfish-core/include/server_sent_events.hpp b/redfish-core/include/server_sent_events.hpp
index ee4ad4d..578fa19 100644
--- a/redfish-core/include/server_sent_events.hpp
+++ b/redfish-core/include/server_sent_events.hpp
@@ -261,8 +261,8 @@
     ServerSentEvents& operator=(ServerSentEvents&&) = delete;
 
     ServerSentEvents(const std::shared_ptr<boost::beast::tcp_stream>& adaptor) :
-        sseConn(std::move(adaptor)), state(SseConnState::startInit),
-        retryCount(0), maxRetryAttempts(5)
+        sseConn(adaptor), state(SseConnState::startInit), retryCount(0),
+        maxRetryAttempts(5)
     {
         startSSE();
     }
diff --git a/redfish-core/include/utils/collection.hpp b/redfish-core/include/utils/collection.hpp
index e73fce3..85a462a 100644
--- a/redfish-core/include/utils/collection.hpp
+++ b/redfish-core/include/utils/collection.hpp
@@ -44,7 +44,7 @@
 
             for (const auto& object : subtree)
             {
-                auto iter = object.first.rfind("/");
+                auto iter = object.first.rfind('/');
                 if ((iter != std::string::npos) && (iter < object.first.size()))
                 {
                     members.push_back(
diff --git a/redfish-core/include/utils/fw_utils.hpp b/redfish-core/include/utils/fw_utils.hpp
index 6a2ca14..43eded6 100644
--- a/redfish-core/include/utils/fw_utils.hpp
+++ b/redfish-core/include/utils/fw_utils.hpp
@@ -69,7 +69,7 @@
             for (auto& fw : *functionalFw)
             {
 
-                std::string::size_type idPos = fw.rfind("/");
+                std::string::size_type idPos = fw.rfind('/');
                 if (idPos == std::string::npos)
                 {
                     BMCWEB_LOG_DEBUG << "Can't parse firmware ID!";
@@ -110,7 +110,7 @@
                          subtree)
                     {
                         // if can't parse fw id then return
-                        std::string::size_type idPos = obj.first.rfind("/");
+                        std::string::size_type idPos = obj.first.rfind('/');
                         if (idPos == std::string::npos)
                         {
                             messages::internalError(aResp->res);
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 23c7fb9..06c6bf2 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -208,11 +208,11 @@
 inline void handleRoleMapPatch(
     const std::shared_ptr<AsyncResp>& asyncResp,
     const std::vector<std::pair<std::string, LDAPRoleMapData>>& roleMapObjData,
-    const std::string& serverType, std::vector<nlohmann::json>& input)
+    const std::string& serverType, const std::vector<nlohmann::json>& input)
 {
     for (size_t index = 0; index < input.size(); index++)
     {
-        nlohmann::json& thisJson = input[index];
+        const nlohmann::json& thisJson = input[index];
 
         if (thisJson.is_null())
         {
@@ -255,8 +255,12 @@
             std::optional<std::string> remoteGroup;
             std::optional<std::string> localRole;
 
-            if (!json_util::readJson(thisJson, asyncResp->res, "RemoteGroup",
-                                     remoteGroup, "LocalRole", localRole))
+            // This is a copy, but it's required in this case because of how
+            // readJson is structured
+            nlohmann::json thisJsonCopy = thisJson;
+            if (!json_util::readJson(thisJsonCopy, asyncResp->res,
+                                     "RemoteGroup", remoteGroup, "LocalRole",
+                                     localRole))
             {
                 continue;
             }
@@ -1112,11 +1116,8 @@
 
                 if (remoteRoleMapData)
                 {
-                    std::vector<nlohmann::json> remoteRoleMap =
-                        std::move(*remoteRoleMapData);
-
                     handleRoleMapPatch(asyncResp, confData.groupRoleList,
-                                       serverT, remoteRoleMap);
+                                       serverT, *remoteRoleMapData);
                 }
             });
     }
@@ -1367,7 +1368,7 @@
                 {
                     const std::string& path =
                         static_cast<const std::string&>(user.first);
-                    std::size_t lastIndex = path.rfind("/");
+                    std::size_t lastIndex = path.rfind('/');
                     if (lastIndex == std::string::npos)
                     {
                         lastIndex = 0;
@@ -1453,9 +1454,9 @@
                 }
 
                 crow::connections::systemBus->async_method_call(
-                    [asyncResp, username, password{std::move(password)}](
-                        const boost::system::error_code ec2,
-                        sdbusplus::message::message& m) {
+                    [asyncResp, username,
+                     password](const boost::system::error_code ec2,
+                               sdbusplus::message::message& m) {
                         if (ec2)
                         {
                             userErrorMessageHandler(m.get_error(), asyncResp,
@@ -1733,10 +1734,10 @@
         }
         crow::connections::systemBus->async_method_call(
             [this, asyncResp, username, password(std::move(password)),
-             roleId(std::move(roleId)), enabled(std::move(enabled)),
+             roleId(std::move(roleId)), enabled,
              newUser{std::string(*newUserName)},
-             locked(std::move(locked))](const boost::system::error_code ec,
-                                        sdbusplus::message::message& m) {
+             locked](const boost::system::error_code ec,
+                     sdbusplus::message::message& m) {
                 if (ec)
                 {
                     userErrorMessageHandler(m.get_error(), asyncResp, newUser,
@@ -1765,9 +1766,8 @@
         dbus::utility::checkDbusPathExists(
             dbusObjectPath,
             [dbusObjectPath(std::move(dbusObjectPath)), username,
-             password(std::move(password)), roleId(std::move(roleId)),
-             enabled(std::move(enabled)), locked(std::move(locked)),
-             asyncResp{std::move(asyncResp)}](int rc) {
+             password(std::move(password)), roleId(std::move(roleId)), enabled,
+             locked, asyncResp{std::move(asyncResp)}](int rc) {
                 if (!rc)
                 {
                     messages::resourceNotFound(
@@ -1901,8 +1901,8 @@
         const std::string userPath = "/xyz/openbmc_project/user/" + params[0];
 
         crow::connections::systemBus->async_method_call(
-            [asyncResp, username{std::move(params[0])}](
-                const boost::system::error_code ec) {
+            [asyncResp,
+             username{params[0]}](const boost::system::error_code ec) {
                 if (ec)
                 {
                     messages::resourceNotFound(
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 6fc5515..5dc1e1f 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -99,7 +99,7 @@
  */
 inline long getIDFromURL(const std::string_view url)
 {
-    std::size_t found = url.rfind("/");
+    std::size_t found = url.rfind('/');
     if (found == std::string::npos)
     {
         return -1;
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 92bf1a0..b718698 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -473,8 +473,7 @@
                         }
                         if (indicatorChassis)
                         {
-                            setIndicatorLedState(asyncResp,
-                                                 std::move(*indicatorLed));
+                            setIndicatorLedState(asyncResp, *indicatorLed);
                         }
                         else
                         {
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index 05f5d55..55f1cf5 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -201,13 +201,13 @@
 }
 
 inline bool extractEthernetInterfaceData(const std::string& ethiface_id,
-                                         const GetManagedObjects& dbus_data,
+                                         GetManagedObjects& dbus_data,
                                          EthernetInterfaceData& ethData)
 {
     bool idFound = false;
-    for (const auto& objpath : dbus_data)
+    for (auto& objpath : dbus_data)
     {
-        for (const auto& ifacePair : objpath.second)
+        for (auto& ifacePair : objpath.second)
         {
             if (objpath.first == "/xyz/openbmc_project/network/" + ethiface_id)
             {
@@ -290,7 +290,7 @@
                                     &propertyPair.second);
                             if (nameservers != nullptr)
                             {
-                                ethData.nameServers = std::move(*nameservers);
+                                ethData.nameServers = *nameservers;
                             }
                         }
                         else if (propertyPair.first == "StaticNameServers")
@@ -300,8 +300,7 @@
                                     &propertyPair.second);
                             if (staticNameServers != nullptr)
                             {
-                                ethData.staticNameServers =
-                                    std::move(*staticNameServers);
+                                ethData.staticNameServers = *staticNameServers;
                             }
                         }
                         else if (propertyPair.first == "DHCPEnabled")
@@ -320,7 +319,7 @@
                                     &propertyPair.second);
                             if (domainNames != nullptr)
                             {
-                                ethData.domainnames = std::move(*domainNames);
+                                ethData.domainnames = *domainNames;
                             }
                         }
                     }
@@ -895,7 +894,7 @@
     crow::connections::systemBus->async_method_call(
         [ethifaceId{std::string{ethiface_id}}, callback{std::move(callback)}](
             const boost::system::error_code error_code,
-            const GetManagedObjects& resp) {
+            GetManagedObjects& resp) {
             EthernetInterfaceData ethData{};
             boost::container::flat_set<IPv4AddressData> ipv4Data;
             boost::container::flat_set<IPv6AddressData> ipv6Data;
@@ -971,7 +970,7 @@
                     {
                         // Cut out everything until last "/", ...
                         const std::string& ifaceId = objpath.first.str;
-                        std::size_t lastPos = ifaceId.rfind("/");
+                        std::size_t lastPos = ifaceId.rfind('/');
                         if (lastPos != std::string::npos)
                         {
                             // and put it into output vector.
@@ -1264,7 +1263,8 @@
 
     void handleDHCPPatch(const std::string& ifaceId,
                          const EthernetInterfaceData& ethData,
-                         DHCPParameters v4dhcpParms, DHCPParameters v6dhcpParms,
+                         const DHCPParameters& v4dhcpParms,
+                         const DHCPParameters& v6dhcpParms,
                          const std::shared_ptr<AsyncResp>& asyncResp)
     {
         bool ipv4Active = translateDHCPEnabledToBool(ethData.DHCPEnabled, true);
@@ -1601,7 +1601,7 @@
     }
 
     void handleIPv6StaticAddressesPatch(
-        const std::string& ifaceId, nlohmann::json& input,
+        const std::string& ifaceId, const nlohmann::json& input,
         const boost::container::flat_set<IPv6AddressData>& ipv6Data,
         const std::shared_ptr<AsyncResp>& asyncResp)
     {
@@ -1614,7 +1614,7 @@
         size_t entryIdx = 1;
         boost::container::flat_set<IPv6AddressData>::const_iterator niciPentry =
             getNextStaticIpEntry(ipv6Data.cbegin(), ipv6Data.cend());
-        for (nlohmann::json& thisJson : input)
+        for (const nlohmann::json& thisJson : input)
         {
             std::string pathString =
                 "IPv6StaticAddresses/" + std::to_string(entryIdx);
@@ -1623,9 +1623,10 @@
             {
                 std::optional<std::string> address;
                 std::optional<uint8_t> prefixLength;
-
-                if (!json_util::readJson(thisJson, asyncResp->res, "Address",
-                                         address, "PrefixLength", prefixLength))
+                nlohmann::json thisJsonCopy = thisJson;
+                if (!json_util::readJson(thisJsonCopy, asyncResp->res,
+                                         "Address", address, "PrefixLength",
+                                         prefixLength))
                 {
                     messages::propertyValueFormatError(
                         asyncResp->res, thisJson.dump(), pathString);
@@ -1781,7 +1782,7 @@
             // When domain name is empty then it means, that it is a network
             // without domain names, and the host name itself must be treated as
             // FQDN
-            std::string fqdn = std::move(ethData.hostname);
+            std::string fqdn = ethData.hostname;
             if (!ethData.domainnames.empty())
             {
                 fqdn += "." + ethData.domainnames[0];
@@ -1959,8 +1960,7 @@
              staticNameServers = std::move(staticNameServers),
              dhcpv4 = std::move(dhcpv4), dhcpv6 = std::move(dhcpv6),
              v4dhcpParms = std::move(v4dhcpParms),
-             v6dhcpParms = std::move(v6dhcpParms),
-             interfaceEnabled = std::move(interfaceEnabled)](
+             v6dhcpParms = std::move(v6dhcpParms), interfaceEnabled](
                 const bool& success, const EthernetInterfaceData& ethData,
                 const boost::container::flat_set<IPv4AddressData>& ipv4Data,
                 const boost::container::flat_set<IPv6AddressData>& ipv6Data) {
@@ -1976,8 +1976,8 @@
 
                 if (dhcpv4 || dhcpv6)
                 {
-                    handleDHCPPatch(ifaceId, ethData, std::move(v4dhcpParms),
-                                    std::move(v6dhcpParms), asyncResp);
+                    handleDHCPPatch(ifaceId, ethData, v4dhcpParms, v6dhcpParms,
+                                    asyncResp);
                 }
 
                 if (hostname)
@@ -2004,7 +2004,7 @@
                     // nlohmann::json objects. This makes a copy of the
                     // structure, and operates on that, but could be done
                     // more efficiently
-                    nlohmann::json ipv4Static = std::move(*ipv4StaticAddresses);
+                    nlohmann::json ipv4Static = *ipv4StaticAddresses;
                     handleIPv4StaticPatch(ifaceId, ipv4Static, ipv4Data,
                                           asyncResp);
                 }
@@ -2023,7 +2023,7 @@
 
                 if (ipv6StaticAddresses)
                 {
-                    nlohmann::json ipv6Static = std::move(*ipv6StaticAddresses);
+                    nlohmann::json ipv6Static = *ipv6StaticAddresses;
                     handleIPv6StaticAddressesPatch(ifaceId, ipv6Static,
                                                    ipv6Data, asyncResp);
                 }
@@ -2346,10 +2346,12 @@
                 {
                     if (boost::starts_with(ifaceItem, rootInterfaceName + "_"))
                     {
-                        ifaceArray.push_back(
-                            {{"@odata.id",
-                              "/redfish/v1/Managers/bmc/EthernetInterfaces/" +
-                                  rootInterfaceName + "/VLANs/" + ifaceItem}});
+                        std::string path =
+                            "/redfish/v1/Managers/bmc/EthernetInterfaces/";
+                        path += rootInterfaceName;
+                        path += "/VLANs/";
+                        path += ifaceItem;
+                        ifaceArray.push_back({{"@odata.id", std::move(path)}});
                     }
                 }
 
diff --git a/redfish-core/lib/hypervisor_ethernet.hpp b/redfish-core/lib/hypervisor_ethernet.hpp
index 559aa5f..eff9c3c 100644
--- a/redfish-core/lib/hypervisor_ethernet.hpp
+++ b/redfish-core/lib/hypervisor_ethernet.hpp
@@ -123,7 +123,7 @@
                 ifaceArray = nlohmann::json::array();
                 for (const std::string& iface : ifaceList)
                 {
-                    std::size_t lastPos = iface.rfind("/");
+                    std::size_t lastPos = iface.rfind('/');
                     if (lastPos != std::string::npos)
                     {
                         ifaceArray.push_back(
@@ -522,7 +522,7 @@
     }
 
     void handleHypervisorIPv4StaticPatch(
-        const std::string& ifaceId, nlohmann::json&& input,
+        const std::string& ifaceId, const nlohmann::json& input,
         const std::shared_ptr<AsyncResp>& asyncResp)
     {
         if ((!input.is_array()) || input.empty())
@@ -535,7 +535,7 @@
         // Hypervisor considers the first IP address in the array list
         // as the Hypervisor's virtual management interface supports single IPv4
         // address
-        nlohmann::json& thisJson = input[0];
+        const nlohmann::json& thisJson = input[0];
 
         // For the error string
         std::string pathString = "IPv4StaticAddresses/1";
@@ -545,8 +545,8 @@
             std::optional<std::string> address;
             std::optional<std::string> subnetMask;
             std::optional<std::string> gateway;
-
-            if (!json_util::readJson(thisJson, asyncResp->res, "Address",
+            nlohmann::json thisJsonCopy = thisJson;
+            if (!json_util::readJson(thisJsonCopy, asyncResp->res, "Address",
                                      address, "SubnetMask", subnetMask,
                                      "Gateway", gateway))
             {
@@ -818,8 +818,7 @@
             ifaceId,
             [this, asyncResp, ifaceId, hostName = std::move(hostName),
              ipv4StaticAddresses = std::move(ipv4StaticAddresses),
-             ipv4DHCPEnabled = std::move(ipv4DHCPEnabled),
-             dhcpv4 = std::move(dhcpv4)](
+             ipv4DHCPEnabled, dhcpv4 = std::move(dhcpv4)](
                 const bool& success, const EthernetInterfaceData& ethData,
                 const boost::container::flat_set<IPv4AddressData>&) {
                 if (!success)
@@ -831,8 +830,8 @@
 
                 if (ipv4StaticAddresses)
                 {
-                    nlohmann::json ipv4Static = std::move(*ipv4StaticAddresses);
-                    nlohmann::json& ipv4Json = ipv4Static[0];
+                    const nlohmann::json& ipv4Static = *ipv4StaticAddresses;
+                    const nlohmann::json& ipv4Json = ipv4Static[0];
                     // Check if the param is 'null'. If its null, it means that
                     // user wants to delete the IP address. Deleting the IP
                     // address is allowed only if its statically configured.
@@ -846,8 +845,8 @@
                     }
                     else
                     {
-                        handleHypervisorIPv4StaticPatch(
-                            ifaceId, std::move(ipv4Static), asyncResp);
+                        handleHypervisorIPv4StaticPatch(ifaceId, ipv4Static,
+                                                        asyncResp);
                     }
                 }
 
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index c5b7b9d..04f82f7 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -444,7 +444,7 @@
                 nlohmann::json& thisEntry = entriesArray.back();
                 const std::string& path =
                     static_cast<const std::string&>(object.first);
-                std::size_t lastPos = path.rfind("/");
+                std::size_t lastPos = path.rfind('/');
                 if (lastPos == std::string::npos)
                 {
                     continue;
@@ -843,7 +843,7 @@
 
             for (const std::string& path : subTreePaths)
             {
-                std::size_t pos = path.rfind("/");
+                std::size_t pos = path.rfind('/');
                 if (pos != std::string::npos)
                 {
                     std::string logID = path.substr(pos + 1);
@@ -1072,14 +1072,14 @@
 {
     // The redfish log format is "<Timestamp> <MessageId>,<MessageArgs>"
     // First get the Timestamp
-    size_t space = logEntry.find_first_of(" ");
+    size_t space = logEntry.find_first_of(' ');
     if (space == std::string::npos)
     {
         return 1;
     }
     std::string timestamp = logEntry.substr(0, space);
     // Then get the log contents
-    size_t entryStart = logEntry.find_first_not_of(" ", space);
+    size_t entryStart = logEntry.find_first_not_of(' ', space);
     if (entryStart == std::string::npos)
     {
         return 1;
@@ -1139,8 +1139,8 @@
     // Get the Created time from the timestamp. The log timestamp is in RFC3339
     // format which matches the Redfish format except for the fractional seconds
     // between the '.' and the '+', so just remove them.
-    std::size_t dot = timestamp.find_first_of(".");
-    std::size_t plus = timestamp.find_first_of("+");
+    std::size_t dot = timestamp.find_first_of('.');
+    std::size_t plus = timestamp.find_first_of('+');
     if (dot != std::string::npos && plus != std::string::npos)
     {
         timestamp.erase(dot, plus - dot);
@@ -1156,7 +1156,7 @@
         {"Id", logEntryID},
         {"Message", std::move(msg)},
         {"MessageId", std::move(messageID)},
-        {"MessageArgs", std::move(messageArgs)},
+        {"MessageArgs", messageArgs},
         {"EntryType", "Event"},
         {"Severity", std::move(severity)},
         {"Created", std::move(timestamp)}};
@@ -2529,7 +2529,7 @@
             for (const std::string& objpath : resp)
             {
                 // Get the log ID
-                std::size_t lastPos = objpath.rfind("/");
+                std::size_t lastPos = objpath.rfind('/');
                 if (lastPos == std::string::npos)
                 {
                     continue;
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 3992c94..26c2125 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -1900,7 +1900,7 @@
 
                 if (odataId)
                 {
-                    setActiveFirmwareImage(response, std::move(*odataId));
+                    setActiveFirmwareImage(response, *odataId);
                 }
             }
         }
@@ -1954,10 +1954,10 @@
      * @return void
      */
     void setActiveFirmwareImage(const std::shared_ptr<AsyncResp>& aResp,
-                                const std::string&& runningFirmwareTarget)
+                                const std::string& runningFirmwareTarget)
     {
         // Get the Id from /redfish/v1/UpdateService/FirmwareInventory/<Id>
-        std::string::size_type idPos = runningFirmwareTarget.rfind("/");
+        std::string::size_type idPos = runningFirmwareTarget.rfind('/');
         if (idPos == std::string::npos)
         {
             messages::propertyValueNotInList(aResp->res, runningFirmwareTarget,
@@ -1999,7 +1999,7 @@
                 {
                     const std::string& path =
                         static_cast<const std::string&>(object.first);
-                    std::size_t idPos2 = path.rfind("/");
+                    std::size_t idPos2 = path.rfind('/');
 
                     if (idPos2 == std::string::npos)
                     {
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index 4fa7c11..e7b1113 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -543,7 +543,7 @@
                         std::get_if<std::string>(&property.second);
                     if (value != nullptr)
                     {
-                        size_t idx = value->rfind(".");
+                        size_t idx = value->rfind('.');
                         if (idx == std::string::npos ||
                             idx + 1 >= value->size())
                         {
diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index 8752cf8..31efc75 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -82,7 +82,7 @@
                                     &propertyPair.second);
                             if (ntpServers != nullptr)
                             {
-                                ntpData = std::move(*ntpServers);
+                                ntpData = *ntpServers;
                             }
                         }
                         else if (propertyPair.first == "DomainName")
@@ -92,7 +92,7 @@
                                     &propertyPair.second);
                             if (domainNames != nullptr)
                             {
-                                dnData = std::move(*domainNames);
+                                dnData = *domainNames;
                             }
                         }
                     }
@@ -240,10 +240,11 @@
                 asyncResp->res.jsonValue["NTP"]["NTPServers"] = ntpServers;
                 if (hostName.empty() == false)
                 {
-                    std::string fqdn = std::move(hostName);
+                    std::string fqdn = hostName;
                     if (domainNames.empty() == false)
                     {
-                        fqdn += "." + domainNames[0];
+                        fqdn += ".";
+                        fqdn += domainNames[0];
                     }
                     asyncResp->res.jsonValue["FQDN"] = std::move(fqdn);
                 }
@@ -317,7 +318,7 @@
                                     std::get<NET_PROTO_LISTEN_STREAM>(
                                         (*responsePtr)[0]);
                                 std::size_t lastColonPos =
-                                    listenStream.rfind(":");
+                                    listenStream.rfind(':');
                                 if (lastColonPos == std::string::npos)
                                 {
                                     // Not a port
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index 5051696..1c7a009 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -176,7 +176,7 @@
             for (const std::string& chassis : chassisPaths)
             {
                 size_t len = std::string::npos;
-                size_t lastPos = chassis.rfind("/");
+                size_t lastPos = chassis.rfind('/');
                 if (lastPos == std::string::npos)
                 {
                     continue;
@@ -185,7 +185,7 @@
                 if (lastPos == chassis.size() - 1)
                 {
                     size_t end = lastPos;
-                    lastPos = chassis.rfind("/", lastPos - 1);
+                    lastPos = chassis.rfind('/', lastPos - 1);
                     if (lastPos == std::string::npos)
                     {
                         continue;
diff --git a/redfish-core/lib/redfish_util.hpp b/redfish-core/lib/redfish_util.hpp
index 5701712..acaea53 100644
--- a/redfish-core/lib/redfish_util.hpp
+++ b/redfish-core/lib/redfish_util.hpp
@@ -41,7 +41,7 @@
                 return;
             }
 
-            std::size_t idPos = subtree[0].first.rfind("/");
+            std::size_t idPos = subtree[0].first.rfind('/');
             if (idPos == std::string::npos ||
                 (idPos + 1) >= subtree[0].first.size())
             {
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 6480861..567cb0c 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -388,7 +388,7 @@
             std::string chassisName;
             for (const std::string& chassis : chassisPaths)
             {
-                std::size_t lastPos = chassis.rfind("/");
+                std::size_t lastPos = chassis.rfind('/');
                 if (lastPos == std::string::npos)
                 {
                     BMCWEB_LOG_ERROR << "Failed to find '/' in " << chassis;
@@ -441,7 +441,7 @@
         std::string chassisName;
         for (const std::string& chassis : chassisPaths)
         {
-            std::size_t lastPos = chassis.rfind("/");
+            std::size_t lastPos = chassis.rfind('/');
             if (lastPos == std::string::npos)
             {
                 BMCWEB_LOG_ERROR << "Failed to find '/' in " << chassis;
@@ -1149,7 +1149,7 @@
                                         sensorsAsyncResp->res);
                                     return;
                                 }
-                                size_t lastSlash = path.rfind("/");
+                                size_t lastSlash = path.rfind('/');
                                 if (lastSlash == std::string::npos)
                                 {
                                     // this should be impossible
@@ -1180,7 +1180,7 @@
                                     sensorsAsyncResp->res.jsonValue["Fans"];
                                 for (const std::string& item : *collection)
                                 {
-                                    lastSlash = item.rfind("/");
+                                    lastSlash = item.rfind('/');
                                     // make a copy as collection is const
                                     std::string itemName =
                                         item.substr(lastSlash + 1);
@@ -2617,13 +2617,13 @@
                     auto getInventoryItemsCb =
                         [SensorsAsyncResp, sensorNames, connections,
                          objectMgrPaths](
-                            std::shared_ptr<std::vector<InventoryItem>>
+                            const std::shared_ptr<std::vector<InventoryItem>>&
                                 inventoryItems) {
                             BMCWEB_LOG_DEBUG << "getInventoryItemsCb enter";
                             // Get sensor data and store results in JSON
                             getSensorData(SensorsAsyncResp, sensorNames,
                                           connections, objectMgrPaths,
-                                          std::move(inventoryItems));
+                                          inventoryItems);
                             BMCWEB_LOG_DEBUG << "getInventoryItemsCb exit";
                         };
 
@@ -2657,10 +2657,10 @@
     BMCWEB_LOG_DEBUG << "getChassisData enter";
     auto getChassisCb =
         [SensorsAsyncResp](
-            std::shared_ptr<boost::container::flat_set<std::string>>
+            const std::shared_ptr<boost::container::flat_set<std::string>>&
                 sensorNames) {
             BMCWEB_LOG_DEBUG << "getChassisCb enter";
-            processSensorList(SensorsAsyncResp, std::move(sensorNames));
+            processSensorList(SensorsAsyncResp, sensorNames);
             BMCWEB_LOG_DEBUG << "getChassisCb exit";
         };
     SensorsAsyncResp->res.jsonValue["Redundancy"] = nlohmann::json::array();
@@ -2686,7 +2686,7 @@
 {
     for (std::string_view chassisSensor : sensorsList)
     {
-        std::size_t pos = chassisSensor.rfind("/");
+        std::size_t pos = chassisSensor.rfind('/');
         if (pos >= (chassisSensor.size() - 1))
         {
             continue;
@@ -3042,7 +3042,7 @@
                 {
                     BMCWEB_LOG_DEBUG << "Adding sensor: " << sensor;
 
-                    std::size_t lastPos = sensor.rfind("/");
+                    std::size_t lastPos = sensor.rfind('/');
                     if (lastPos == std::string::npos ||
                         lastPos + 1 >= sensor.size())
                     {
@@ -3129,7 +3129,7 @@
                                                   std::vector<std::string>>>>&
                             object) {
                         std::string_view sensor = object.first;
-                        std::size_t lastPos = sensor.rfind("/");
+                        std::size_t lastPos = sensor.rfind('/');
                         if (lastPos == std::string::npos ||
                             lastPos + 1 >= sensor.size())
                         {
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index e89db65..7167503 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -101,7 +101,7 @@
 
                 for (const std::string& objpath : storageList)
                 {
-                    std::size_t lastPos = objpath.rfind("/");
+                    std::size_t lastPos = objpath.rfind('/');
                     if (lastPos == std::string::npos ||
                         (objpath.size() <= lastPos + 1))
                     {
@@ -139,7 +139,7 @@
                 root = nlohmann::json::array();
                 for (const auto& [path, interfaceDict] : subtree)
                 {
-                    std::size_t lastPos = path.rfind("/");
+                    std::size_t lastPos = path.rfind('/');
                     if (lastPos == std::string::npos ||
                         (path.size() <= lastPos + 1))
                     {
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 9f304b0..80d3e05 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -202,11 +202,10 @@
 
                             crow::connections::systemBus->async_method_call(
                                 [aResp, service{connection.first},
-                                 path(std::move(path))](
-                                    const boost::system::error_code ec2,
-                                    const std::vector<
-                                        std::pair<std::string, VariantType>>&
-                                        properties) {
+                                 path](const boost::system::error_code ec2,
+                                       const std::vector<
+                                           std::pair<std::string, VariantType>>&
+                                           properties) {
                                     if (ec2)
                                     {
                                         BMCWEB_LOG_ERROR
@@ -309,11 +308,10 @@
 
                             crow::connections::systemBus->async_method_call(
                                 [aResp, service{connection.first},
-                                 path(std::move(path))](
-                                    const boost::system::error_code ec2,
-                                    const std::vector<
-                                        std::pair<std::string, VariantType>>&
-                                        properties) {
+                                 path](const boost::system::error_code ec2,
+                                       const std::vector<
+                                           std::pair<std::string, VariantType>>&
+                                           properties) {
                                     if (ec2)
                                     {
                                         BMCWEB_LOG_ERROR
@@ -854,7 +852,8 @@
  *
  * @return None.
  */
-inline void getBootSource(std::shared_ptr<AsyncResp> aResp, bool oneTimeEnabled)
+inline void getBootSource(const std::shared_ptr<AsyncResp>& aResp,
+                          bool oneTimeEnabled)
 {
     std::string bootDbusObj =
         oneTimeEnabled ? "/xyz/openbmc_project/control/host0/boot/one_time"
@@ -894,7 +893,7 @@
         "xyz.openbmc_project.Settings", bootDbusObj,
         "org.freedesktop.DBus.Properties", "Get",
         "xyz.openbmc_project.Control.Boot.Source", "BootSource");
-    getBootMode(std::move(aResp), std::move(bootDbusObj));
+    getBootMode(aResp, bootDbusObj);
 }
 
 /**
@@ -1141,8 +1140,8 @@
  */
 inline void setBootModeOrSource(std::shared_ptr<AsyncResp> aResp,
                                 bool oneTimeEnabled,
-                                std::optional<std::string> bootSource,
-                                std::optional<std::string> bootEnable)
+                                const std::optional<std::string>& bootSource,
+                                const std::optional<std::string>& bootEnable)
 {
     std::string bootSourceStr =
         "xyz.openbmc_project.Control.Boot.Source.Sources.Default";
@@ -1287,8 +1286,7 @@
 
             BMCWEB_LOG_DEBUG << "Got one time: " << *oneTimePtr;
 
-            setBootModeOrSource(aResp, *oneTimePtr, std::move(bootSource),
-                                std::move(bootEnable));
+            setBootModeOrSource(aResp, *oneTimePtr, bootSource, bootEnable);
         },
         "xyz.openbmc_project.Settings",
         "/xyz/openbmc_project/control/host0/boot/one_time",
@@ -1305,7 +1303,7 @@
  * @return None.
  */
 inline void setAutomaticRetry(const std::shared_ptr<AsyncResp>& aResp,
-                              const std::string&& automaticRetryConfig)
+                              const std::string& automaticRetryConfig)
 {
     BMCWEB_LOG_DEBUG << "Set Automatic Retry.";
 
@@ -2008,8 +2006,7 @@
             {
                 return;
             }
-            setWDTProperties(asyncResp, std::move(wdtEnable),
-                             std::move(wdtTimeOutAction));
+            setWDTProperties(asyncResp, wdtEnable, wdtTimeOutAction);
         }
 
         if (bootProps)
@@ -2032,13 +2029,13 @@
             }
             if (automaticRetryConfig)
             {
-                setAutomaticRetry(asyncResp, std::move(*automaticRetryConfig));
+                setAutomaticRetry(asyncResp, *automaticRetryConfig);
             }
         }
 
         if (indicatorLed)
         {
-            setIndicatorLedState(asyncResp, std::move(*indicatorLed));
+            setIndicatorLedState(asyncResp, *indicatorLed);
         }
 
         if (powerRestorePolicy)
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 7e6a0b8..a247ad0 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -415,7 +415,7 @@
         {
             // Must be option 2
             // Verify ImageURI has transfer protocol in it
-            size_t separator = imageURI.find(":");
+            size_t separator = imageURI.find(':');
             if ((separator == std::string::npos) ||
                 ((separator + 1) > imageURI.size()))
             {
@@ -451,7 +451,7 @@
         }
 
         // Format should be <IP or Hostname>/<file> for imageURI
-        size_t separator = imageURI.find("/");
+        size_t separator = imageURI.find('/');
         if ((separator == std::string::npos) ||
             ((separator + 1) > imageURI.size()))
         {
@@ -726,7 +726,7 @@
                 {
                     // if can't parse fw id then return
                     std::size_t idPos;
-                    if ((idPos = obj.first.rfind("/")) == std::string::npos)
+                    if ((idPos = obj.first.rfind('/')) == std::string::npos)
                     {
                         messages::internalError(asyncResp->res);
                         BMCWEB_LOG_DEBUG << "Can't parse firmware ID!!";
@@ -913,7 +913,7 @@
                             // swInvPurpose is of format:
                             // xyz.openbmc_project.Software.Version.VersionPurpose.ABC
                             // Translate this to "ABC image"
-                            size_t endDesc = swInvPurpose->rfind(".");
+                            size_t endDesc = swInvPurpose->rfind('.');
                             if (endDesc == std::string::npos)
                             {
                                 messages::internalError(asyncResp->res);
diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index f6a56f6..a921dcb 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -160,7 +160,7 @@
                 nlohmann::json item;
                 const std::string& path =
                     static_cast<const std::string&>(object.first);
-                std::size_t lastIndex = path.rfind("/");
+                std::size_t lastIndex = path.rfind('/');
                 if (lastIndex == std::string::npos)
                 {
                     continue;
@@ -203,7 +203,7 @@
                 const std::string& path =
                     static_cast<const std::string&>(item.first);
 
-                std::size_t lastItem = path.rfind("/");
+                std::size_t lastItem = path.rfind('/');
                 if (lastItem == std::string::npos)
                 {
                     continue;
@@ -521,7 +521,7 @@
                             const std::string& path =
                                 static_cast<const std::string&>(object.first);
 
-                            std::size_t lastIndex = path.rfind("/");
+                            std::size_t lastIndex = path.rfind('/');
                             if (lastIndex == std::string::npos)
                             {
                                 continue;
@@ -903,7 +903,7 @@
                             const std::string& path =
                                 static_cast<const std::string&>(object.first);
 
-                            std::size_t lastIndex = path.rfind("/");
+                            std::size_t lastIndex = path.rfind('/');
                             if (lastIndex == std::string::npos)
                             {
                                 continue;