diff --git a/.clang-tidy b/.clang-tidy
index eae3c72..311617b 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -202,7 +202,9 @@
 clang-analyzer-webkit.NoUncountedMemberChecker,
 clang-analyzer-webkit.RefCntblBaseVirtualDtor,
 cppcoreguidelines-init-variables,
+cppcoreguidelines-interfaces-global-init,
 cppcoreguidelines-pro-bounds-pointer-arithmetic,
+cppcoreguidelines-pro-type-member-init,
 cppcoreguidelines-pro-type-reinterpret-cast,
 cppcoreguidelines-special-member-functions,
 misc-misplaced-const,
diff --git a/include/multipart_parser.hpp b/include/multipart_parser.hpp
index e385558..ee028f1 100644
--- a/include/multipart_parser.hpp
+++ b/include/multipart_parser.hpp
@@ -337,10 +337,10 @@
     static constexpr char hyphen = '-';
     static constexpr char colon = ':';
 
-    std::array<bool, 256> boundaryIndex;
+    std::array<bool, 256> boundaryIndex{};
     std::string lookbehind;
-    State state;
-    Boundary flags;
+    State state{State::START};
+    Boundary flags{Boundary::NON_BOUNDARY};
     size_t index = 0;
     size_t partDataMark = 0;
     size_t headerFieldMark = 0;
diff --git a/include/sessions.hpp b/include/sessions.hpp
index 79e71ce..b445915 100644
--- a/include/sessions.hpp
+++ b/include/sessions.hpp
@@ -46,7 +46,7 @@
     std::string clientId;
     std::string clientIp;
     std::chrono::time_point<std::chrono::steady_clock> lastUpdated;
-    PersistenceType persistence;
+    PersistenceType persistence{PersistenceType::TIMEOUT};
     bool cookieAuth = false;
     bool isConfigureSelfOnly = false;
 
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 7cb5cc7..ee402b6 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -564,9 +564,9 @@
 class EventServiceManager
 {
   private:
-    bool serviceEnabled;
-    uint32_t retryAttempts;
-    uint32_t retryTimeoutInterval;
+    bool serviceEnabled = false;
+    uint32_t retryAttempts = 0;
+    uint32_t retryTimeoutInterval = 0;
 
     EventServiceManager()
     {
@@ -1189,7 +1189,8 @@
                 std::size_t index = 0;
                 while ((index + iEventSize) <= bytesTransferred)
                 {
-                    struct inotify_event event;
+                    struct inotify_event event
+                    {};
                     std::memcpy(&event, &readBuffer[index], iEventSize);
                     if (event.wd == dirWatchDesc)
                     {
diff --git a/redfish-core/include/utils/systemd_utils.hpp b/redfish-core/include/utils/systemd_utils.hpp
index 75bbe35..ad157dc 100644
--- a/redfish-core/include/utils/systemd_utils.hpp
+++ b/redfish-core/include/utils/systemd_utils.hpp
@@ -39,7 +39,7 @@
 
     if (sd_id128_get_machine_app_specific(appId, &machineId) == 0)
     {
-        std::array<char, SD_ID128_STRING_MAX> str;
+        std::array<char, SD_ID128_STRING_MAX> str{};
         ret = sd_id128_to_string(machineId, str.data());
         ret.insert(8, 1, '-');
         ret.insert(13, 1, '-');
diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index 41b14f8..61c3c68 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -358,7 +358,7 @@
 {
     std::string hostName;
 
-    std::array<char, HOST_NAME_MAX> hostNameCStr;
+    std::array<char, HOST_NAME_MAX> hostNameCStr{};
     if (gethostname(hostNameCStr.data(), hostNameCStr.size()) == 0)
     {
         hostName = hostNameCStr.data();
