---
Checks: "
        # disable all warnings and enable sensible ones
        -*,
        # enable bugprone constructions warnings
        bugprone*,
        # disables check for swappable parameters, since this should be caught via LanguageServer and by using different types
        -bugprone-easily-swappable-parameters,

        # enable CERT C++ Coding standards recommendations
        cert*,

        # enable Clang recommendations
        clang*,

        # enable Google recommendations
        google*,
        # disable as we use a lot of llvm internal functions, which makes it more practical to just use the llvm namespace
        -google-build-using-namespace,

        # enable LLVM recomendations
        llvm*,
        # disable because we are using libc++ calls not in the llvm_libc namespace
        -llvmlibc*,

        # enable C++ core guidelines recommendations
        cppcoreguidelines*,
        # disabled as not magic number are often clear (code review will spot this in case its not)
        -cppcoreguidelines-avoid-magic-numbers,
        # disabled as we do not want expensive run-time checks and RTTI
        -cppcoreguidelines-pro-type-static-cast-downcast,

        # enable warnings for use of modern C++ constructions
        modernize*,
        # disabled as we do not force trailing return types
        -modernize-use-trailing-return-type,
        # disabled as pass-by-value pattern has potential pitfalls that shouldn't be adopted blindly
        -modernize-pass-by-value,

        # enable Performance issue warnings
        performance*,

        # enable readability recommendations
        readability*,
        # disabled as not magic number are often clear (code review will spot this in case its not)
        -readability-magic-numbers,
        # disabled as we don't care whether literal is uppercase or lowercase (e.g., 0ul or 0UL)
        -readability-uppercase-literal-suffix,
        # disable warning for auto instaed of auto* when binding to a pointer
        -readability-qualified-auto,

        # enable misc recommendations
        misc*,
        # disabled as we public member variables are quite useful (e.g., in structs)
        -misc-non-private-member-variables-in-classes,
"
# treat all warnings as errors
WarningsAsErrors: '*'
# show all warnings for nyxstone headers
HeaderFilterRegex: 'src/*.hpp,nyxstone/src/*.h'
FormatStyle:     none
