Skip to content

Commit c1ff017

Browse files
authored
Merge pull request uriparser#272 from uriparser/clang-format
Make CI enforce clang-format clean code
2 parents e46f6b4 + 31357bf commit c1ff017

72 files changed

Lines changed: 14625 additions & 14696 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
---
2+
Language: Cpp
3+
AccessModifierOffset: -4
4+
AlignAfterOpenBracket: Align
5+
AlignArrayOfStructures: None
6+
AlignConsecutiveAssignments:
7+
Enabled: false
8+
AcrossEmptyLines: false
9+
AcrossComments: false
10+
AlignCompound: false
11+
AlignFunctionDeclarations: false
12+
AlignFunctionPointers: false
13+
PadOperators: true
14+
AlignConsecutiveBitFields:
15+
Enabled: false
16+
AcrossEmptyLines: false
17+
AcrossComments: false
18+
AlignCompound: false
19+
AlignFunctionDeclarations: false
20+
AlignFunctionPointers: false
21+
PadOperators: false
22+
AlignConsecutiveDeclarations:
23+
Enabled: false
24+
AcrossEmptyLines: false
25+
AcrossComments: false
26+
AlignCompound: false
27+
AlignFunctionDeclarations: true
28+
AlignFunctionPointers: false
29+
PadOperators: false
30+
AlignConsecutiveMacros:
31+
Enabled: false
32+
AcrossEmptyLines: false
33+
AcrossComments: false
34+
AlignCompound: false
35+
AlignFunctionDeclarations: false
36+
AlignFunctionPointers: false
37+
PadOperators: false
38+
AlignConsecutiveShortCaseStatements:
39+
Enabled: false
40+
AcrossEmptyLines: false
41+
AcrossComments: false
42+
AlignCaseArrows: false
43+
AlignCaseColons: false
44+
AlignConsecutiveTableGenBreakingDAGArgColons:
45+
Enabled: false
46+
AcrossEmptyLines: false
47+
AcrossComments: false
48+
AlignCompound: false
49+
AlignFunctionDeclarations: false
50+
AlignFunctionPointers: false
51+
PadOperators: false
52+
AlignConsecutiveTableGenCondOperatorColons:
53+
Enabled: false
54+
AcrossEmptyLines: false
55+
AcrossComments: false
56+
AlignCompound: false
57+
AlignFunctionDeclarations: false
58+
AlignFunctionPointers: false
59+
PadOperators: false
60+
AlignConsecutiveTableGenDefinitionColons:
61+
Enabled: false
62+
AcrossEmptyLines: false
63+
AcrossComments: false
64+
AlignCompound: false
65+
AlignFunctionDeclarations: false
66+
AlignFunctionPointers: false
67+
PadOperators: false
68+
AlignEscapedNewlines: DontAlign
69+
AlignOperands: Align
70+
AlignTrailingComments:
71+
Kind: Never
72+
OverEmptyLines: 0
73+
AllowAllArgumentsOnNextLine: true
74+
AllowAllParametersOfDeclarationOnNextLine: true
75+
AllowBreakBeforeNoexceptSpecifier: Never
76+
AllowShortBlocksOnASingleLine: Never
77+
AllowShortCaseExpressionOnASingleLine: true
78+
AllowShortCaseLabelsOnASingleLine: false
79+
AllowShortCompoundRequirementOnASingleLine: true
80+
AllowShortEnumsOnASingleLine: true
81+
AllowShortFunctionsOnASingleLine: None
82+
AllowShortIfStatementsOnASingleLine: Never
83+
AllowShortLambdasOnASingleLine: All
84+
AllowShortLoopsOnASingleLine: false
85+
AllowShortNamespacesOnASingleLine: false
86+
AlwaysBreakAfterDefinitionReturnType: None
87+
AlwaysBreakBeforeMultilineStrings: false
88+
AttributeMacros:
89+
- __capability
90+
BinPackArguments: true
91+
BinPackLongBracedList: true
92+
BinPackParameters: BinPack
93+
BitFieldColonSpacing: Both
94+
BracedInitializerIndentWidth: -1
95+
BraceWrapping:
96+
AfterCaseLabel: false
97+
AfterClass: false
98+
AfterControlStatement: Never
99+
AfterEnum: false
100+
AfterExternBlock: false
101+
AfterFunction: false
102+
AfterNamespace: false
103+
AfterObjCDeclaration: false
104+
AfterStruct: false
105+
AfterUnion: false
106+
BeforeCatch: false
107+
BeforeElse: false
108+
BeforeLambdaBody: false
109+
BeforeWhile: false
110+
IndentBraces: false
111+
SplitEmptyFunction: true
112+
SplitEmptyRecord: true
113+
SplitEmptyNamespace: true
114+
BreakAdjacentStringLiterals: true
115+
BreakAfterAttributes: Leave
116+
BreakAfterJavaFieldAnnotations: false
117+
BreakAfterReturnType: None
118+
BreakArrays: true
119+
BreakBeforeBinaryOperators: NonAssignment
120+
BreakBeforeConceptDeclarations: Always
121+
BreakBeforeBraces: Attach
122+
BreakBeforeInlineASMColon: OnlyMultiline
123+
BreakBeforeTemplateCloser: false
124+
BreakBeforeTernaryOperators: true
125+
BreakBinaryOperations: Never
126+
BreakConstructorInitializers: BeforeColon
127+
BreakFunctionDefinitionParameters: false
128+
BreakInheritanceList: BeforeColon
129+
BreakStringLiterals: true
130+
BreakTemplateDeclarations: MultiLine
131+
ColumnLimit: 90
132+
CommentPragmas: '^ IWYU pragma:'
133+
CompactNamespaces: false
134+
ConstructorInitializerIndentWidth: 4
135+
ContinuationIndentWidth: 4
136+
Cpp11BracedListStyle: true
137+
DerivePointerAlignment: false
138+
DisableFormat: false
139+
EmptyLineAfterAccessModifier: Never
140+
EmptyLineBeforeAccessModifier: LogicalBlock
141+
EnumTrailingComma: Leave
142+
ExperimentalAutoDetectBinPacking: false
143+
FixNamespaceComments: true
144+
ForEachMacros:
145+
- foreach
146+
- Q_FOREACH
147+
- BOOST_FOREACH
148+
IfMacros:
149+
- KJ_IF_MAYBE
150+
IncludeBlocks: Preserve
151+
IncludeCategories:
152+
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
153+
Priority: 2
154+
SortPriority: 0
155+
CaseSensitive: false
156+
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
157+
Priority: 3
158+
SortPriority: 0
159+
CaseSensitive: false
160+
- Regex: '.*'
161+
Priority: 1
162+
SortPriority: 0
163+
CaseSensitive: false
164+
IncludeIsMainRegex: '(Test)?$'
165+
IncludeIsMainSourceRegex: ''
166+
IndentAccessModifiers: false
167+
IndentCaseBlocks: false
168+
IndentCaseLabels: false
169+
IndentExportBlock: true
170+
IndentExternBlock: AfterExternBlock
171+
IndentGotoLabels: true
172+
IndentPPDirectives: AfterHash
173+
IndentRequiresClause: true
174+
IndentWidth: 4
175+
IndentWrappedFunctionNames: false
176+
InsertBraces: false
177+
InsertNewlineAtEOF: false
178+
InsertTrailingCommas: None
179+
IntegerLiteralSeparator:
180+
Binary: 0
181+
BinaryMinDigits: 0
182+
Decimal: 0
183+
DecimalMinDigits: 0
184+
Hex: 0
185+
HexMinDigits: 0
186+
JavaScriptQuotes: Leave
187+
JavaScriptWrapImports: true
188+
KeepEmptyLines:
189+
AtEndOfFile: false
190+
AtStartOfBlock: true
191+
AtStartOfFile: true
192+
KeepFormFeed: false
193+
LambdaBodyIndentation: Signature
194+
LineEnding: DeriveLF
195+
MacroBlockBegin: ''
196+
MacroBlockEnd: ''
197+
MainIncludeChar: Quote
198+
MaxEmptyLinesToKeep: 1
199+
NamespaceIndentation: None
200+
ObjCBinPackProtocolList: Auto
201+
ObjCBlockIndentWidth: 2
202+
ObjCBreakBeforeNestedBlockParam: true
203+
ObjCSpaceAfterProperty: false
204+
ObjCSpaceBeforeProtocolList: true
205+
OneLineFormatOffRegex: ''
206+
PackConstructorInitializers: BinPack
207+
PenaltyBreakAssignment: 2
208+
PenaltyBreakBeforeFirstCallParameter: 19
209+
PenaltyBreakBeforeMemberAccess: 150
210+
PenaltyBreakComment: 300
211+
PenaltyBreakFirstLessLess: 120
212+
PenaltyBreakOpenParenthesis: 0
213+
PenaltyBreakScopeResolution: 500
214+
PenaltyBreakString: 1000
215+
PenaltyBreakTemplateDeclaration: 10
216+
PenaltyExcessCharacter: 1000000
217+
PenaltyIndentedWhitespace: 0
218+
PenaltyReturnTypeOnItsOwnLine: 60
219+
PointerAlignment: Middle
220+
PPIndentWidth: 2
221+
QualifierAlignment: Leave
222+
ReferenceAlignment: Pointer
223+
ReflowComments: Always
224+
RemoveBracesLLVM: false
225+
RemoveEmptyLinesInUnwrappedLines: false
226+
RemoveParentheses: Leave
227+
RemoveSemicolon: false
228+
RequiresClausePosition: OwnLine
229+
RequiresExpressionIndentation: OuterScope
230+
SeparateDefinitionBlocks: Leave
231+
ShortNamespaceLines: 1
232+
SkipMacroDefinitionBody: false
233+
SortIncludes:
234+
Enabled: false
235+
IgnoreCase: false
236+
SortJavaStaticImport: Before
237+
SortUsingDeclarations: LexicographicNumeric
238+
SpaceAfterCStyleCast: false
239+
SpaceAfterLogicalNot: false
240+
SpaceAfterOperatorKeyword: false
241+
SpaceAfterTemplateKeyword: true
242+
SpaceAroundPointerQualifiers: Default
243+
SpaceBeforeAssignmentOperators: true
244+
SpaceBeforeCaseColon: false
245+
SpaceBeforeCpp11BracedList: false
246+
SpaceBeforeCtorInitializerColon: true
247+
SpaceBeforeInheritanceColon: true
248+
SpaceBeforeJsonColon: false
249+
SpaceBeforeParens: ControlStatements
250+
SpaceBeforeParensOptions:
251+
AfterControlStatements: true
252+
AfterForeachMacros: true
253+
AfterFunctionDefinitionName: false
254+
AfterFunctionDeclarationName: false
255+
AfterIfMacros: true
256+
AfterNot: false
257+
AfterOverloadedOperator: false
258+
AfterPlacementOperator: true
259+
AfterRequiresInClause: false
260+
AfterRequiresInExpression: false
261+
BeforeNonEmptyParentheses: false
262+
SpaceBeforeRangeBasedForLoopColon: true
263+
SpaceBeforeSquareBrackets: false
264+
SpaceInEmptyBlock: false
265+
SpacesBeforeTrailingComments: 2
266+
SpacesInAngles: Never
267+
SpacesInContainerLiterals: true
268+
SpacesInLineCommentPrefix:
269+
Minimum: 1
270+
Maximum: -1
271+
SpacesInParens: Never
272+
SpacesInParensOptions:
273+
ExceptDoubleParentheses: false
274+
InCStyleCasts: false
275+
InConditionalStatements: false
276+
InEmptyParentheses: false
277+
Other: false
278+
SpacesInSquareBrackets: false
279+
Standard: Latest
280+
StatementAttributeLikeMacros:
281+
- Q_EMIT
282+
StatementMacros:
283+
- Q_UNUSED
284+
- QT_REQUIRE_VERSION
285+
TableGenBreakInsideDAGArg: DontBreak
286+
TabWidth: 8
287+
UseTab: Never
288+
VerilogBreakBetweenInstancePorts: true
289+
WhitespaceSensitiveMacros:
290+
- BOOST_PP_STRINGIZE
291+
- CF_SWIFT_NAME
292+
- NS_SWIFT_NAME
293+
- PP_STRINGIZE
294+
- STRINGIZE
295+
WrapNamespaceBodyWithEmptyLines: Leave
296+
...
297+

