# Copyright (c) 2022, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

# See list of rules here:
# https://clang.llvm.org/extra/clang-tidy/
# https://clang.llvm.org/extra/clang-tidy/checks/list.html

Checks:
  -*,
  bugprone-*,
  -bugprone-easily-swappable-parameters,
  -bugprone-empty-catch,
  -bugprone-narrowing-conversions,
  -bugprone-suspicious-include,
  -bugprone-unhandled-exception-at-new,
  -bugprone-unsafe-functions,
  cert-*,
  -cert-dcl50-cpp,
  -cert-err34-c,
  -cert-msc24-c,
  -cert-msc33-c,
  clang-analyzer-*,
  -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
  -clang-analyzer-security.insecureAPI.strcpy,
  clang-diagnostic-*,
  -clang-diagnostic-deprecated-non-prototype,
  -clang-diagnostic-unknown-warning-option,
  -clang-diagnostic-unused-command-line-argument,
  -clang-diagnostic-unused-function,
  concurrency-*,
  -concurrency-mt-unsafe,
  cppcoreguidelines-*,
  -cppcoreguidelines-avoid-c-arrays,
  -cppcoreguidelines-avoid-const-or-ref-data-members,
  -cppcoreguidelines-avoid-do-while,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -cppcoreguidelines-init-variables,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-no-malloc,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-type-const-cast,
  -cppcoreguidelines-pro-type-member-init,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-union-access,
  -cppcoreguidelines-pro-type-vararg,
  -cppcoreguidelines-use-default-member-init,
  google-*,
  -google-readability-avoid-underscore-in-googletest-name,
  -google-readability-braces-around-statements,
  -google-runtime-int,
  -google-readability-todo,
  -google-build-using-namespace,
  hicpp-*,
  -hicpp-avoid-c-arrays,
  -hicpp-avoid-goto,
  -hicpp-exception-baseclass,
  -hicpp-member-init,
  -hicpp-multiway-paths-covered,
  -hicpp-named-parameter,
  -hicpp-no-array-decay,
  -hicpp-no-malloc,
  -hicpp-signed-bitwise,
  -hicpp-vararg,
  -hicpp-braces-around-statements,
  misc-*,
  -misc-const-correctness,
  -misc-include-cleaner,
  -misc-no-recursion,
  -misc-non-private-member-variables-in-classes,
  -misc-use-anonymous-namespace,
  modernize-*,
  -modernize-avoid-c-arrays,
  -modernize-macro-to-enum,
  -modernize-raw-string-literal,
  -modernize-use-trailing-return-type,
  -modernize-use-using,
  llvm-*,
  -llvm-header-guard,
  -llvm-include-order,
  performance-*,
  portability-*,
  readability-*,
  -readability-avoid-unconditional-preprocessor-if,
  -readability-braces-around-statements,
  -readability-convert-member-functions-to-static,
  -readability-identifier-length,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-named-parameter,
  -readability-non-const-parameter,
  -readability-redundant-member-init,

CheckOptions:
  - key:        readability-magic-numbers.IgnoredIntegerValues
    value:      "1;2;3;4;8;9;10;15;32;127;128;240;255"
  # Allow things like CHARSET_INFO cs;
  - key:             readability-identifier-length.MinimumParameterNameLength
    value:           2
  - key:             readability-identifier-length.MinimumVariableNameLength
    value:           2
  - key: readability-function-cognitive-complexity.Threshold
    value: 150
  - key: readability-function-cognitive-complexity.DescribeBasicIncrements
    value: false

FormatStyle: "file"
