diff --git a/bmc-vmi-ca/mainapp.cpp b/bmc-vmi-ca/mainapp.cpp
index 28b05bc..4c6ef1e 100644
--- a/bmc-vmi-ca/mainapp.cpp
+++ b/bmc-vmi-ca/mainapp.cpp
@@ -5,7 +5,7 @@
 #include <sdeventplus/event.hpp>
 #include <string>
 
-int main(int argc, char** argv)
+int main()
 {
     auto bus = sdbusplus::bus::new_default();
     static constexpr auto objPath = "/xyz/openbmc_project/certs/ca";
diff --git a/certificate.cpp b/certificate.cpp
index 7b902bd..45de407 100644
--- a/certificate.cpp
+++ b/certificate.cpp
@@ -182,7 +182,7 @@
     };
     typeFuncMap[SERVER] = installHelper;
     typeFuncMap[CLIENT] = installHelper;
-    typeFuncMap[AUTHORITY] = [](auto filePath) {};
+    typeFuncMap[AUTHORITY] = [](const std::string&) {};
 
     auto appendPrivateKey = [this](const std::string& filePath) {
         checkAndAppendPrivateKey(filePath);
@@ -190,7 +190,7 @@
 
     appendKeyMap[SERVER] = appendPrivateKey;
     appendKeyMap[CLIENT] = appendPrivateKey;
-    appendKeyMap[AUTHORITY] = [](const std::string& filePath) {};
+    appendKeyMap[AUTHORITY] = [](const std::string&) {};
 
     // Generate certificate file path
     certFilePath = generateCertFilePath(uploadPath);
diff --git a/watch.cpp b/watch.cpp
index ef93584..cfca68e 100644
--- a/watch.cpp
+++ b/watch.cpp
@@ -68,8 +68,7 @@
     }
 
     ioPtr = std::make_unique<sdeventplus::source::IO>(
-        event, fd, EPOLLIN,
-        [this](sdeventplus::source::IO&, int fd, uint32_t revents) {
+        event, fd, EPOLLIN, [this](sdeventplus::source::IO&, int fd, uint32_t) {
             const int size = sizeof(struct inotify_event) + NAME_MAX + 1;
             std::array<char, size> buffer;
             int length = read(fd, buffer.data(), buffer.size());
