diff --git a/.clang-tidy b/.clang-tidy
index 953c78e..23cc7ae 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -276,6 +276,13 @@
 readability-else-after-return,
 readability-named-parameter,
 readability-redundant-control-flow,
+readability-redundant-declaration,
+readability-redundant-function-ptr-dereference,
+readability-redundant-member-init,
+readability-redundant-preprocessor,
+readability-redundant-smartptr-get,
+readability-redundant-string-cstr,
+readability-redundant-string-init,
 readability-identifier-naming'
 
 WarningsAsErrors: '*'
diff --git a/http/app.hpp b/http/app.hpp
index 03de3f8..c1472e5 100644
--- a/http/app.hpp
+++ b/http/app.hpp
@@ -142,7 +142,7 @@
 
     std::vector<const std::string*> getRoutes()
     {
-        const std::string root("");
+        const std::string root;
         return router.getRoutes(root);
     }
     std::vector<const std::string*> getRoutes(const std::string& parent)
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 0b58e9b..61d3f7b 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -261,7 +261,7 @@
                 return true;
             }
             sslUser.resize(lastChar);
-            std::string unsupportedClientId = "";
+            std::string unsupportedClientId;
             sessionIsFromTransport = true;
             userSession = persistent_data::SessionStore::getInstance()
                               .generateUserSession(
@@ -725,7 +725,6 @@
         BMCWEB_LOG_DEBUG << this << " timer started";
     }
 
-  private:
     Adaptor adaptor;
     Handler* handler;
     // Making this a std::optional allows it to be efficiently destroyed and
diff --git a/http/websocket.hpp b/http/websocket.hpp
index eadb276..213c4c7 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -77,7 +77,7 @@
         std::function<void(Connection&, const std::string&)> closeHandler,
         std::function<void(Connection&)> errorHandler) :
         Connection(reqIn, reqIn.session->username),
-        ws(std::move(adaptorIn)), inString(), inBuffer(inString, 131088),
+        ws(std::move(adaptorIn)), inBuffer(inString, 131088),
         openHandler(std::move(openHandler)),
         messageHandler(std::move(messageHandler)),
         closeHandler(std::move(closeHandler)),
diff --git a/include/authorization.hpp b/include/authorization.hpp
index 27d7b32..f8e74b9 100644
--- a/include/authorization.hpp
+++ b/include/authorization.hpp
@@ -85,7 +85,7 @@
     // needed.
     // This whole flow needs to be revisited anyway, as we can't be
     // calling directly into pam for every request
-    std::string unsupportedClientId = "";
+    std::string unsupportedClientId;
     return persistent_data::SessionStore::getInstance().generateUserSession(
         user, clientIp, unsupportedClientId,
         persistent_data::PersistenceType::SINGLE_REQUEST, isConfigureSelfOnly);
diff --git a/include/ibm/management_console_rest.hpp b/include/ibm/management_console_rest.hpp
index e80e727..39146c9 100644
--- a/include/ibm/management_console_rest.hpp
+++ b/include/ibm/management_console_rest.hpp
@@ -512,7 +512,8 @@
         asyncResp->res.result(boost::beast::http::status::conflict);
         auto var =
             std::get<std::pair<uint32_t, LockRequest>>(conflictStatus.second);
-        nlohmann::json returnJson, segments;
+        nlohmann::json returnJson;
+        nlohmann::json segments;
         nlohmann::json myarray = nlohmann::json::array();
         returnJson["TransactionID"] = var.first;
         returnJson["SessionID"] = std::get<0>(var.second);
@@ -579,7 +580,8 @@
     asyncResp->res.result(boost::beast::http::status::unauthorized);
 
     auto var = statusRelease.second;
-    nlohmann::json returnJson, segments;
+    nlohmann::json returnJson;
+    nlohmann::json segments;
     nlohmann::json myArray = nlohmann::json::array();
     returnJson["TransactionID"] = var.first;
     returnJson["SessionID"] = std::get<0>(var.second);
diff --git a/include/login_routes.hpp b/include/login_routes.hpp
index c918cdd..1087b0b 100644
--- a/include/login_routes.hpp
+++ b/include/login_routes.hpp
@@ -185,7 +185,7 @@
                 }
                 else
                 {
-                    std::string unsupportedClientId = "";
+                    std::string unsupportedClientId;
                     auto session =
                         persistent_data::SessionStore::getInstance()
                             .generateUserSession(
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 8aab757..6861571 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -2044,7 +2044,7 @@
 
     // If accessing a single attribute, fill in and update objectPath,
     // otherwise leave destProperty blank
-    std::string destProperty = "";
+    std::string destProperty;
     const char* attrSeperator = "/attr/";
     size_t attrPosition = objectPath.find(attrSeperator);
     if (attrPosition != objectPath.npos)
diff --git a/include/persistent_data.hpp b/include/persistent_data.hpp
index 47bb8a9..02f2cce 100644
--- a/include/persistent_data.hpp
+++ b/include/persistent_data.hpp
@@ -289,7 +289,7 @@
         persistentFile << data;
     }
 
-    std::string systemUuid{""};
+    std::string systemUuid;
 };
 
 inline ConfigFile& getConfig()
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index ec294ae..3429c02 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -1356,7 +1356,7 @@
         for (const auto& it :
              EventServiceManager::getInstance().subscriptionsMap)
         {
-            Subscription& entry = *it.second.get();
+            Subscription& entry = *it.second;
             if (entry.eventFormatType == metricReportFormatType)
             {
                 entry.filterAndSendReports(id, *readings);
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 8770782..5530e12 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -1191,7 +1191,7 @@
                         messages::success(asyncResp->res);
                         return;
                     },
-                    "xyz.openbmc_project.User.Manager", dbusObjectPath.c_str(),
+                    "xyz.openbmc_project.User.Manager", dbusObjectPath,
                     "org.freedesktop.DBus.Properties", "Set",
                     "xyz.openbmc_project.User.Attributes", "UserEnabled",
                     dbus::utility::DbusVariantType{*enabled});
