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>
This commit is contained in:
parent
8346216c9a
commit
b78e72da0b
2 changed files with 95 additions and 109 deletions
93
.clang-tidy
Normal file
93
.clang-tidy
Normal file
|
@ -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
|
111
Makefile
111
Makefile
|
@ -181,116 +181,9 @@ docs: README.md
|
||||||
done < README.md; \
|
done < README.md; \
|
||||||
) > README.plain.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: $(PASST_SRCS) $(HEADERS)
|
||||||
clang-tidy -checks=*,-modernize-*,\
|
clang-tidy $(PASST_SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) \
|
||||||
-clang-analyzer-valist.Uninitialized,\
|
-DCLANG_TIDY_58992
|
||||||
-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
|
|
||||||
|
|
||||||
SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
|
SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
|
||||||
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
|
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
|
||||||
|
|
Loading…
Reference in a new issue