diff --git a/manager/json-config.hpp b/manager/json-config.hpp
index 2c4e16d..4eb77db 100644
--- a/manager/json-config.hpp
+++ b/manager/json-config.hpp
@@ -70,17 +70,16 @@
      */
     bool filePathExists(const std::vector<std::string>& names)
     {
-        auto it =
-            std::find_if(names.begin(), names.end(), [this](const auto& name) {
-                auto tempConfFile =
-                    fs::path{confBasePath} / name / confFileName;
-                if (fs::exists(tempConfFile))
-                {
-                    confFile = tempConfFile;
-                    return true;
-                }
-                return false;
-            });
+        auto it = std::find_if(names.begin(), names.end(),
+                               [this](const auto& name) {
+            auto tempConfFile = fs::path{confBasePath} / name / confFileName;
+            if (fs::exists(tempConfFile))
+            {
+                confFile = tempConfFile;
+                return true;
+            }
+            return false;
+        });
         return it == names.end() ? false : true;
     }
 
@@ -160,8 +159,8 @@
         try
         {
             // Get all objects implementing the compatible interface
-            auto objects =
-                dBusHandler.getSubTreePaths("/", confCompatibleInterface);
+            auto objects = dBusHandler.getSubTreePaths("/",
+                                                       confCompatibleInterface);
             for (const auto& path : objects)
             {
                 try
diff --git a/manager/lamptest/lamptest.cpp b/manager/lamptest/lamptest.cpp
index 57e5a33..5fd430c 100644
--- a/manager/lamptest/lamptest.cpp
+++ b/manager/lamptest/lamptest.cpp
@@ -108,9 +108,10 @@
 
     for (const auto& path : physicalLEDPaths)
     {
-        auto iter = std::find_if(
-            skipUpdateLEDs.begin(), skipUpdateLEDs.end(),
-            [&path](const auto& skipLed) { return skipLed == path; });
+        auto iter = std::find_if(skipUpdateLEDs.begin(), skipUpdateLEDs.end(),
+                                 [&path](const auto& skipLed) {
+            return skipLed == path;
+        });
 
         if (iter != skipUpdateLEDs.end())
         {
diff --git a/manager/led-main.cpp b/manager/led-main.cpp
index 86c13f5..b589bc0 100644
--- a/manager/led-main.cpp
+++ b/manager/led-main.cpp
@@ -71,9 +71,9 @@
     /** Now create so many dbus objects as there are groups */
     std::ranges::transform(systemLedMap, std::back_inserter(groups),
                            [&bus, &manager, &serialize](auto& grp) {
-                               return std::make_unique<phosphor::led::Group>(
-                                   bus, grp.first, manager, serialize);
-                           });
+        return std::make_unique<phosphor::led::Group>(bus, grp.first, manager,
+                                                      serialize);
+    });
 
     // Attach the bus to sd_event to service user requests
     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