@@ -1221,7 +1221,7 @@
                         }
                         messages::success(asyncResp->res);
                     },
-                    "xyz.openbmc_project.User.Manager", dbusObjectPath.c_str(),
+                    "xyz.openbmc_project.User.Manager", dbusObjectPath,
                     "org.freedesktop.DBus.Properties", "Set",
                     "xyz.openbmc_project.User.Attributes", "UserPrivilege",
                     dbus::utility::DbusVariantType{priv});
@@ -1250,7 +1250,7 @@
                         messages::success(asyncResp->res);
                         return;
                     },
-                    "xyz.openbmc_project.User.Manager", dbusObjectPath.c_str(),
+                    "xyz.openbmc_project.User.Manager", dbusObjectPath,
                     "org.freedesktop.DBus.Properties", "Set",
                     "xyz.openbmc_project.User.Attributes",
                     "UserLockedForFailedAttempt",
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index f4260a8..5283fff 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -2188,7 +2188,7 @@
                                     }
                                 };
 
-                            if (vlanEnable == true)
+                            if (vlanEnable)
                             {
                                 crow::connections::systemBus->async_method_call(
                                     std::move(callback),
diff --git a/redfish-core/lib/hypervisor_system.hpp b/redfish-core/lib/hypervisor_system.hpp
index 588cf13..645e39f 100644
--- a/redfish-core/lib/hypervisor_system.hpp
+++ b/redfish-core/lib/hypervisor_system.hpp
@@ -541,7 +541,7 @@
     // Set the IPv4 address origin to the DHCP / Static as per the new value
     // of the DHCPEnabled property
     std::string origin;
-    if (ipv4DHCPEnabled == false)
+    if (!ipv4DHCPEnabled)
     {
         origin = "xyz.openbmc_project.Network.IP.AddressOrigin.Static";
     }
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index aa4d5ec..84e6b34 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -676,7 +676,7 @@
                         entryID + "/attachment";
                 }
             }
-            if (foundDumpEntry == false)
+            if (!foundDumpEntry)
             {
                 BMCWEB_LOG_ERROR << "Can't find Dump Entry";
                 messages::internalError(asyncResp->res);
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index 49304e2..f20681b 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -546,7 +546,7 @@
                             << "Invalid property type for Dimm Presence";
                         return;
                     }
-                    if (*value == false)
+                    if (!*value)
                     {
                         aResp->res.jsonValue["Status"]["State"] = "Absent";
                     }
diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp
index 8e07881..b51a901 100644
--- a/redfish-core/lib/processor.hpp
+++ b/redfish-core/lib/processor.hpp
@@ -92,7 +92,7 @@
                     messages::internalError(aResp->res);
                     return;
                 }
-                if (*cpuPresent == false)
+                if (!*cpuPresent)
                 {
                     // Slot is not populated
                     aResp->res.jsonValue["Status"]["State"] = "Absent";
@@ -106,7 +106,7 @@
                     messages::internalError(aResp->res);
                     return;
                 }
-                if (*cpuFunctional == false)
+                if (!*cpuFunctional)
                 {
                     aResp->res.jsonValue["Status"]["Health"] = "Critical";
                 }
