From ca71752e606d3a5538d2be88fa0d5540d4652061 Mon Sep 17 00:00:00 2001 From: Johannes Lorenz Date: Thu, 1 Nov 2018 13:01:17 +0100 Subject: [PATCH] Add .clang-format and .clang-tidy This enables files for checking against the [LMMS coding conventions](https://github.com/LMMS/lmms/wiki/Coding-conventions). There is no strategy for automatic testing yet. --- .clang-format | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ .clang-tidy | 33 +++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .clang-format create mode 100644 .clang-tidy diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000000..52edcf9e384 --- /dev/null +++ b/.clang-format @@ -0,0 +1,68 @@ +--- +# Language +Language: Cpp +Standard: Cpp11 # Cpp14 and Cpp17 are not supported by clang 11 + +# Indentation +TabWidth: 4 +UseTab: Always +IndentWidth: 4 +ColumnLimit: 0 + +# Indentation detail +AlignAfterOpenBracket: DontAlign +ContinuationIndentWidth: 4 +BreakConstructorInitializers: BeforeComma +ConstructorInitializerIndentWidth: 4 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +BinPackParameters: true +BinPackArguments: true +AlignOperands: false +AlignEscapedNewlines: DontAlign +AccessModifierOffset: -4 + +# Includes +IncludeBlocks: Regroup +IncludeCategories: + # the "main header" implicitly gets priority 0 + # system headers + - Regex: '^<[^>]+>$' + Priority: 1 + # non-system headers + - Regex: '.*' + Priority: 2 +SortIncludes: true + +# Spaces +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false + +# Brace wrapping +# Not directly mentioned in the coding conventions, +# but required to avoid tons of auto reformatting +BreakBeforeBraces: Custom +BraceWrapping: + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true + +# Pointers +# Use pointer close to type: `const char* const* function()` +PointerAlignment: Left + +... + diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000000..0f978c1ded1 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,33 @@ +--- +Checks: 'bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,modernize-use-override,readability-identifier-naming,readability-misleading-indentation,readability-simplify-boolean-expr,readability-braces-around-statements' +WarningsAsErrors: '' +HeaderFilterRegex: '' # don't show errors from headers +AnalyzeTemporaryDtors: false +FormatStyle: none +User: user +CheckOptions: + - key: readability-identifier-naming.ClassCase + value: CamelCase + - key: readability-identifier-naming.EnumCase + value: CamelCase + - key: readability-identifier-naming.TypedefCase + value: CamelCase + - key: readability-identifier-naming.UnionCase + value: CamelCase + - key: readability-identifier-naming.StructCase + value: CamelCase + - key: readability-identifier-naming.UnionCase + value: CamelCase +# not yet working, as it currently applies both for static and object members +# - key: readability-identifier-naming.MemberPrefix +# value: 'm_' + # currently only working for local static variables: + - key: readability-identifier-naming.StaticVariablePrefix + value: 's_' +# not yet working +# - key: readability-identifier-naming.VariableCase +# value: camelBack + - key: readability-identifier-naming.FunctionCase + value: camelBack +... +