From 2ea96f88a8faa7cda1c0a59e2a72d034c12ec864 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 17 Mar 2019 15:11:14 +0000 Subject: [PATCH] targets-tools.mk: Ongoing additions to clang-tidy-xxx targets Signed-off-by: Jan Lindemann --- make/targets-tools.mk | 47 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/make/targets-tools.mk b/make/targets-tools.mk index a23fc4fe..71c52602 100644 --- a/make/targets-tools.mk +++ b/make/targets-tools.mk @@ -52,18 +52,49 @@ clean.link: rmdir -p $(dir $(HDRDIR_SCOPE_SUFFIX)) 2>/dev/null || : ;\ fi -CLANG_TIDY_CHECKS ?= -*,clang-analyzer-*,-clang-analyzer-cplusplus*,modernize-*,portability-*,cppcoreguidelines-* +CLANG_TIDY_H_C_CPP := $(shell $(ECHO) $(LOCAL_H) | xargs -r $(GREP) -l 'extern *"C"') +CLANG_TIDY_H_C := $(wildcard [a-z]*.h) +CLANG_TIDY_H_CPP := $(wildcard [A-Z]*.h) +#CLANG_TIDY_H_CPP := $(filter-out $(CLANG_TIDY_H_C),$(LOCAL_H)) + +# false positives on assert(), see https://reviews.llvm.org/D31130 +CLANG_TIDY_EXTRA_ARGS += -cppcoreguidelines-pro-bounds-array-to-pointer-decay + +# keep va_args +CLANG_TIDY_EXTRA_ARGS += -cppcoreguidelines-pro-type-vararg + +# keep pointer arithmetic +CLANG_TIDY_EXTRA_ARGS += -cppcoreguidelines-pro-bounds-pointer-arithmetic + +# don't have GSL (for now) +CLANG_TIDY_EXTRA_ARGS += -cppcoreguidelines-pro-bounds-constant-array-index + +CLANG_TIDY_FILTER = $(SED) 's%\[\([a-z-]\+\)\]$$%[https://clang.llvm.org/extra/clang-tidy/checks/\1.html]%' +comma := , +empty := +space := $(empty) $(empty) +CLANG_TIDY_CHECKS ?= -$(subst $(space),,*,clang-analyzer-*,-clang-analyzer-cplusplus*,modernize-*,portability-*,cppcoreguidelines-*$(addprefix $(comma),$(CLANG_TIDY_EXTRA_ARGS))) CLANG_TIDY ?= clang-tidy -checks=$(CLANG_TIDY_CHECKS) -clang-tidy-h: - #$(CLANG_TIDY) $(filter-out $(LOCAL_C_HEADER),$(LOCAL_H)) -- $(INCLUDE) -x c++ - $(CLANG_TIDY) $(wildcard [A-Z]*.h) -- $(INCLUDE) -x c++ - #$(CLANG_TIDY) $(LOCAL_C_HEADER) -- $(INCLUDE) - $(CLANG_TIDY) $(wildcard [a-z]*.h) -- $(INCLUDE) +clean: clang-tidy-clean +clang-tidy-clean: + rm -f clang-tidy-cache*.tmp +CLANG_TIDY_CACHE_CPP = clang-tidy-cache-cpp.tmp +$(CLANG_TIDY_CACHE_CPP): $(LOCAL_CPP) + $(CLANG_TIDY) $(LOCAL_CPP) -- $(INCLUDE) -x c++ -fix | $(CLANG_TIDY_FILTER) | tee $@ + +clang-tidy-h-c-cpp: + $(CLANG_TIDY) $(CLANG_TIDY_H_C_CPP) -- $(INCLUDE) +clang-tidy-h-c: + $(CLANG_TIDY) $(CLANG_TIDY_H_C) -- $(INCLUDE) +clang-tidy-h-cpp: + $(CLANG_TIDY) $(CLANG_TIDY_H_CPP) -- $(INCLUDE) -x c++ +clang-tidy-h: clang-tidy-h-c clang-tidy-h-cpp clang-tidy-h-c-cpp + clang-tidy-c: $(CLANG_TIDY) $(LOCAL_C) -- $(INCLUDE) -fix -clang-tidy-cpp: - $(CLANG_TIDY) $(LOCAL_CPP) -- $(INCLUDE) -x c++ -fix +clang-tidy-cpp: $(CLANG_TIDY_CACHE_CPP) + cat $< clang-tidy: clang-tidy-h clang-tidy-c clang-tidy-cpp endif # ifndef TARGETS_TOOLS_MK_INCLUDED