--- # Configure clang-tidy for this project. # Here is an explanation for why some of the checks are disabled: # # -google-readability-namespace-comments: the *_CLIENT_NS is a macro, and # clang-tidy fails to match it against the initial value. # # -modernize-use-trailing-return-type: clang-tidy recommends using # `auto Foo() -> std::string { return ...; }`, we think the code is less # readable in this form. # # --modernize-concat-nested-namespaces: clang-tidy recommends # `namespace google::cloud {}` over `namespace google { namespace cloud { } }` # We need to support C++14, which does not supported nested namespaces. # # --modernize-use-nodiscard: clang-tidy recommends adding a nodiscard annotation # to functions where the return value should not be ignored. # We need to support C++14, which does not supported the annotation. # # -modernize-return-braced-init-list: We think removing typenames and using # only braced-init can hurt readability. # # -modernize-avoid-c-arrays: We only use C arrays when they seem to be the # right tool for the job, such as `char foo[] = "hello"`. In these cases, # avoiding C arrays often makes the code less readable, and std::array is # not a drop-in replacement because it doesn't deduce the size. # # -performance-move-const-arg: This warning requires the developer to # know/care more about the implementation details of types/functions than # should be necessary. For example, `A a; F(std::move(a));` will trigger a # warning IFF `A` is a trivial type (and therefore the move is # meaningless). It would also warn if `F` accepts by `const&`, which is # another detail that the caller need not care about. # # -readability-redundant-declaration: A friend declaration inside a class # counts as a declaration, so if we also declare that friend outside the # class in order to document it as part of the public API, that will # trigger a redundant declaration warning from this check. # # -readability-function-cognitive-complexity: too many false positives with # clang-tidy-12. We need to disable this check in macros, and that setting # only appears in clang-tidy-13. # # -bugprone-narrowing-conversions: too many false positives around # `std::size_t` vs. `*::difference_type`. # # -bugprone-easily-swappable-parameters: too many false positives. # # -bugprone-implicit-widening-of-multiplication-result: too many false positives. # Almost any expression of the form `2 * variable` or `long x = a_int * b_int;` # generates an error. # # -bugprone-unchecked-optional-access: too many false positives in tests. # Despite what the documentation says, this warning appears after # `ASSERT_TRUE(variable)` or `ASSERT_TRUE(variable.has_value())`. # Checks: > -*, abseil-*, bugprone-*,GetGame google-*, misc-*, modernize-*, performance-*, portability-*, readability-*, -google-readability-braces-around-statements, -google-readability-namespace-comments, -google-runtime-references, -misc-non-private-member-variables-in-classes, -misc-const-correctness, -modernize-return-braced-init-list, -modernize-use-trailing-return-type, -modernize-concat-nested-namespaces, -modernize-use-nodiscard, -modernize-avoid-c-arrays, -performance-move-const-arg, -readability-braces-around-statements, -readability-identifier-length, -readability-magic-numbers, -readability-named-parameter, -readability-redundant-declaration, -readability-function-cognitive-complexity, -readability-convert-member-functions-to-static, -readability-implicit-bool-conversion, -bugprone-narrowing-conversions, -bugprone-easily-swappable-parameters, -bugprone-implicit-widening-of-multiplication-result, -bugprone-unchecked-optional-access # Turn all the warnings from the checks above into errors. WarningsAsErrors: "*" CheckOptions: google-readability-braces-around-statements.ShortStatementLines: '1' google-readability-function-size.StatementThreshold: '800' google-readability-namespace-comments.ShortNamespaceLines: '10' google-readability-namespace-comments.SpacesBeforeComments: '2' readability-identifier-naming.PrivateMemberPrefix: 'm_' readability-identifier-naming.ProtectedMemberPrefix: 'm_' readability-identifier-naming.MemberPrefix: 'm_' readability-identifier-naming.ClassCase: CamelCase readability-identifier-naming.MemberCase: CamelCase readability-identifier-naming.EnumCase: CamelCase readability-identifier-naming.FunctionCase: CamelCase readability-identifier-naming.ParameterCase: CamelCase readability-identifier-naming.UnionCase: CamelCase readability-identifier-naming.VariableCase: CamelCase readability-identifier-naming.LocalConstantPointerPrefix: 'p' readability-identifier-naming.VariableHungarianPrefix: On readability-identifier-naming.ParameterHungarianPrefix: On readability-identifier-naming.MemberHungarianPrefix: On readability-identifier-naming.PointerParameterHungarianPrefix: On readability-identifier-naming.PointerParameterCase: CamelCase readability-identifier-naming.HungarianNotation.UserDefinedType.std::string: s