@@ -248,7 +248,7 @@
                                         std::get_if<bool>(&property.second);
                                     if (present != nullptr)
                                     {
-                                        if (*present == true)
+                                        if (*present)
                                         {
                                             slotPresent = true;
                                             totalCores++;
@@ -442,12 +442,12 @@
             std::string state = "Enabled";
             std::string health = "OK";
 
-            if (accPresent != nullptr && *accPresent == false)
+            if (accPresent != nullptr && !*accPresent)
             {
                 state = "Absent";
             }
 
-            if ((accFunctional != nullptr) && (*accFunctional == false))
+            if ((accFunctional != nullptr) && !*accFunctional)
             {
                 if (state == "Enabled")
                 {
diff --git a/redfish-core/lib/roles.hpp b/redfish-core/lib/roles.hpp
index c18942f..6c67a33 100644
--- a/redfish-core/lib/roles.hpp
+++ b/redfish-core/lib/roles.hpp
@@ -81,7 +81,7 @@
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                const std::string& roleId) {
                 nlohmann::json privArray = nlohmann::json::array();
-                if (false == getAssignedPrivFromRole(roleId, privArray))
+                if (!getAssignedPrivFromRole(roleId, privArray))
                 {
                     messages::resourceNotFound(asyncResp->res, "Role", roleId);
 
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index f3fa52c..4d4b4cc 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -284,11 +284,7 @@
 class InventoryItem
 {
   public:
-    InventoryItem(const std::string& objPath) :
-        objectPath(objPath), name(), isPresent(true), isFunctional(true),
-        isPowerSupply(false), powerSupplyEfficiencyPercent(-1), manufacturer(),
-        model(), partNumber(), serialNumber(), sensors(), ledObjectPath(""),
-        ledState(LedState::UNKNOWN)
+    InventoryItem(const std::string& objPath) : objectPath(objPath)
     {
         // Set inventory item name to last node of object path
         sdbusplus::message::object_path path(objectPath);
@@ -301,17 +297,17 @@
 
     std::string objectPath;
     std::string name;
-    bool isPresent;
-    bool isFunctional;
-    bool isPowerSupply;
-    int powerSupplyEfficiencyPercent;
+    bool isPresent = true;
+    bool isFunctional = true;
+    bool isPowerSupply = false;
+    int powerSupplyEfficiencyPercent = -1;
     std::string manufacturer;
     std::string model;
     std::string partNumber;
     std::string serialNumber;
     std::set<std::string> sensors;
     std::string ledObjectPath;
-    LedState ledState;
+    LedState ledState = LedState::UNKNOWN;
 };
 
 /**
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 4cc3d8b..d680537 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -55,7 +55,7 @@
         aResp->res.jsonValue["MemorySummary"]["Status"]["State"];
     if (prevMemSummary == "Disabled")
     {
-        if (isDimmFunctional == true)
+        if (isDimmFunctional)
         {
             aResp->res.jsonValue["MemorySummary"]["Status"]["State"] =
                 "Enabled";
@@ -114,7 +114,7 @@
     // Functional.
     if (prevProcState == "Disabled")
     {
-        if (isCpuFunctional == true)
+        if (isCpuFunctional)
         {
             aResp->res.jsonValue["ProcessorSummary"]["Status"]["State"] =
                 "Enabled";
@@ -1129,7 +1129,7 @@
             }
 
             BMCWEB_LOG_DEBUG << "Auto Reboot: " << autoRebootEnabled;
-            if (autoRebootEnabled == true)
+            if (autoRebootEnabled)
             {
                 aResp->res.jsonValue["Boot"]["AutomaticRetryConfig"] =
                     "RetryAttempts";
@@ -2490,7 +2490,7 @@
                         return;
                     }
 
-                    if (parseIpsProperties(aResp, properties) == false)
+                    if (!parseIpsProperties(aResp, properties))
                     {
                         messages::internalError(aResp->res);
                         return;
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index ba92748..4b18520 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -263,7 +263,7 @@
     int timeoutTimeSeconds = 10)
 {
     // Only allow one FW update at a time
-    if (fwUpdateInProgress != false)
+    if (fwUpdateInProgress)
     {
         if (asyncResp)
         {
@@ -819,7 +819,7 @@
                                  std::string, std::vector<std::string>>>>& obj :
                          subtree)
                     {
-                        if (boost::ends_with(obj.first, *swId) != true)
+                        if (!boost::ends_with(obj.first, *swId))
                         {
                             continue;
                         }
diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index d646698..ab27fc7 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -133,7 +133,7 @@
                     }
                     aResp->res.jsonValue["Inserted"] = *activeValue;
 
-                    if (*activeValue == true)
+                    if (*activeValue)
                     {
                         aResp->res.jsonValue["ConnectedVia"] = "Applet";
                     }
@@ -400,7 +400,7 @@
     }
 
     // optional param inserted must be true
-    if ((inserted != std::nullopt) && (*inserted != true))
+    if ((inserted != std::nullopt) && !*inserted)
     {
         BMCWEB_LOG_ERROR
             << "Request action optional parameter Inserted must be true.";
@@ -814,7 +814,7 @@
                     actionParams.inserted, actionParams.transferMethod,
                     actionParams.transferProtocolType);
 
-                if (paramsValid == false)
+                if (!paramsValid)
                 {
                     return;
                 }
diff --git a/redfish-core/ut/configfile_test.cpp b/redfish-core/ut/configfile_test.cpp
index 9f6bc13..7e9c785 100644
--- a/redfish-core/ut/configfile_test.cpp
+++ b/redfish-core/ut/configfile_test.cpp
@@ -49,7 +49,7 @@
 {
     crow::Response res;
 
-    const std::string fileName = "";
+    const std::string fileName;
     EXPECT_FALSE(isValidConfigFileName(fileName, res));
 }
 TEST(ConfigFileTest, FileNameSlash)
