Add clang-tidy file

This commit implements a clang-tidy file, and makes
some changes to get it to pass.
Most changes are naming or mechanical in nature.

Tested:
CI passed in docker.

Change-Id: I1f9acf546542c839b8f9facb5b8beff37c0d5909
Signed-off-by: Pavithra Barithaya <pavithra.b@ibm.com>
diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 0000000..1165a4e
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,245 @@
+Checks: ' -*,
+bugprone-argument-comment,
+bugprone-assert-side-effect,
+bugprone-bad-signal-to-kill-thread,
+bugprone-bool-pointer-implicit-conversion,
+bugprone-branch-clone,
+bugprone-copy-constructor-init,
+bugprone-dangling-handle,
+bugprone-dynamic-static-initializers,
+bugprone-fold-init-type,
+bugprone-forward-declaration-namespace,
+bugprone-forwarding-reference-overload,
+bugprone-implicit-widening-of-multiplication-result,
+bugprone-inaccurate-erase,
+bugprone-incorrect-roundings,
+bugprone-infinite-loop,
+bugprone-integer-division,
+bugprone-lambda-function-name,
+bugprone-macro-parentheses,
+bugprone-macro-repeated-side-effects,
+bugprone-misplaced-operator-in-strlen-in-alloc,
+bugprone-misplaced-pointer-arithmetic-in-alloc,
+bugprone-misplaced-widening-cast,
+bugprone-move-forwarding-reference,
+bugprone-multiple-statement-macro,
+bugprone-narrowing-conversions,
+bugprone-no-escape,
+bugprone-not-null-terminated-result,
+bugprone-parent-virtual-call,
+bugprone-posix-return,
+bugprone-redundant-branch-condition,
+bugprone-signal-handler,
+bugprone-signed-char-misuse,
+bugprone-sizeof-container,
+bugprone-sizeof-expression,
+bugprone-spuriously-wake-up-functions,
+bugprone-string-constructor,
+bugprone-string-integer-assignment,
+bugprone-string-literal-with-embedded-nul,
+bugprone-suspicious-enum-usage,
+bugprone-suspicious-include,
+bugprone-suspicious-memset-usage,
+bugprone-suspicious-missing-comma,
+bugprone-suspicious-semicolon,
+bugprone-suspicious-string-compare,
+bugprone-swapped-arguments,
+bugprone-terminating-continue,
+bugprone-throw-keyword-missing,
+bugprone-too-small-loop-variable,
+bugprone-undefined-memory-manipulation,
+bugprone-undelegated-constructor,
+bugprone-unhandled-exception-at-new,
+bugprone-unhandled-self-assignment,
+bugprone-unused-raii,
+bugprone-unused-return-value,
+bugprone-use-after-move,
+bugprone-virtual-near-miss,
+cert-con36-c,
+cert-con54-cpp,
+cert-dcl03-c,
+cert-dcl16-c,
+cert-dcl21-cpp,
+cert-dcl50-cpp,
+cert-dcl54-cpp,
+cert-dcl58-cpp,
+cert-dcl59-cpp,
+cert-env33-c,
+cert-err09-cpp,
+cert-err34-c,
+cert-err52-cpp,
+cert-err60-cpp,
+cert-err61-cpp,
+cert-fio38-c,
+cert-flp30-c,
+cert-mem57-cpp,
+cert-msc30-c,
+cert-msc32-c,
+cert-msc50-cpp,
+cert-msc51-cpp,
+cert-oop11-cpp,
+cert-oop54-cpp,
+cert-oop57-cpp,
+cert-oop58-cpp,
+cert-pos44-c,
+cert-pos47-c,
+cert-sig30-c,
+cert-str34-c,
+clang-analyzer-apiModeling.StdCLibraryFunctions,
+clang-analyzer-apiModeling.TrustNonnull,
+clang-analyzer-apiModeling.google.GTest,
+clang-analyzer-apiModeling.llvm.CastValue,
+clang-analyzer-apiModeling.llvm.ReturnValue,
+clang-analyzer-core.CallAndMessage,
+clang-analyzer-core.CallAndMessageModeling,
+clang-analyzer-core.DivideZero,
+clang-analyzer-core.DynamicTypePropagation,
+clang-analyzer-core.NonNullParamChecker,
+clang-analyzer-core.NonnilStringConstants,
+clang-analyzer-core.NullDereference,
+clang-analyzer-core.StackAddrEscapeBase,
+clang-analyzer-core.StackAddressEscape,
+clang-analyzer-core.UndefinedBinaryOperatorResult,
+clang-analyzer-core.VLASize,
+clang-analyzer-core.builtin.BuiltinFunctions,
+clang-analyzer-core.builtin.NoReturnFunctions,
+clang-analyzer-core.uninitialized.ArraySubscript,
+clang-analyzer-core.uninitialized.Assign,
+clang-analyzer-core.uninitialized.Branch,
+clang-analyzer-core.uninitialized.CapturedBlockVariable,
+clang-analyzer-core.uninitialized.UndefReturn,
+clang-analyzer-cplusplus.InnerPointer,
+clang-analyzer-cplusplus.Move,
+clang-analyzer-cplusplus.NewDelete,
+clang-analyzer-cplusplus.NewDeleteLeaks,
+clang-analyzer-cplusplus.PlacementNew,
+clang-analyzer-cplusplus.PureVirtualCall,
+clang-analyzer-cplusplus.SelfAssignment,
+clang-analyzer-cplusplus.SmartPtrModeling,
+clang-analyzer-cplusplus.VirtualCallModeling,
+clang-analyzer-deadcode.DeadStores,
+clang-analyzer-fuchsia.HandleChecker,
+clang-analyzer-nullability.NullPassedToNonnull,
+clang-analyzer-nullability.NullReturnedFromNonnull,
+clang-analyzer-nullability.NullabilityBase,
+clang-analyzer-nullability.NullableDereferenced,
+clang-analyzer-nullability.NullablePassedToNonnull,
+clang-analyzer-nullability.NullableReturnedFromNonnull,
+clang-analyzer-optin.cplusplus.UninitializedObject,
+clang-analyzer-optin.cplusplus.VirtualCall,
+clang-analyzer-optin.mpi.MPI-Checker,
+clang-analyzer-optin.osx.OSObjectCStyleCast,
+clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker,
+clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker,
+clang-analyzer-optin.performance.GCDAntipattern,
+clang-analyzer-optin.performance.Padding,
+clang-analyzer-optin.portability.UnixAPI,
+clang-analyzer-osx.API,
+clang-analyzer-osx.MIG,
+clang-analyzer-osx.NSOrCFErrorDerefChecker,
+clang-analyzer-osx.NumberObjectConversion,
+clang-analyzer-osx.OSObjectRetainCount,
+clang-analyzer-osx.ObjCProperty,
+clang-analyzer-osx.SecKeychainAPI,
+clang-analyzer-osx.cocoa.AtSync,
+clang-analyzer-osx.cocoa.AutoreleaseWrite,
+clang-analyzer-osx.cocoa.ClassRelease,
+clang-analyzer-osx.cocoa.Dealloc,
+clang-analyzer-osx.cocoa.IncompatibleMethodTypes,
+clang-analyzer-osx.cocoa.Loops,
+clang-analyzer-osx.cocoa.MissingSuperCall,
+clang-analyzer-osx.cocoa.NSAutoreleasePool,
+clang-analyzer-osx.cocoa.NSError,
+clang-analyzer-osx.cocoa.NilArg,
+clang-analyzer-osx.cocoa.NonNilReturnValue,
+clang-analyzer-osx.cocoa.ObjCGenerics,
+clang-analyzer-osx.cocoa.RetainCount,
+clang-analyzer-osx.cocoa.RetainCountBase,
+clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak,
+clang-analyzer-osx.cocoa.SelfInit,
+clang-analyzer-osx.cocoa.SuperDealloc,
+clang-analyzer-osx.cocoa.UnusedIvars,
+clang-analyzer-osx.cocoa.VariadicMethodTypes,
+clang-analyzer-osx.coreFoundation.CFError,
+clang-analyzer-osx.coreFoundation.CFNumber,
+clang-analyzer-osx.coreFoundation.CFRetainRelease,
+clang-analyzer-osx.coreFoundation.containers.OutOfBounds,
+clang-analyzer-osx.coreFoundation.containers.PointerSizedValues,
+clang-analyzer-security.FloatLoopCounter,
+clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
+clang-analyzer-security.insecureAPI.SecuritySyntaxChecker,
+clang-analyzer-security.insecureAPI.UncheckedReturn,
+clang-analyzer-security.insecureAPI.bcmp,
+clang-analyzer-security.insecureAPI.bcopy,
+clang-analyzer-security.insecureAPI.bzero,
+clang-analyzer-security.insecureAPI.decodeValueOfObjCType,
+clang-analyzer-security.insecureAPI.getpw,
+clang-analyzer-security.insecureAPI.gets,
+clang-analyzer-security.insecureAPI.mkstemp,
+clang-analyzer-security.insecureAPI.mktemp,
+clang-analyzer-security.insecureAPI.rand,
+clang-analyzer-security.insecureAPI.strcpy,
+clang-analyzer-security.insecureAPI.vfork,
+clang-analyzer-unix.API,
+clang-analyzer-unix.DynamicMemoryModeling,
+clang-analyzer-unix.Malloc,
+clang-analyzer-unix.MallocSizeof,
+clang-analyzer-unix.MismatchedDeallocator,
+clang-analyzer-unix.Vfork,
+clang-analyzer-unix.cstring.BadSizeArg,
+clang-analyzer-unix.cstring.CStringModeling,
+clang-analyzer-unix.cstring.NullArg,
+clang-analyzer-valist.CopyToSelf,
+clang-analyzer-valist.Uninitialized,
+clang-analyzer-valist.Unterminated,
+clang-analyzer-valist.ValistBase,
+clang-analyzer-webkit.NoUncountedMemberChecker,
+clang-analyzer-webkit.RefCntblBaseVirtualDtor,
+readability-avoid-const-params-in-decls,
+readability-braces-around-statements,
+readability-const-return-type,
+readability-container-size-empty,
+readability-convert-member-functions-to-static,
+readability-delete-null-pointer,
+readability-deleted-default,
+readability-else-after-return,
+readability-function-size,
+readability-identifier-naming,
+readability-implicit-bool-conversion,
+readability-inconsistent-declaration-parameter-name,
+readability-isolate-declaration,
+readability-make-member-function-const,
+readability-misleading-indentation,
+readability-misplaced-array-index,
+readability-named-parameter,
+readability-non-const-parameter,
+readability-qualified-auto,
+readability-redundant-access-specifiers,
+readability-redundant-control-flow,
+readability-redundant-declaration,
+readability-redundant-function-ptr-dereference,
+readability-redundant-member-init,
+readability-redundant-preprocessor,
+readability-redundant-smartptr-get,
+readability-redundant-string-cstr,
+readability-redundant-string-init,
+readability-simplify-boolean-expr,
+readability-simplify-subscript-expr,
+readability-static-accessed-through-instance,
+readability-static-definition-in-anonymous-namespace,
+readability-string-compare,
+readability-suspicious-call-argument,
+readability-uniqueptr-delete-release,
+readability-uppercase-literal-suffix'
+
+WarningsAsErrors: '*'
+HeaderFilterRegex: '.*'
+
+CheckOptions:
+  - { key: readability-identifier-naming.ClassCase,     value: CamelCase  }
+  - { key: readability-identifier-naming.VariableCase,  value: camelBack }
+  - { key: readability-identifier-naming.FunctionCase,  value: camelBack }
+  - { key: readability-identifier-naming.ParameterCase, value: camelBack }
+  - { key: readability-identifier-naming.NamespaceCase, value: lower_case }
+  - { key: readability-identifier-naming.StructCase,    value: CamelCase  }
+  - { key: readability-implicit-bool-conversion.AllowPointerConditions,  value: 1 }
diff --git a/bmc_epoch.cpp b/bmc_epoch.cpp
index aa05060..ad65777 100644
--- a/bmc_epoch.cpp
+++ b/bmc_epoch.cpp
@@ -26,10 +26,10 @@
 {
 namespace // anonymous
 {
-constexpr auto SYSTEMD_TIME_SERVICE = "org.freedesktop.timedate1";
-constexpr auto SYSTEMD_TIME_PATH = "/org/freedesktop/timedate1";
-constexpr auto SYSTEMD_TIME_INTERFACE = "org.freedesktop.timedate1";
-constexpr auto METHOD_SET_TIME = "SetTime";
+constexpr auto systemdTimeService = "org.freedesktop.timedate1";
+constexpr auto systemdTimePath = "/org/freedesktop/timedate1";
+constexpr auto systemdTimeInterface = "org.freedesktop.timedate1";
+constexpr auto methodSetTime = "SetTime";
 } // namespace
 
 PHOSPHOR_LOG2_USING;
@@ -109,7 +109,9 @@
     // We are not interested in the data here.
     // So read until there is no new data here in the FD
     while (read(fd, time.data(), time.max_size()) > 0)
+    {
         ;
+    }
 
     return 0;
 }
