diff --git a/pldm.cpp b/pldm.cpp
index 1bcf7a1..652e214 100644
--- a/pldm.cpp
+++ b/pldm.cpp
@@ -122,7 +122,7 @@
     }
 
     open_power::occ::instanceID count = start;
-    for (auto const& pair : entityInstMap)
+    for (const auto& pair : entityInstMap)
     {
         sensorInstanceMap.emplace(pair.second, count);
         count++;
@@ -369,7 +369,7 @@
     }
 
     open_power::occ::instanceID position = start;
-    for (auto const& pair : entityInstMap)
+    for (const auto& pair : entityInstMap)
     {
         instanceToEffecterMap.emplace(position, pair.second);
         position++;
@@ -579,8 +579,8 @@
         pldmResponseReceived = false;
         pldmResponseTimeout = false;
         pldmResponseOcc = instance;
-        auto pldmRc =
-            pldm_send(mctpEid, pldmFd, request.data(), request.size());
+        auto pldmRc = pldm_send(mctpEid, pldmFd, request.data(),
+                                request.size());
         auto sendErrno = errno;
         if (pldmRc != PLDM_REQUESTER_SUCCESS)
         {
@@ -827,8 +827,8 @@
     }
 
     bitfield8_t sRearm = {0};
-    const size_t msgSize =
-        sizeof(pldm_msg_hdr) + PLDM_GET_STATE_SENSOR_READINGS_REQ_BYTES;
+    const size_t msgSize = sizeof(pldm_msg_hdr) +
+                           PLDM_GET_STATE_SENSOR_READINGS_REQ_BYTES;
     std::vector<uint8_t> request(msgSize);
 
     auto msg = reinterpret_cast<pldm_msg*>(request.data());
