Browse Source

Add a .clang-tidy config

1. Provides additional warnings and **can apply some automatic fixes**.
2. Suggest consistent identifier naming based on the Google Style Guide.
pull/1242/head
Gleb Mazovetskiy 5 years ago committed by Anders Jenbo
parent
commit
3fb2d21f3a
  1. 76
      .clang-tidy
  2. 1
      CMakeLists.txt

76
.clang-tidy

@ -0,0 +1,76 @@
---
# clang-tidy configuration
#
# clang-tidy can be run manually over a set of files like this:
#
# clang-tidy -p build/compile_commands.json SourceS/**/*.cpp
#
# To apply fixes suggested by clang-tidy, run:
#
# clang-tidy -p build/compile_commands.json --fix SourceS/**/*.cpp
#
# clang-tidy also has several IDE integrations listed here:
# https://clang.llvm.org/extra/clang-tidy/Integrations.html
# Enable most checks.
#
# Built-in checks:
# https://clang.llvm.org/extra/clang-tidy/checks/list.html
#
# Exclusions:
#
# -modernize-avoid-c-arrays
# We use C-arrays throughout, e.g. for `constexpr char []`.
# `std::array` is not a replacement because its length is
# not deduced.
#
# -modernize-use-trailing-return-type
# A purely stylistic change that we do not want.
Checks: >
-*,
bugprone-*,
cppcoreguidelines-pro-type-cstyle-cast,
google-runtime-int,
llvm-include-order,
llvm-namespace-comment,
misc-*,
modernize-*,
performance-*,
portability-*,
readability-*,
-modernize-avoid-c-arrays,
-modernize-use-trailing-return-type,
HeaderFilterRegex: "^Source[SXT].*\\.h$"
CheckOptions:
# Identifier names per the Google Style Guide:
# https://google.github.io/styleguide/cppguide.html#General_Naming_Rules
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
- { key: readability-identifier-naming.StructCase, value: CamelCase }
- { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase }
- { key: readability-identifier-naming.FunctionCase, value: aNy_CasE }
- { key: readability-identifier-naming.VariableCase, value: lower_case }
- { key: readability-identifier-naming.ClassMemberCase, value: lower_case }
- { key: readability-identifier-naming.ClassMemberSuffix, value: _ }
- { key: readability-identifier-naming.PrivateMemberSuffix, value: _ }
- { key: readability-identifier-naming.ProtectedMemberSuffix, value: _ }
- { key: readability-identifier-naming.EnumConstantCase, value: CamelCase }
- { key: readability-identifier-naming.EnumConstantPrefix, value: k }
- { key: readability-identifier-naming.ConstexprVariableCase, value: CamelCase }
- { key: readability-identifier-naming.ConstexprVariablePrefix, value: k }
- { key: readability-identifier-naming.GlobalConstantCase, value: CamelCase }
- { key: readability-identifier-naming.GlobalConstantPrefix, value: k }
- { key: readability-identifier-naming.MemberConstantCase, value: CamelCase }
- { key: readability-identifier-naming.MemberConstantPrefix, value: k }
- { key: readability-identifier-naming.StaticConstantCase, value: CamelCase }
- { key: readability-identifier-naming.StaticConstantPrefix, value: k }
# Allow short if-statements without braces
- { key: readability-braces-around-statements.ShortStatementLines, value: 2 }
# Use <cstdint> fixed-width integer types instead of short, long and long long
- { key: google-runtime-int.UnsignedTypePrefix, value: "std::uint" }
- { key: google-runtime-int.SignedTypePrefix, value: "std::int" }
- { key: google-runtime-int.TypeSuffix, value: "_t" }

1
CMakeLists.txt

@ -143,6 +143,7 @@ endif()
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # for clang-tidy
set(CMAKE_THREAD_PREFER_PTHREAD ON) set(CMAKE_THREAD_PREFER_PTHREAD ON)
set(THREADS_PREFER_PTHREAD_FLAG ON) set(THREADS_PREFER_PTHREAD_FLAG ON)

Loading…
Cancel
Save