aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-11-06 10:25:19 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-11-07 12:46:19 +0100
commitb78e72da0b27e222592ff1f1578c69bad4756c65 (patch)
tree392f22ede5c9dcc6585a5198272ff9324eb6faa2
parent8346216c9adf34920a6c0724d332c53557051557 (diff)
downloadpasst-b78e72da0b27e222592ff1f1578c69bad4756c65.tar
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.tar.gz
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.tar.bz2
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.tar.lz
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.tar.xz
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.tar.zst
passt-b78e72da0b27e222592ff1f1578c69bad4756c65.zip
clang: Move clang-tidy configuration from Makefile to .clang-tidy
Currently we configure clang-tidy with a very long command line spelled out in the Makefile (mostly a big list of lints to disable). Move it from here into a .clang-tidy configuration file, so that the config is accessible if clang-tidy is invoked in other ways (e.g. via clangd) as well. As a bonus this also means that we can move the bulky comments about why we're suppressing various tests inline with the relevant config lines. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--.clang-tidy93
-rw-r--r--Makefile111
2 files changed, 95 insertions, 109 deletions
diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 0000000..9d346ec
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,93 @@
+---
+Checks:
+ - "clang-diagnostic-*,clang-analyzer-*,*,-modernize-*"
+
+ # TODO: enable once https://bugs.llvm.org/show_bug.cgi?id=41311 is fixed
+ - "-clang-analyzer-valist.Uninitialized"
+
+ # Dubious value, would kill readability
+ - "-cppcoreguidelines-init-variables"
+
+ # Dubious value over the compiler's built-in warning. Would
+ # increase verbosity.
+ - "-bugprone-assignment-in-if-condition"
+
+ # Debatable whether these improve readability, right now it would look
+ # like a mess
+ - "-google-readability-braces-around-statements"
+ - "-hicpp-braces-around-statements"
+ - "-readability-braces-around-statements"
+
+ # TODO: in most cases they are justified, but probably not everywhere
+ #
+ - "-readability-magic-numbers"
+ - "-cppcoreguidelines-avoid-magic-numbers"
+
+ # TODO: this is Linux-only for the moment, nice to fix eventually
+ - "-llvmlibc-restrict-system-libc-headers"
+
+ # Those are needed for syscalls, epoll_wait flags, etc.
+ - "-hicpp-signed-bitwise"
+
+ # Probably not doable to impement this without plain memcpy(), memset()
+ - "-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling"
+
+ # TODO: not really important, but nice to fix eventually
+ - "-llvm-include-order"
+
+ # Dubious value, would kill readability
+ - "-readability-isolate-declaration"
+
+ # TODO: nice to fix eventually
+ - "-bugprone-narrowing-conversions"
+ - "-cppcoreguidelines-narrowing-conversions"
+
+ # TODO: check, fix, and more in general constify wherever possible
+ - "-cppcoreguidelines-avoid-non-const-global-variables"
+
+ # TODO: check paths where it might make sense to improve performance
+ - "-altera-unroll-loops"
+ - "-altera-id-dependent-backward-branch"
+
+ # Not much can be done about them other than being careful
+ - "-bugprone-easily-swappable-parameters"
+
+ # TODO: split reported functions
+ - "-readability-function-cognitive-complexity"
+
+ # "Poor" alignment needed for structs reflecting message formats/headers
+ - "-altera-struct-pack-align"
+
+ # TODO: check again if multithreading is implemented
+ - "-concurrency-mt-unsafe"
+
+ # Complains about any identifier <3 characters, reasonable for
+ # globals, pointlessly verbose for locals and parameters.
+ - "-readability-identifier-length"
+
+ # Wants to include headers which *directly* provide the things
+ # we use. That sounds nice, but means it will often want a OS
+ # specific header instead of a mostly standard one, such as
+ # <linux/limits.h> instead of <limits.h>.
+ - "-misc-include-cleaner"
+
+ # Want to replace all #defines of integers with enums. Kind of
+ # makes sense when those defines form an enum-like set, but
+ # weird for cases like standalone constants, and causes other
+ # awkwardness for a bunch of cases we use
+ - "-cppcoreguidelines-macro-to-enum"
+
+ # It's been a couple of centuries since multiplication has been granted
+ # precedence over addition in modern mathematical notation. Adding
+ # parentheses to reinforce that certainly won't improve readability.
+ - "-readability-math-missing-parentheses"
+WarningsAsErrors: "*"
+HeaderFileExtensions:
+ - h
+ImplementationFileExtensions:
+ - c
+HeaderFilterRegex: ""
+FormatStyle: none
+CheckOptions:
+ bugprone-suspicious-string-compare.WarnOnImplicitComparison: "false"
+SystemHeaders: false
diff --git a/Makefile b/Makefile
index 8e14309..f1e9937 100644
--- a/Makefile
+++ b/Makefile
@@ -181,116 +181,9 @@ docs: README.md
done < README.md; \
) > README.plain.md
-# Checkers currently disabled for clang-tidy:
-# - llvmlibc-restrict-system-libc-headers
-# TODO: this is Linux-only for the moment, nice to fix eventually
-#
-# - google-readability-braces-around-statements
-# - hicpp-braces-around-statements
-# - readability-braces-around-statements
-# Debatable whether that improves readability, right now it would look
-# like a mess
-#
-# - readability-magic-numbers
-# - cppcoreguidelines-avoid-magic-numbers
-# TODO: in most cases they are justified, but probably not everywhere
-#
-# - clang-analyzer-valist.Uninitialized
-# TODO: enable once https://bugs.llvm.org/show_bug.cgi?id=41311 is fixed
-#
-# - clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
-# Probably not doable to impement this without plain memcpy(), memset()
-#
-# - cppcoreguidelines-init-variables
-# Dubious value, would kill readability
-#
-# - hicpp-signed-bitwise
-# Those are needed for syscalls, epoll_wait flags, etc.
-#
-# - llvm-include-order
-# TODO: not really important, but nice to fix eventually
-#
-# - readability-isolate-declaration
-# Dubious value, would kill readability
-#
-# - bugprone-narrowing-conversions
-# - cppcoreguidelines-narrowing-conversions
-# TODO: nice to fix eventually
-#
-# - cppcoreguidelines-avoid-non-const-global-variables
-# TODO: check, fix, and more in general constify wherever possible
-#
-# - altera-unroll-loops
-# - altera-id-dependent-backward-branch
-# TODO: check paths where it might make sense to improve performance
-#
-# - bugprone-easily-swappable-parameters
-# Not much can be done about them other than being careful
-#
-# - readability-function-cognitive-complexity
-# TODO: split reported functions
-#
-# - altera-struct-pack-align
-# "Poor" alignment needed for structs reflecting message formats/headers
-#
-# - concurrency-mt-unsafe
-# TODO: check again if multithreading is implemented
-#
-# - readability-identifier-length
-# Complains about any identifier <3 characters, reasonable for
-# globals, pointlessly verbose for locals and parameters.
-#
-# - bugprone-assignment-in-if-condition
-# Dubious value over the compiler's built-in warning. Would
-# increase verbosity.
-#
-# - misc-include-cleaner
-# Wants to include headers which *directly* provide the things
-# we use. That sounds nice, but means it will often want a OS
-# specific header instead of a mostly standard one, such as
-# <linux/limits.h> instead of <limits.h>.
-#
-# - cppcoreguidelines-macro-to-enum
-# Want to replace all #defines of integers with enums. Kind of
-# makes sense when those defines form an enum-like set, but
-# weird for cases like standalone constants, and causes other
-# awkwardness for a bunch of cases we use
-#
-# - readability-math-missing-parentheses
-# It's been a couple of centuries since multiplication has been granted
-# precedence over addition in modern mathematical notation. Adding
-# parentheses to reinforce that certainly won't improve readability.
-
-
clang-tidy: $(PASST_SRCS) $(HEADERS)
- clang-tidy -checks=*,-modernize-*,\
- -clang-analyzer-valist.Uninitialized,\
- -cppcoreguidelines-init-variables,\
- -bugprone-assignment-in-if-condition,\
- -google-readability-braces-around-statements,\
- -hicpp-braces-around-statements,\
- -readability-braces-around-statements,\
- -readability-magic-numbers,\
- -llvmlibc-restrict-system-libc-headers,\
- -hicpp-signed-bitwise,\
- -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,\
- -llvm-include-order,\
- -cppcoreguidelines-avoid-magic-numbers,\
- -readability-isolate-declaration,\
- -bugprone-narrowing-conversions,\
- -cppcoreguidelines-narrowing-conversions,\
- -cppcoreguidelines-avoid-non-const-global-variables,\
- -altera-unroll-loops,-altera-id-dependent-backward-branch,\
- -bugprone-easily-swappable-parameters,\
- -readability-function-cognitive-complexity,\
- -altera-struct-pack-align,\
- -concurrency-mt-unsafe,\
- -readability-identifier-length,\
- -misc-include-cleaner,\
- -cppcoreguidelines-macro-to-enum,\
- -readability-math-missing-parentheses \
- -config='{CheckOptions: [{key: bugprone-suspicious-string-compare.WarnOnImplicitComparison, value: "false"}]}' \
- --warnings-as-errors=* $(PASST_SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) -DCLANG_TIDY_58992
+ clang-tidy $(PASST_SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) \
+ -DCLANG_TIDY_58992
SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)