]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Add .clang-format configuration file 65049/head
authorEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Thu, 14 Aug 2025 13:45:31 +0000 (09:45 -0400)
committerEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Thu, 23 Oct 2025 18:54:40 +0000 (14:54 -0400)
Fixes: https://tracker.ceph.com/issues/72587
Signed-off-by: Edwin Rodriguez <edwin.rodriguez1@ibm.com>
.clang-format [new file with mode: 0644]

diff --git a/.clang-format b/.clang-format
new file mode 100644 (file)
index 0000000..cf35b86
--- /dev/null
@@ -0,0 +1,219 @@
+---
+
+# Documentation on clang-format options here:
+# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
+
+Language: Cpp
+Standard: c++20
+
+# Google style is a good starting point; modifiers attempt to match style
+# guide here: https://github.com/ceph/ceph/blob/main/CodingStyle
+BasedOnStyle: Google
+IndentWidth: 2
+TabWidth: 8
+UseTab: Never
+MaxEmptyLinesToKeep: 2
+ContinuationIndentWidth: 4
+
+# The intended impact here is to allow up to 96 characters, but break at 80 if
+# 96 is exceeded.
+ColumnLimit: 80
+
+# The "Penalty" concept in clang-format is not well
+# documented, see here for more: https://stackoverflow.com/questions/26635370
+#
+# Note that the penalties are not numbers of characters, they act more like
+# decision weights.
+PenaltyExcessCharacter: 50
+PenaltyBreakAssignment: 50
+PenaltyBreakBeforeFirstCallParameter: 50
+PenaltyBreakOpenParenthesis: 50
+
+# Brace wrapping to match style guide
+BreakBeforeBraces: Custom
+BraceWrapping:
+    AfterCaseLabel: false
+    AfterClass: false
+    AfterControlStatement: Never
+    AfterEnum: false
+    AfterFunction: true
+    AfterNamespace: false
+    AfterStruct: false
+    BeforeCatch: false
+    BeforeElse: false
+    BeforeLambdaBody: false
+    SplitEmptyFunction: false
+    SplitEmptyRecord: false
+    SplitEmptyNamespace: false
+
+# Access modifiers indent/outdent specified relative to body, use -2 to
+# align to braces.  Also do not indent case blocks. Finally, an emply line
+# should always precede "private:" or "public:" or "protected:"
+AccessModifierOffset: -2
+IndentCaseLabels: false
+EmptyLineBeforeAccessModifier: Always
+ConstructorInitializerIndentWidth: 2
+
+#Always break after an open bracket, if the parameters don’t fit on a single line
+AlignAfterOpenBracket: AlwaysBreak
+
+# Newline escapes should be aligned and located at the leftmost alignment
+AlignEscapedNewlines: Left
+
+# Align after operands across continuation into multiple lines for binary and
+# ternary.
+AlignOperands: Align
+
+# Do not align trailing comments across multiple lines. Note that this only applies
+# to the single-line comment style using "//". Block inlines are always left alone.
+AlignTrailingComments: false
+
+# If the function declaration doesn’t fit on a line, allow putting all parameters of a
+# function declaration onto the next line even if BinPackParameters is OnePerLine
+AllowAllParametersOfDeclarationOnNextLine: false
+
+# Do not allow short enums on a single line.
+AllowShortEnumsOnASingleLine: false
+
+# Only merge functions defined inside a class. Implies empty
+AllowShortFunctionsOnASingleLine: All
+
+# Never put short ifs on the same line.
+AllowShortIfStatementsOnASingleLine: false
+
+# If true, "while (true) continue;" can be put on a single line
+AllowShortLoopsOnASingleLine: false
+
+# Always break after the return type of function definitions.
+AlwaysBreakAfterReturnType: AllDefinitions
+
+# Always break after template declaration.
+AlwaysBreakTemplateDeclarations: Yes
+
+# If false, a function declaration’s or function definition’s parameters
+# will either all be on the same line or will have one line each.
+BinPackArguments: true
+BinPackParameters: false
+
+# The break should always be after the binary and ternary operands.
+BreakBeforeBinaryOperators: None
+BreakBeforeTernaryOperators: true
+
+# Break constructor initializers before the colon and after the commas.
+# Constructor()
+#     : initializer1(),
+#       initializer2()
+BreakConstructorInitializers: AfterColon
+
+# Pad the braced list with spaces inside the braces.
+Cpp11BracedListStyle: true
+
+# Where to put the & and the * in the case of pointers/references.
+DerivePointerAlignment: false
+PointerAlignment: Left
+
+# Keep empty lines at end of file.
+KeepEmptyLinesAtEOF: false
+
+# Keep empty lines at start of a block.
+KeepEmptyLinesAtTheStartOfBlocks: true
+
+# Align lambda body relative to the lambda signature.
+LambdaBodyIndentation: Signature
+
+# No indent in namespaces.
+NamespaceIndentation: None
+
+# No way to specify C vs C++ style comment for namespace closure, so just
+# leave them alone.
+FixNamespaceComments: true
+
+# 1 space before trailing comments
+SpacesBeforeTrailingComments: 1
+
+# Colon spacing should always be '"key" : "value"'
+BitFieldColonSpacing: Both
+
+# Do not break up strings into multi-line strings. This becomes a problem when
+# multi-line strings with no spaces are broken.
+BreakStringLiterals: true
+
+# C-tor should always break before the : and again before the {} in cases where
+# otherwise the c-tor could theoretically be one-lined. In the case where the
+# initializer list is short enough to fit on one line after the wrap, do not break
+# into individual lines.
+# Note NextLineOnly requires clang-format >= 15
+PackConstructorInitializers: NextLineOnly
+
+# includes are sorted based on the other suboptions below
+SortIncludes:    true
+# Merge multiple #include blocks together and sort as one. Then split into groups based on
+# category priority.
+IncludeBlocks: Regroup
+# Regular expressions denoting the different #include categories used for ordering #includes.
+IncludeCategories:
+  - Regex:      'debug.h'
+    Priority:   4
+  - Regex:      '\"\./[^/]+\"'
+    Priority:   1
+  - Regex:      '\"[^/]+\"'
+    Priority:   8
+  - Regex:     'boost'
+    Priority:   5
+  - Regex:      '<.*\.h'
+    Priority:   2
+  - Regex:      '<'
+    Priority:   3
+  - Regex:      '.*'
+    Priority:   6
+
+# use "template <>" instead of "template<>"
+SpaceAfterTemplateKeyword: true
+
+# Always pad assignments with a space, like "variable = 2;".
+SpaceBeforeAssignmentOperators: true
+
+# Turn off comment reflow entirely
+# TODO: This was done to prevent undoing good formatting of doxygen @brief @param
+#       etc multi-line comments (similar to this comment). Investigate comment
+#       pragmas to leave these alone?
+ReflowComments: false
+
+# There should always be an empty line between method definiton blocks.
+SeparateDefinitionBlocks: Always
+
+# The penalty for each line break introduced inside a comment.
+PenaltyBreakComment: 0
+
+# How many spaces are allowed at the start of a line comment. To disable the maximum
+# set it to -1, apart from that the maximum takes precedence over the minimum
+SpacesInLineCommentPrefix:
+  Minimum: 1
+  Maximum: -1
+
+---
+
+Language: Proto
+
+# Google style is a good starting point;
+BasedOnStyle: Google
+IndentWidth: 2
+
+# The intended impact here is to allow up to 96 characters, but break at 80 if
+# 96 is exceeded.  The "Penalty" concept in clang-format is not well
+# documented, see here for more: https://stackoverflow.com/questions/26635370
+ColumnLimit: 80
+PenaltyExcessCharacter: 50
+
+# Turn off comment reflow entirely
+# TODO: This was done to prevent undoing user-defined formatting of multi-line
+#       comments.
+ReflowComments: false
+
+---
+Language: Json
+
+# Google style is a good starting point
+BasedOnStyle: Google
+IndentWidth: 2
+MaxEmptyLinesToKeep: 2