mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-25 15:00:13 +01:00
Our style guide suggests using `<stdint.h>` and not the `std::` qualifiers, and this is consistent with other headers like `<time.h>`. The `clang-tidy` check enforces the reverse pattern, so disable it to allow us to continue following our style pattern.
146 lines
5.7 KiB
YAML
146 lines
5.7 KiB
YAML
# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
# Exceptions. See /LICENSE for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
---
|
|
# Get colors when outputting through `bazel build --config=clang-tidy`.
|
|
UseColor: true
|
|
# This is necessary for `--config=clang-tidy` to catch errors.
|
|
WarningsAsErrors: '*'
|
|
|
|
Checks:
|
|
# We turn on all of a few categories by default.
|
|
- '-*'
|
|
- 'bugprone-*'
|
|
- 'google-*'
|
|
- 'misc-*'
|
|
- 'modernize-*'
|
|
- 'performance-*'
|
|
- 'readability-*'
|
|
|
|
# Disabled due to the implied style choices.
|
|
- '-misc-const-correctness'
|
|
- '-misc-include-cleaner'
|
|
- '-misc-use-anonymous-namespace'
|
|
- '-modernize-deprecated-headers'
|
|
- '-modernize-return-braced-init-list'
|
|
- '-modernize-use-default-member-init'
|
|
- '-modernize-use-integer-sign-comparison'
|
|
- '-modernize-use-emplace'
|
|
- '-readability-avoid-nested-conditional-operator'
|
|
- '-readability-convert-member-functions-to-static'
|
|
- '-readability-else-after-return'
|
|
- '-readability-identifier-length'
|
|
- '-readability-implicit-bool-conversion'
|
|
- '-readability-make-member-function-const'
|
|
- '-readability-math-missing-parentheses'
|
|
- '-readability-static-definition-in-anonymous-namespace'
|
|
- '-readability-use-anyofallof'
|
|
|
|
# Warns when we have multiple empty cases in switches, which we do for comment
|
|
# reasons.
|
|
- '-bugprone-branch-clone'
|
|
# Frequently warns on multiple parameters of the same type.
|
|
- '-bugprone-easily-swappable-parameters'
|
|
# Finds issues like out-of-memory in main(). We don't use exceptions, so it's
|
|
# unlikely to find real issues.
|
|
- '-bugprone-exception-escape'
|
|
# Has false positives in places such as using an argument to declare a name,
|
|
# which cannot have parentheses. For our limited use of macros, this is a
|
|
# common conflict.
|
|
- '-bugprone-macro-parentheses'
|
|
# Conflicts with integer type C++ style.
|
|
- '-bugprone-narrowing-conversions'
|
|
# Has false positives for `enum_base.h`. Clang's built-in switch warnings
|
|
# cover most of our risk of bugs here.
|
|
- '-bugprone-switch-missing-default-case'
|
|
# In clang-tidy 16, has false positives on code like:
|
|
# while (auto name_ref = insts().Get(inst_id).TryAs<SemIR::NameRef>()) {
|
|
# inst_id = name_ref->value_id;
|
|
# ^ unchecked access to optional value
|
|
# }
|
|
- '-bugprone-unchecked-optional-access'
|
|
# Overlaps with `readability-function-size`.
|
|
- '-google-readability-function-size'
|
|
# Suggests usernames on TODOs, which we don't want.
|
|
- '-google-readability-todo'
|
|
# Extremely slow. TODO: Re-enable once
|
|
# https://github.com/llvm/llvm-project/issues/128797 is fixed.
|
|
- '-misc-confusable-identifiers'
|
|
# Overlaps with `-Wno-missing-prototypes`.
|
|
- '-misc-use-internal-linkage'
|
|
# Suggests `std::array`, which we could migrate to, but conflicts with the
|
|
# status quo.
|
|
- '-modernize-avoid-c-arrays'
|
|
# Warns on creation of SemIR typed insts, for which we do not currently want
|
|
# to use designated initialization.
|
|
- '-modernize-use-designated-initializers'
|
|
# Only fixes const methods, not non-const, which yields distracting results on
|
|
# accessors.
|
|
- '-modernize-use-nodiscard'
|
|
# We aren't using the ranges library due to performance concerns.
|
|
- '-modernize-use-ranges'
|
|
# Low value compared to the engineering cost.
|
|
- '-performance-enum-size'
|
|
# Duplicates `modernize-pass-by-value`.
|
|
- '-performance-unnecessary-value-param'
|
|
# Warns on enums which use the `LastValue = Value` pattern if all the other
|
|
# discriminants aren't given an explicit value.
|
|
- '-readability-enum-initial-value'
|
|
# Warns too frequently.
|
|
- '-readability-function-cognitive-complexity'
|
|
# Warns in reasonably documented situations.
|
|
- '-readability-magic-numbers'
|
|
# Warns on `= {}` which is also used to indicate which fields do not need to
|
|
# be explicitly initialized in aggregate initialization.
|
|
- '-readability-redundant-member-init'
|
|
# Warns when callers use similar names as different parameters.
|
|
- '-readability-suspicious-call-argument'
|
|
|
|
CheckOptions:
|
|
# Don't warn on structs; done by ignoring when there are only public members.
|
|
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
|
|
value: true
|
|
|
|
# CamelCase names.
|
|
- key: readability-identifier-naming.ClassCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.ClassConstantCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.ConstexprVariableCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.NamespaceCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.StructCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.TemplateParameterCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.TypeAliasCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.TypedefCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.UnionCase
|
|
value: CamelCase
|
|
|
|
# lower_case names.
|
|
- key: readability-identifier-naming.ClassMemberCase
|
|
value: lower_case
|
|
- key: readability-identifier-naming.ParameterCase
|
|
value: lower_case
|
|
- key: readability-identifier-naming.VariableCase
|
|
value: lower_case
|
|
|
|
# TODO: This is for explorer's use of LLVM casting support, so we should be
|
|
# able to remove it once explorer is deleted.
|
|
- key: readability-identifier-naming.MethodIgnoredRegexp
|
|
value: '^classof$'
|
|
|
|
# This erroneously fires in C++20 mode with LLVM 16 clang-tidy, due to:
|
|
# https://github.com/llvm/llvm-project/issues/46097
|
|
- key: readability-identifier-naming.TemplateParameterIgnoredRegexp
|
|
value: '^expr-type$'
|
|
|
|
# Don't require writing a return type on lambdas.
|
|
- key: modernize-use-trailing-return-type.TransformLambdas
|
|
value: none
|