@@ -121,8 +123,8 @@
 
 bool BmcEpoch::setTime(const microseconds& usec)
 {
-    auto method = bus.new_method_call(SYSTEMD_TIME_SERVICE, SYSTEMD_TIME_PATH,
-                                      SYSTEMD_TIME_INTERFACE, METHOD_SET_TIME);
+    auto method = bus.new_method_call(systemdTimeService, systemdTimePath,
+                                      systemdTimeInterface, methodSetTime);
     method.append(static_cast<int64_t>(usec.count()),
                   false,  // relative
                   false); // user_interaction
@@ -140,7 +142,7 @@
     return true;
 }
 
-microseconds BmcEpoch::getTime() const
+microseconds BmcEpoch::getTime()
 {
     auto now = system_clock::now();
     return duration_cast<microseconds>(now.time_since_epoch());
diff --git a/bmc_epoch.hpp b/bmc_epoch.hpp
index 2c5d501..fd5e3f4 100644
--- a/bmc_epoch.hpp
+++ b/bmc_epoch.hpp
@@ -74,7 +74,7 @@
      *
      * @return Microseconds since UTC
      */
-    std::chrono::microseconds getTime() const;
+    static std::chrono::microseconds getTime();
 
   private:
     /** @brief The fd for time change event */
diff --git a/main.cpp b/main.cpp
index 82111b6..a773304 100644
--- a/main.cpp
+++ b/main.cpp
@@ -22,12 +22,12 @@
     bus.attach_event(sdEvent.get(), SD_EVENT_PRIORITY_NORMAL);
 
     // Add sdbusplus ObjectManager
-    sdbusplus::server::manager_t bmcEpochObjManager(bus, OBJPATH_BMC);
+    sdbusplus::server::manager_t bmcEpochObjManager(bus, objpathBmc);
 
     phosphor::time::Manager manager(bus);
-    phosphor::time::BmcEpoch bmc(bus, OBJPATH_BMC, manager);
+    phosphor::time::BmcEpoch bmc(bus, objpathBmc, manager);
 
-    bus.request_name(BUSNAME);
+    bus.request_name(busname);
 
     // Start event loop for all sd-bus events and timer event
     sd_event_loop(bus.get_event());
diff --git a/manager.cpp b/manager.cpp
index 169fb30..36285ff 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -11,10 +11,10 @@
 namespace // anonymous
 {
 
-constexpr auto SYSTEMD_TIME_SERVICE = "org.freedesktop.timedate1";
-constexpr auto SYSTEMD_TIME_PATH = "/org/freedesktop/timedate1";
-constexpr auto SYSTEMD_TIME_INTERFACE = "org.freedesktop.timedate1";
-constexpr auto METHOD_SET_NTP = "SetNTP";
+constexpr auto systemdTimeService = "org.freedesktop.timedate1";
+constexpr auto systemdTimePath = "/org/freedesktop/timedate1";
+constexpr auto systemdTimeInterface = "org.freedesktop.timedate1";
+constexpr auto methodSetNtp = "SetNTP";
 } // namespace
 
 namespace phosphor
@@ -33,15 +33,15 @@
 
     // Check the settings daemon to process the new settings
     auto mode = getSetting(settings.timeSyncMethod.c_str(),
-                           settings::timeSyncIntf, PROPERTY_TIME_MODE);
+                           settings::timeSyncIntf, propertyTimeMode);
 
