From 24a7fc43eb610f531394d5447d1021b4260fa401 Mon Sep 17 00:00:00 2001 From: Roman Stratiienko Date: Thu, 23 Dec 2021 16:25:20 +0200 Subject: drm_hwcomposer: CI: Process every file with clang-tidy. Currently part of header files isn't processed by CI. Signed-off-by: Roman Stratiienko --- .ci/Makefile | 149 +++++++++++++++++++++++++++++++++++------------- .clang-tidy | 1 - DrmHwcTwo.cpp | 8 +++ DrmHwcTwo.h | 8 +-- drm/DrmDevice.cpp | 1 + drm/DrmDevice.h | 1 - drm/DrmPlane.h | 1 + drm/ResourceManager.cpp | 6 ++ drm/ResourceManager.h | 6 +- drm/UEventListener.h | 6 +- utils/properties.h | 1 + 11 files changed, 133 insertions(+), 55 deletions(-) diff --git a/.ci/Makefile b/.ci/Makefile index 08ca2b1..d78fde6 100644 --- a/.ci/Makefile +++ b/.ci/Makefile @@ -45,17 +45,25 @@ BUILD_FILES := \ #bufferinfo/BufferInfoMapperMetadata.cpp #utils/hwcutils.cpp -TIDY_FILES_H := \ - drm/DrmFbImporter.h \ - drm/DrmUnique.h \ - utils/UniqueFd.h \ - utils/log.h \ - utils/properties.h \ - -TIDY_FILES_CPP := \ - -TIDY_COARSE_CHECKS := * \ +TIDY_CHECKS_NORMAL := * \ -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \ + -llvm-header-guard \ + -cppcoreguidelines-special-member-functions \ + -cppcoreguidelines-pro-type-cstyle-cast \ + -cppcoreguidelines-macro-usage \ + -cppcoreguidelines-avoid-c-arrays \ + -google-readability-braces-around-statements \ + -google-readability-casting \ + -misc-non-private-member-variables-in-classes \ + -modernize-avoid-c-arrays \ + -modernize-use-trailing-return-type \ + -readability-braces-around-statements \ + -readability-convert-member-functions-to-static \ + -readability-implicit-bool-conversion \ + -readability-identifier-naming \ + +TIDY_CHECKS_COARSE := \ + $(TIDY_CHECKS_NORMAL) \ -cppcoreguidelines-pro-bounds-array-to-pointer-decay \ -cppcoreguidelines-pro-bounds-constant-array-index \ -cppcoreguidelines-pro-bounds-pointer-arithmetic \ @@ -77,6 +85,75 @@ TIDY_COARSE_CHECKS := * \ -readability-magic-numbers \ -readability-use-anyofallof \ +TIDY_FILES := \ + drm/UEventListener.h:COARSE \ + drm/DrmFbImporter.h:FINE \ + drm/ResourceManager.h: \ + drm/DrmMode.h: \ + drm/DrmDevice.h: \ + drm/DrmProperty.h: \ + drm/DrmConnector.h: \ + drm/DrmCrtc.h: \ + drm/VSyncWorker.h: \ + drm/DrmPlane.h: \ + drm/DrmUnique.h:FINE \ + drm/DrmEncoder.h: \ + bufferinfo/legacy/BufferInfoMinigbm.h: \ + bufferinfo/legacy/BufferInfoLibdrm.h: \ + bufferinfo/legacy/BufferInfoMaliMediatek.h: \ + bufferinfo/legacy/BufferInfoMaliHisi.h: \ + bufferinfo/legacy/BufferInfoImagination.h: \ + bufferinfo/legacy/BufferInfoMaliMeson.h: \ + bufferinfo/BufferInfoGetter.h: \ + bufferinfo/BufferInfoMapperMetadata.h: \ + include/drmhwcgralloc.h: \ + include/drmhwcomposer.h: \ + utils/Worker.h: \ + utils/UniqueFd.h:FINE \ + utils/autolock.h: \ + utils/log.h:FINE \ + utils/properties.h:FINE \ + compositor/DrmDisplayCompositor.h: \ + compositor/Planner.h: \ + compositor/DrmDisplayComposition.h: \ + backend/BackendManager.h: \ + backend/BackendClient.h: \ + backend/Backend.h: \ + backend/BackendRCarDu.h: \ + DrmHwcTwo.h: \ + +TIDY_FILES += \ + backend/BackendClient.cpp:COARSE \ + backend/Backend.cpp:COARSE \ + backend/BackendManager.cpp:COARSE \ + backend/BackendRCarDu.cpp:COARSE \ + bufferinfo/BufferInfoGetter.cpp:COARSE \ + bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \ + bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \ + bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \ + bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \ + bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \ + bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \ + compositor/DrmDisplayComposition.cpp:COARSE \ + compositor/DrmDisplayCompositor.cpp:COARSE \ + compositor/Planner.cpp:COARSE \ + drm/DrmConnector.cpp:COARSE \ + drm/DrmCrtc.cpp:COARSE \ + drm/DrmDevice.cpp:COARSE \ + drm/DrmEncoder.cpp:COARSE \ + drm/DrmFbImporter.cpp:COARSE \ + drm/DrmMode.cpp:COARSE \ + drm/DrmPlane.cpp:COARSE \ + drm/DrmProperty.cpp:COARSE \ + DrmHwcTwo.cpp:COARSE \ + drm/ResourceManager.cpp:COARSE \ + drm/UEventListener.cpp:COARSE \ + drm/VSyncWorker.cpp:COARSE \ + tests/worker_test.cpp:COARSE \ + utils/autolock.cpp:COARSE \ + utils/Worker.cpp:COARSE \ + + .PHONY: all build tidy tidy-fine clean all: build tidy tidy-fine @@ -87,21 +164,10 @@ clean: _OBJ := $(BUILD_FILES:.cpp=.o) OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ)) -_TIDY_TS := $(BUILD_FILES:.cpp=.cpp.t_ts) -TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_TIDY_TS)) - -_FINE_TIDY_TS := $(TIDY_FILES_CPP:.cpp=.cpp,ft_ts) -_FINE_TIDY_TS += $(TIDY_FILES_H:.h=.h.ft_ts) -FINE_TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_FINE_TIDY_TS)) - DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES)) build: $(OBJ) -tidy: $(TIDY_TS) build - -tidy-fine: $(FINE_TIDY_TS) build - CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS) $(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp @@ -112,34 +178,37 @@ $(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp mkdir -p $(dir $@) $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@ +# TIDY space := $(subst ,, ) comma := , -# TIDY -define exec-tidy - mkdir -p $(dir $@) - $(CLANG_TIDY) $< --checks="$(subst $(space),$(comma),$(strip $(TIDY_COARSE_CHECKS)))" -- -x c++ $(CXXARGS) - touch $@ -endef +TIDY_ARGS_FINE := +TIDY_ARGS_NONE := --checks="-*,llvm-include-order" +TIDY_ARGS_ := --checks="-*,llvm-include-order" +TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))" +TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))" -$(OUT_DIR)/%.h.t_ts: $(SRC_DIR)/%.h - $(exec-tidy) +define process-tidy -$(OUT_DIR)/%.cpp.t_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o - $(exec-tidy) +_TARG := $(OUT_DIR)/$1.tidy.ts +_DEP := $(SRC_DIR)/$1 + +TIDY_DEPS += $(_TARG) + +TIDY_ARGS:=$(TIDY_ARGS_$2) + +$(_TARG): $(_DEP) + mkdir -p $(dir $(_TARG)) + $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS) + touch $(_TARG) -# TIDY-FINE -define exec-tidy-fine - mkdir -p $(dir $@) - $(CLANG_TIDY) $< -- -x c++ $(CXXARGS) - touch $@ endef -$(OUT_DIR)/%.cpp.ft_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o - $(exec-tidy-fine) +$(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair)))))) + +#$(warning $(TIDY_DEPS)) -$(OUT_DIR)/%.h.ft_ts: $(SRC_DIR)/%.h - $(exec-tidy-fine) +tidy: $(TIDY_DEPS) ifneq ($(MAKECMDGOALS), clean) -include $(DEPS) diff --git a/.clang-tidy b/.clang-tidy index 4bd8ff7..300a2fe 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -6,7 +6,6 @@ Checks: > *, -fuchsia*, -llvm*, - -concurrency-mt-unsafe, -cppcoreguidelines-pro-type-vararg, -hicpp-vararg, -hicpp-signed-bitwise, diff --git a/DrmHwcTwo.cpp b/DrmHwcTwo.cpp index 45fb958..ad9c2c2 100644 --- a/DrmHwcTwo.cpp +++ b/DrmHwcTwo.cpp @@ -1083,6 +1083,14 @@ HWC2::Error DrmHwcTwo::HwcDisplay::SetColorModeWithIntent(int32_t mode, #endif /* PLATFORM_SDK_VERSION > 27 */ +const Backend *DrmHwcTwo::HwcDisplay::backend() const { + return backend_.get(); +} + +void DrmHwcTwo::HwcDisplay::set_backend(std::unique_ptr backend) { + backend_ = std::move(backend); +} + HWC2::Error DrmHwcTwo::HwcLayer::SetCursorPosition(int32_t /*x*/, int32_t /*y*/) { return HWC2::Error::None; diff --git a/DrmHwcTwo.h b/DrmHwcTwo.h index eb74f32..beb2e5f 100644 --- a/DrmHwcTwo.h +++ b/DrmHwcTwo.h @@ -267,12 +267,8 @@ class DrmHwcTwo : public hwc2_device_t { int active_config_id_ = 0; int preferred_config_id_ = 0; - const Backend *backend() const { - return backend_.get(); - } - void set_backend(std::unique_ptr backend) { - backend_ = std::move(backend); - } + const Backend *backend() const; + void set_backend(std::unique_ptr backend); const std::vector &primary_planes() const { return primary_planes_; diff --git a/drm/DrmDevice.cpp b/drm/DrmDevice.cpp index 35ed45d..8dee817 100644 --- a/drm/DrmDevice.cpp +++ b/drm/DrmDevice.cpp @@ -30,6 +30,7 @@ #include #include +#include "drm/DrmPlane.h" #include "utils/log.h" #include "utils/properties.h" diff --git a/drm/DrmDevice.h b/drm/DrmDevice.h index c08c766..4cbbd60 100644 --- a/drm/DrmDevice.h +++ b/drm/DrmDevice.h @@ -26,7 +26,6 @@ #include "DrmCrtc.h" #include "DrmEncoder.h" #include "DrmFbImporter.h" -#include "DrmPlane.h" #include "utils/UniqueFd.h" namespace android { diff --git a/drm/DrmPlane.h b/drm/DrmPlane.h index 34bba56..7fab2ba 100644 --- a/drm/DrmPlane.h +++ b/drm/DrmPlane.h @@ -29,6 +29,7 @@ namespace android { class DrmDevice; +struct DrmHwcLayer; class DrmPlane { public: diff --git a/drm/ResourceManager.cpp b/drm/ResourceManager.cpp index 8baa4cb..2cd393f 100644 --- a/drm/ResourceManager.cpp +++ b/drm/ResourceManager.cpp @@ -24,6 +24,8 @@ #include #include "bufferinfo/BufferInfoGetter.h" +#include "drm/DrmDevice.h" +#include "drm/DrmPlane.h" #include "utils/log.h" #include "utils/properties.h" @@ -32,6 +34,10 @@ namespace android { ResourceManager::ResourceManager() : num_displays_(0) { } +ResourceManager::~ResourceManager() { + uevent_listener_.Exit(); +} + int ResourceManager::Init() { char path_pattern[PROPERTY_VALUE_MAX]; // Could be a valid path or it can have at the end of it the wildcard % diff --git a/drm/ResourceManager.h b/drm/ResourceManager.h index 5ffe92c..bb91882 100644 --- a/drm/ResourceManager.h +++ b/drm/ResourceManager.h @@ -20,8 +20,8 @@ #include #include "DrmDevice.h" -#include "UEventListener.h" #include "DrmFbImporter.h" +#include "UEventListener.h" namespace android { @@ -30,9 +30,7 @@ class ResourceManager { ResourceManager(); ResourceManager(const ResourceManager &) = delete; ResourceManager &operator=(const ResourceManager &) = delete; - ~ResourceManager() { - uevent_listener_.Exit(); - } + ~ResourceManager(); int Init(); DrmDevice *GetDrmDevice(int display); diff --git a/drm/UEventListener.h b/drm/UEventListener.h index 048eb40..0724443 100644 --- a/drm/UEventListener.h +++ b/drm/UEventListener.h @@ -27,16 +27,16 @@ namespace android { class UEventListener : public Worker { public: UEventListener(); - virtual ~UEventListener() = default; + ~UEventListener() override = default; int Init(); void RegisterHotplugHandler(std::function hotplug_handler) { - hotplug_handler_ = hotplug_handler; + hotplug_handler_ = std::move(hotplug_handler); } protected: - virtual void Routine(); + void Routine() override; private: UniqueFd uevent_fd_; diff --git a/utils/properties.h b/utils/properties.h index c8ddbae..0b49c61 100644 --- a/utils/properties.h +++ b/utils/properties.h @@ -17,6 +17,7 @@ constexpr int PROPERTY_VALUE_MAX = 92; // NOLINTNEXTLINE(readability-identifier-naming) auto inline property_get(const char *name, char *value, const char *default_value) -> int { + // NOLINTNEXTLINE (concurrency-mt-unsafe) char *prop = std::getenv(name); snprintf(value, PROPERTY_VALUE_MAX, "%s", (prop == nullptr) ? default_value : prop); -- cgit v1.2.3