This commit is contained in:
drodil 2018-10-18 15:47:18 +00:00 committed by GitHub
commit 65c6127503
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 143 additions and 2 deletions

133
.clang-format Normal file
View File

@ -0,0 +1,133 @@
---
# Clang-format settings for nlohmann/json
# For more information, see https://clang.llvm.org/docs/ClangFormatStyleOptions.html
# Language and general settings
Language: Cpp
Standard: Cpp11
DisableFormat: false
# Indentation
AccessModifierOffset: -2
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 0
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
TabWidth: 4
UseTab: Never
# Alignment
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
DerivePointerAlignment: false
PointerAlignment: Left
AlignTrailingComments: true
# Braces
BreakBeforeBraces: Custom
Cpp11BracedListStyle: true
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: false
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: false
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: true
SplitEmptyNamespace: true
# Wrapping
ColumnLimit: 120
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
BinPackArguments: true
BinPackParameters: true
ExperimentalAutoDetectBinPacking: false
# Comments
ReflowComments: false
CommentPragmas: '^ IWYU pragma:'
# Empty lines
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 1
# Spacing
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
# Includes
SortIncludes: true
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|nlohmann)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
SortUsingDeclarations: true
# Namespaces
FixNamespaceComments: true
CompactNamespaces: false
# Classes
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# Macros
MacroBlockBegin: ''
MacroBlockEnd: ''
# Penalties
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
...

View File

@ -50,7 +50,7 @@ To make changes, you need to edit the following files:
## Note
- If you open a pull request, the code will be automatically tested with [Valgrind](http://valgrind.org)'s Memcheck tool to detect memory leaks. Please be aware that the execution with Valgrind _may_ in rare cases yield different behavior than running the code directly. This can result in failing unit tests which run successfully without Valgrind.
- There is a Makefile target `make pretty` which runs [Artistic Style](http://astyle.sourceforge.net) to fix indentation. If possible, run it before opening the pull request. Otherwise, we shall run it afterward.
- There is a Makefile target `make pretty` which runs [Artistic Style](http://astyle.sourceforge.net) to fix indentation and [clang-format](https://clang.llvm.org/docs/ClangFormat.html). If possible, run it before opening the pull request. Otherwise, we shall run it afterward.
## Please don't

View File

@ -54,7 +54,7 @@ all:
@echo "json_unit - create single-file test executable"
@echo "pedantic_clang - run Clang with maximal warning flags"
@echo "pedantic_gcc - run GCC with maximal warning flags"
@echo "pretty - beautify code with Artistic Style"
@echo "pretty - beautify code with Artistic Style and clang-format"
@echo "run_benchmarks - build and run benchmarks"
##########################################################################
@ -276,9 +276,12 @@ clang_analyze:
##########################################################################
# maintainer targets
##########################################################################
ASTYLE := $(shell command -v astyle 2> /dev/null)
CLANG_FORMAT := $(shell command -v clang-format 2> /dev/null)
# pretty printer
pretty:
ifdef ASTYLE
astyle --style=allman --indent=spaces=4 --indent-modifiers \
--indent-switches --indent-preproc-block --indent-preproc-define \
--indent-col1-comments --pad-oper --pad-header --align-pointer=type \
@ -286,6 +289,11 @@ pretty:
--lineend=linux --preserve-date --suffix=none --formatted \
$(SRCS) $(AMALGAMATED_FILE) test/src/*.cpp \
benchmarks/src/benchmarks.cpp doc/examples/*.cpp
endif
ifdef CLANG_FORMAT
clang-format -i $(SRCS)
endif
# create single header file
amalgamate: $(AMALGAMATED_FILE)