-    onPropertyChanged(PROPERTY_TIME_MODE, mode);
+    onPropertyChanged(propertyTimeMode, mode);
 }
 
 void Manager::onPropertyChanged(const std::string& key,
                                 const std::string& value)
 {
-    assert(key == PROPERTY_TIME_MODE);
+    assert(key == propertyTimeMode);
 
     // Notify listeners
     setCurrentTimeMode(value);
@@ -74,9 +74,8 @@
     {
         bool isNtp =
             (value == "xyz.openbmc_project.Time.Synchronization.Method.NTP");
-        auto method =
-            bus.new_method_call(SYSTEMD_TIME_SERVICE, SYSTEMD_TIME_PATH,
-                                SYSTEMD_TIME_INTERFACE, METHOD_SET_NTP);
+        auto method = bus.new_method_call(systemdTimeService, systemdTimePath,
+                                          systemdTimeInterface, methodSetNtp);
         method.append(isNtp, false); // isNtp: 'true/false' means Enable/Disable
                                      // 'false' meaning no policy-kit
 
diff --git a/manager.hpp b/manager.hpp
index 02dd253..e8c28e9 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -116,7 +116,7 @@
                                  sd_bus_error* retError);
 
     /** @brief The string of time mode property */
-    static constexpr auto PROPERTY_TIME_MODE = "TimeSyncMethod";
+    static constexpr auto propertyTimeMode = "TimeSyncMethod";
 };
 
 } // namespace time