.github/workflows/clang_format.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Copyright (C) 2025 Sebastian Pipping <sebastian@pipping.org>
2+
# Licensed under the MIT license
3+
4+
name: Enforce clang-format clean code
5+
6+
on:
7+
pull_request:
8+
push:
9+
schedule:
10+
- cron: '0 2 * * 5' # Every Friday at 2am
11+
workflow_dispatch:
12+
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
clang_format:
18+
runs-on: ubuntu-24.04
19+
steps:
20+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
21+
22+
- name: Install Clang 21
23+
run: |-
24+
set -x
25+
source /etc/os-release
26+
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
27+
sudo add-apt-repository "deb https://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-21 main"
28+
sudo apt-get update # due to new repository
29+
sudo apt-get install --yes --no-install-recommends -V \
30+
clang-format-21
31+
echo /usr/lib/llvm-21/bin >>"${GITHUB_PATH}"
32+
33+
- name: Enforce clang-format clean code
34+
run: |
35+
set -x -o pipefail
36+
clang-format --version
37+
git ls-files \*.cpp \*.c \*.h \*.h.in | xargs clang-format -i
38+
sed 's,#\( \+\)cmakedefine,#cmakedefine,' -i.bak src/UriConfig.h.in # this helps Meson
39+
git -c color.ui=always diff --exit-code # i.e. fail CI for non-empty diff

0 commit comments

Comments
 (0)