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);