diff --git a/settings.cpp b/settings.cpp
index d0d5026..b662628 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -13,11 +13,7 @@
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 
-constexpr auto mapperService = "xyz.openbmc_project.ObjectMapper";
-constexpr auto mapperPath = "/xyz/openbmc_project/object_mapper";
-constexpr auto mapperIntf = "xyz.openbmc_project.ObjectMapper";
-
-Objects::Objects(sdbusplus::bus_t& bus) : bus(bus)
+Objects::Objects(sdbusplus::bus_t& bus)
 {
     Interfaces settingsIntfs = {timeSyncIntf};
     MapperResponse result;
@@ -39,9 +35,9 @@
     for (const auto& iter : result)
     {
         const Path& path = iter.first;
-        for (const auto& service_iter : iter.second)
+        for (const auto& serviceIter : iter.second)
         {
-            for (const Interface& interface : service_iter.second)
+            for (const Interface& interface : serviceIter.second)
             {
                 if (timeSyncIntf == interface)
                 {
diff --git a/settings.hpp b/settings.hpp
index f45c910..b7e18bf 100644
--- a/settings.hpp
+++ b/settings.hpp
@@ -24,19 +24,16 @@
      *
      * @param[in] bus - The D-bus bus object
      */
+    explicit Objects(sdbusplus::bus_t& /*bus*/);
     Objects() = delete;
-    explicit Objects(sdbusplus::bus_t&);
     Objects(const Objects&) = delete;
     Objects& operator=(const Objects&) = delete;
     Objects(Objects&&) = default;
-    Objects& operator=(Objects&&) = default;
+    Objects& operator=(Objects&&) = delete;
     ~Objects() = default;
 
     /** @brief time sync method settings object */
     Path timeSyncMethod;
-
-  private:
-    sdbusplus::bus_t& bus;
 };
 
 } // namespace settings
diff --git a/test/TestBmcEpoch.cpp b/test/TestBmcEpoch.cpp
index aee19f9..8556d72 100644
--- a/test/TestBmcEpoch.cpp
+++ b/test/TestBmcEpoch.cpp
@@ -26,7 +26,7 @@
         // BmcEpoch requires sd_event to init
         sd_event_default(&event);
         bus.attach_event(event, SD_EVENT_PRIORITY_NORMAL);
-        bmcEpoch = std::make_unique<BmcEpoch>(bus, OBJPATH_BMC, manager);
+        bmcEpoch = std::make_unique<BmcEpoch>(bus, objpathBmc, manager);
     }
 
     ~TestBmcEpoch()
diff --git a/types.hpp b/types.hpp
index f490823..7871a5d 100644
--- a/types.hpp
+++ b/types.hpp
@@ -2,13 +2,8 @@
 
 #include <xyz/openbmc_project/Time/Synchronization/server.hpp>
 
-namespace // anonymous
-{
-
-constexpr auto OBJPATH_BMC = "/xyz/openbmc_project/time/bmc";
-constexpr auto BUSNAME = "xyz.openbmc_project.Time.Manager";
-
-} // namespace
+static constexpr auto objpathBmc = "/xyz/openbmc_project/time/bmc";
+static constexpr auto busname = "xyz.openbmc_project.Time.Manager";
 
 namespace phosphor
 {
diff --git a/utils.cpp b/utils.cpp
index f0b8704..f925bdb 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -7,9 +7,9 @@
 
 namespace // anonymous
 {
-constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
-constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
-constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
+constexpr auto mapperBusname = "xyz.openbmc_project.ObjectMapper";
+constexpr auto mapperPath = "/xyz/openbmc_project/object_mapper";
+constexpr auto mapperInterface = "xyz.openbmc_project.ObjectMapper";
 } // namespace
 
 namespace utils
@@ -20,8 +20,8 @@
 std::string getService(sdbusplus::bus_t& bus, const char* path,
                        const char* interface)
 {
-    auto mapper = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
-                                      MAPPER_INTERFACE, "GetObject");
+    auto mapper = bus.new_method_call(mapperBusname, mapperPath,
+                                      mapperInterface, "GetObject");
 
     mapper.append(path, std::vector<std::string>({interface}));
     try
@@ -51,8 +51,8 @@
 MapperResponse getSubTree(sdbusplus::bus_t& bus, const std::string& root,
                           const Interfaces& interfaces, int32_t depth)
 {
-    auto mapperCall = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
-                                          MAPPER_INTERFACE, "GetSubTree");
+    auto mapperCall = bus.new_method_call(mapperBusname, mapperPath,
+                                          mapperInterface, "GetSubTree");
     mapperCall.append(root);
     mapperCall.append(depth);
     mapperCall.append(interfaces);