0
Julia Hansbrough 929b1e79d1 [clang-tidy] Add a comment for useless clang-tidy checks.
Last time someone looked into clang-tidy warnings, there was a very long
wishlist of desired clang-tidy checks.  However, some of these checks,
upon closer investigation, do not seem useful to enable.  In particular,
all the checks in this CL, sans one, fire 0 times in the entirety of
Chromium's codebase, which suggest the checks catch a condition that
realistically will never occur in Chromium, is already caught by some
other tooling, etc.  (The check bugprone-undelegated-constructor fires
exactly once, but it's unclear why the code it fires on would be
problematic.)

In the interest of assisting developers that look into
clang-tidy-ificaiton in the future, I'd like to add a list of the checks
that the Chromium team has looked into and set aside, so that folks will
know if they're about to repeat work that's already been done.  Since
anyone looking into clang-tidy is guaranteed to look at this file, this
seems like the best place for them to live, rather than in a spreadsheet
or Google doc.

Change-Id: Icd671df620e7d7b524e2ff6e86f0af0798304ab8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6528148
Reviewed-by: Rick Byers <rbyers@chromium.org>
Commit-Queue: Julia Hansbrough <flowerhack@google.com>
Cr-Commit-Position: refs/heads/main@{#1458362}
2025-05-09 14:46:14 -07:00

100 lines
5.0 KiB
YAML

---
Checks: '-*,
bugprone-argument-comment,
bugprone-assert-side-effect,
bugprone-bool-pointer-implicit-conversion,
bugprone-dangling-handle,
bugprone-forward-declaration-namespace,
bugprone-inaccurate-erase,
bugprone-string-constructor,
bugprone-string-integer-assignment,
bugprone-suspicious-memset-usage,
bugprone-terminating-continue,
bugprone-undefined-memory-manipulation,
bugprone-unique-ptr-array-mismatch,
bugprone-unused-raii,
bugprone-use-after-move,
bugprone-virtual-near-miss,
google-build-explicit-make-pair,
google-default-arguments,
google-explicit-constructor,
google-objc-avoid-nsobject-new,
google-readability-casting,
google-upgrade-googletest-case,
misc-misleading-identifier,
misc-homoglyph,
modernize-avoid-bind,
modernize-concat-nested-namespaces,
modernize-loop-convert,
modernize-make-shared,
modernize-make-unique,
modernize-redundant-void-arg,
modernize-replace-random-shuffle,
modernize-shrink-to-fit,
modernize-use-bool-literals,
modernize-use-default-member-init,
modernize-use-emplace,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-noexcept,
modernize-use-nullptr,
modernize-use-override,
modernize-use-transparent-functors,
readability-redundant-member-init'
# DISABLED CHECKS:
# An analysis was done of the following checks and they were deemed to either
# have too high of a false positive rate, or were redundant/useless (e.g.
# never fired once in the entirety of chromium). We list them here so that
# future editors of this file are aware these checks have already been
# considered and accordingly rejected.
# bugprone-undelegated-constructor
# bugprone-macro-repeated-side-effects
# bugprone-misplaced-operator-in-strlen-in-alloc
# bugprone-misplaced-pointer-arithmetic-in-alloc
# bugprone-multiple-statement-macro
# bugprone-no-escape
# bugprone-posix-return
# bugprone-shared-ptr-array-mismatch
# bugprone-spuriously-wake-up-functions
# bugprone-standalone-empty
# bugprone-stringview-nullptr
# bugprone-suspicious-enum-usage
# bugprone-unhandled-exception-at-new
CheckOptions:
- key: bugprone-assert-side-effect.AssertMacros
value: assert,DCHECK
- key: bugprone-dangling-handle.HandleClasses
value: ::std::basic_string_view;::std::span;::absl::string_view;::base::BasicStringPiece;::base::span
- key: bugprone-string-constructor.StringNames
value: ::std::basic_string;::std::basic_string_view;::base::BasicStringPiece;::absl::string_view
- key: modernize-use-default-member-init.UseAssignment
value: 1
# crbug.com/1342136, crbug.com/1343915: At times, this check makes
# suggestions that break builds. Safe mode allows us to sidestep that.
- key: modernize-use-transparent-functors.SafeMode
value: 1
# This relaxes modernize-use-emplace in some cases; we might want to make it
# more aggressive in the future. See discussion on
# https://groups.google.com/a/chromium.org/g/cxx/c/noMMTNYiM0w .
- key: modernize-use-emplace.IgnoreImplicitConstructors
value: 1
# Use of `std::ranges::reverse_view` is inconsistent with
# Chromium style. Recommend `base::Reversed` instead.
- key: modernize-loop-convert.MakeReverseRangeFunction
value: base::Reversed
- key: modernize-loop-convert.MakeReverseRangeHeader
value: base/containers/adapters.h
# Exclude some third_party headers from modification as file paths are not
# starting from repository root in replacement suggestion.
# 'build/linux/debian' excludes system headers as they don't have
# appropriate IWYU pragmas.
# https://clang.llvm.org/extra/clang-tidy/checks/misc/include-cleaner.html
- key: misc-include-cleaner.IgnoreHeaders
value: (gmock/gmock|gtest/gtest|third_party|build/linux/debian).*
ExtraArgs:
# b/382774818: disable unknown pragma warnings until we can figure out why
# unknown pragmas are being warned about.
- -Wno-unknown-pragmas
...