blob: 7e8e813fe269a9a66fc99d8ed84a776c7d2687e6 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Explanation for why some checks are disabled (separated from the list of
# checks as we can't inline comments).
#
# 'llvm-include-order'
#
# IWYU has specific rules for ordering '-inl.h' include files, i.e.
# 'header.h' and its 'header-inl.h' counterpart. It seems in some cases
# including 'header-inl.h' before 'header.h' might even lead to compilation
# failures. So, IWYU intentionally re-orders them even if 'header-inl.h'
# comes before 'header.h' lexicographically in default C locale:
# https://github.com/apache/kudu/blob/ \
# 89ce529e945731c48445db4a6f8af11f9f905aab/build-support/iwyu/ \
# fix_includes.py#L1786-L1787
#
# That ordering contradicts with what clang-tidy recommends when using the
# 'llvm-include-order' check.
#
# TODO(aserbin): clarify whether it's possible to customize clang-tidy
# behavior w.r.t. the sorting of such header files using
# the format style options described at
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
#
# 'readability-magic-numbers'
#
# Although useful in production code, we use magic numbers liberally in
# tests, and many would be net less clear as named constants.
#
# 'misc-non-private-member-variables-in-classes'
#
# There are two problems with this diagnostic in the Kudu codebase:
# 1. structs containing nothing but public data members. Permitted by the Google
# Style Guide (GSG) and used liberally in Kudu. We could set
# IgnoreClassesWithAllMemberVariablesBeingPublic to ignore them.
# 2. protected data members. Nominally prohibited, there's a necessary exception
# for test fixtures, and that is used extensively in Kudu. Unfortunately
# there's no way to customize that aspect of the diagnostic, so we must
# disable the entire thing to avoid a deluge of false positives.
Checks: >-
-*,
bugprone-*,
clang-analyzer-*,
clang-analyzer-deadcode.DeadStores,
-clang-analyzer-alpha*,
clang-diagnostic-*,
google-*,
-google-readability-braces-around-statements,
hicpp-noexcept-move,
-llvm-include-order,
misc-*,
-misc-non-private-member-variables-in-classes,
-modernize-*,
modernize-deprecated-headers,
modernize-make-shared,
modernize-pass-by-value,
modernize-shrink-to-fit,
modernize-use-emplace,
modernize-use-nullptr,
modernize-use-override,
performance-*,
readability-*,
-readability-braces-around-statements,
-readability-implicit-bool-conversion,
-readability-magic-numbers,
-readability-redundant-string-init
HeaderFilterRegex: '.*,-*.pb.h'
CheckOptions:
- key: google-runtime-references.WhiteListTypes
value: ev::io
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.EnumCase
value: CamelCase
- key: readability-identifier-naming.PrivateMemberSuffix
value: '_'
- key: readability-identifier-naming.ParameterCase
value: lower_case
- key: readability-identifier-naming.NamespaceCase
value: lower_case
- key: readability-identifier-naming.InlineNamespaceCase
value: lower_case
- key: readability-identifier-naming.GlobalConstantCase
value: CamelCase
- key: readability-identifier-naming.GlobalConstantPrefix
value: 'k'