3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-08 00:41:56 +00:00

Daily Backlog Burner: Add .clang-format file for consistent code formatting

This addresses issue #1441 by providing a comprehensive clang-format
configuration that standardizes C++ code formatting across the Z3 codebase.

The configuration is based on analysis of existing code style patterns:
- 4-space indentation (no tabs)
- Attached braces (same line as declarations)
- Left-aligned pointers and references (Type* ptr, Type& ref)
- No column limit (allows long lines as commonly seen in codebase)
- Allows short functions/blocks on single lines
- Consistent spacing around operators and keywords

Features:
- Enables 'git clang-format' for formatting patches
- Supports editor integration with clang-format plugins
- Provides consistent style for new contributions
- Based on Google style with Z3-specific customizations

Usage:
- Format entire file: clang-format -i filename.cpp
- Format git changes: git clang-format
- Editor integration available for vim, emacs, VS Code, etc.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Daily Backlog Burner 2025-09-17 01:47:47 +00:00
parent 81da4be228
commit 33de44cdc8

92
.clang-format Normal file
View file

@ -0,0 +1,92 @@
# Z3 Theorem Prover - clang-format configuration
# This configuration file standardizes code formatting across the Z3 codebase
# Based on analysis of existing code style patterns in the repository
# Use Google style as base and customize
BasedOnStyle: Google
# Basic formatting
IndentWidth: 4
UseTab: Never
ColumnLimit: 0
# Brace placement - Z3 uses attached braces consistently
BreakBeforeBraces: Attach
# Function and control structure formatting
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
# Spacing
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
# Pointer and reference alignment - Z3 uses "Type * ptr" style
PointerAlignment: Left
# Namespace formatting - Z3 typically doesn't indent namespace contents
NamespaceIndentation: None
# Template formatting
SpaceAfterTemplateKeyword: false
# Constructor initializers
BreakConstructorInitializers: BeforeColon
ConstructorInitializerIndentWidth: 4
# Function parameters and arguments
AllowAllParametersOfDeclarationOnNextLine: true
AllowAllArgumentsOnNextLine: true
BinPackParameters: true
BinPackArguments: true
# Include formatting
SortIncludes: true
IncludeBlocks: Regroup
# Other settings
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignOperands: true
AlignTrailingComments: true
AllowAllConstructorInitializersOnNextLine: true
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakStringLiterals: true
CompactNamespaces: false
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: false
IndentCaseLabels: true
IndentPPDirectives: None
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
ReflowComments: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeInheritanceColon: true
SpaceBeforeRangeBasedForLoopColon: true
# SpaceInEmptyBlockComment: true # Not supported in this version
Standard: Cpp11
TabWidth: 4
# Language-specific settings
Language: Cpp
# Disable formatting for specific areas if needed
# Use // clang-format off and // clang-format on to disable/enable formatting