diff --git a/app.cpp b/app.cpp
index 84ad870..2dedf02 100644
--- a/app.cpp
+++ b/app.cpp
@@ -23,7 +23,7 @@
 #include <exception>
 #include <iostream>
 
-int main(int argc, char* argv[])
+int main(int /* argc */, char** /* argv[] */)
 {
     phosphor::inventory::manager::Manager manager(sdbusplus::bus::new_system(),
                                                   INVENTORY_ROOT);
diff --git a/gen_serialization.mako.hpp b/gen_serialization.mako.hpp
index df29dd4..036b131 100644
--- a/gen_serialization.mako.hpp
+++ b/gen_serialization.mako.hpp
@@ -30,7 +30,7 @@
 template<class Archive>
 void save(Archive& a,
           const ${iface.namespace()}& object,
-          const std::uint32_t version)
+          const std::uint32_t /* version */)
 {
 % for p in properties:
 <% t = "cereal::make_nvp(\"" + p.CamelCase + "\", object." + p.camelCase + "())"
diff --git a/interface_ops.hpp b/interface_ops.hpp
index bc3e926..98b0ffb 100644
--- a/interface_ops.hpp
+++ b/interface_ops.hpp
@@ -77,8 +77,8 @@
 template <typename T, typename Enable = void>
 struct GetPropertyValue
 {
-    static InterfaceVariantType op(const std::string propertyName,
-                                   std::any& holder)
+    static InterfaceVariantType op(const std::string /* propertyName */,
+                                   std::any& /* holder */)
     {
         return InterfaceVariantType{};
     }
diff --git a/manager.cpp b/manager.cpp
index 0fae387..c5797cc 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -38,7 +38,7 @@
  *  Extracts per-signal specific context and forwards the call to the manager
  *  instance.
  */
-auto _signal(sd_bus_message* m, void* data, sd_bus_error* e) noexcept
+auto _signal(sd_bus_message* m, void* data, sd_bus_error* /* e */) noexcept
 {
     try
     {
diff --git a/test/interface_ops_test.cpp b/test/interface_ops_test.cpp
index a308a55..3033423 100644
--- a/test/interface_ops_test.cpp
+++ b/test/interface_ops_test.cpp
@@ -88,7 +88,8 @@
         g_currentMock->serializeThreeArgs(path, iface, obj);
     }
 
-    static void deserialize(const std::string& path, const std::string& iface)
+    static void deserialize(const std::string& /* path */,
+                            const std::string& /* iface */)
     {
         g_currentMock->deserializeNoop();
     }
diff --git a/utils.hpp b/utils.hpp
index 298a91d..9f82b47 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -32,7 +32,7 @@
     template <typename T, typename Arg, typename Enable = void>
     struct Make
     {
-        static auto make(Arg&& arg)
+        static auto make(Arg&& /* arg */)
         {
             throw std::runtime_error(
                 std::string("Invalid conversion in MakeVariantVisitor::") +
