summaryrefslogtreecommitdiff
path: root/.clang-tidy
blob: bf138c62d0546097fe6bbe2fcd6e5e7e2de1c32f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Here is an explanation for why some of the checks are disabled:

# bugprone-easily-swappable-parameters: This check would require significant
# refactoring effort.

# bugprone-unchecked-optional-access: Too many false positives. For example,
# an explicit comparison with std::nullopt isn't considered a check.

# cppcoreguidelines-avoid-const-or-ref-data-members: We believe, ref data
# members are a good way to express ownership, and const data members improve
# readability.

# cppcoreguidelines-rvalue-reference-param-not-moved: Too many false positives,
# especially with partial moves from STL containers.

# misc-const-correctness: Too many false positives, especially with STL
# containers.

# misc-include-cleaner: There is no way for symbol mapping. For example, this
# check requires to delete the "gsl/gsl" header, but at the same time asks to
# include one for gsl::not_null.

# misc-use-anonymous-namespace: This check would require significant refactoring
# effort, but wouldn't improve readability equally.

# misc-no-recursion: There are legitimate uses for us: we use recursion for
# trees a lot.

# modernize-return-braced-init-list: We think removing typenames and using only
# braced-init can hurt readability.

# performance-avoid-endl: There are too many legitimate uses of std::endl for
# us.

# readability-function-cognitive-complexity: This check would get triggered by
# most uses of the catch2 test library.

# readability-identifier-length: We would like to enable this check, but it
# would require significant refactoring effort.

# readability-redundant-member-init: Those are not redundant for structs, but
# clang-tidy keeps reporting this as an error.

FormatStyle: Google
Checks: >-
  *,-abseil-*,-altera-*,-android-*,-boost-*,-cert-*,-darwin-*,-fuchsia-*,-linuxkernel-*,-llvm-*,-llvmlibc-*,-mpi-*,-objc-*,-zircon-*,
  -bugprone-easily-swappable-parameters,-bugprone-unchecked-optional-access,
  -clang-analyzer-cplusplus.NewDeleteLeaks,
  -clang-diagnostic-unused-command-line-argument,
  -concurrency-mt-unsafe,
  -cppcoreguidelines-avoid-const-or-ref-data-members,-cppcoreguidelines-rvalue-reference-param-not-moved,
  -misc-const-correctness,-misc-include-cleaner,-misc-use-anonymous-namespace,-misc-no-recursion,
  -modernize-return-braced-init-list,
  -performance-avoid-endl,
  -readability-function-cognitive-complexity,-readability-identifier-length,-readability-redundant-member-init
WarningsAsErrors: '*'
CheckOptions:
  - { key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic, value: '1' }
  - { key: readability-identifier-naming.ClassCase,                     value: CamelCase  }
  - { key: readability-identifier-naming.EnumCase,                      value: CamelCase  }
  - { key: readability-identifier-naming.StructCase,                    value: CamelCase  }
  - { key: readability-identifier-naming.TypeTemplateParameterCase,     value: CamelCase  }
  - { 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          }
  - { key: readability-identifier-naming.ValueTemplateParameterCase,    value: CamelCase  }
  - { key: readability-identifier-naming.ValueTemplateParameterPrefix,  value: k          }
  - { key: readability-identifier-naming.VariableCase,                  value: lower_case }
  - { key: readability-identifier-naming.ClassMemberCase,               value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix,           value: _          }
  - { key: readability-identifier-naming.ProtectedMemberSuffix,         value: _          }