
# Copyright 2024-present the vsag project
#
# Licensed 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.


Checks: >
    -*,
    bugprone-*,
    -bugprone-easily-swappable-parameters,
    clang-analyzer-*,
    -clang-analyzer-deadcode.DeadStores, # value stored but never read
    # clang-diagnostic-*,
    -clang-diagnostic-deprecated-builtins,
    # google-*,
    # misc-*,
    modernize-*,
    -modernize-use-trailing-return-type,
    -modernize-avoid-c-arrays,
    # openmp-*,
    # performance-*,
    readability-*,
    -readability-identifier-length,
    -readability-magic-numbers,
    -readability-function-cognitive-complexity, # enable after fix all


HeaderFilterRegex: ''
WarningsAsErrors: "*"
AnalyzeTemporaryDtors: true

CheckOptions:
  - { key: readability-identifier-naming.NamespaceCase,               value: lower_case }
  - { key: readability-identifier-naming.ClassCase,                   value: CamelCase  }
  - { key: readability-identifier-naming.StructCase,                  value: lower_case }
  - { key: readability-identifier-naming.TypeTemplateParameterCase,   value: CamelCase  }
  - { key: readability-identifier-naming.ValueTemplateParameterCase,  value: lower_case }
  - { key: readability-identifier-naming.FunctionCase,                value: lower_case } # c-style function
  - { key: readability-identifier-naming.PublicMethodCase,            value: CamelCase  } # interfaces
  - { key: readability-identifier-naming.PrivateMethodCase,           value: lower_case } # impl
  - { key: readability-identifier-naming.VariableCase,                value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix,         value: _          }
  - { key: readability-identifier-naming.ProtectedMemberSuffix,       value: _          }
  - { key: readability-identifier-naming.MacroDefinitionCase,         value: UPPER_CASE }
  - { key: readability-identifier-naming.EnumConstantCase,            value: UPPER_CASE }
  - { key: readability-identifier-naming.GlobalConstantCase,          value: UPPER_CASE }
