diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..bdb82f2176 --- /dev/null +++ b/.clang-format @@ -0,0 +1,39 @@ +--- +# See all possible options and defaults with: +# clang-format --style=Microsoft --dump-config +BasedOnStyle: Microsoft +Language: Cpp +Standard: c++20 +AccessModifierOffset: -4 +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: All +BreakConstructorInitializers: BeforeColon +ColumnLimit: 0 +CommentPragmas: 'NOLINT:.*|^ IWYU pragma:' +IncludeBlocks: Regroup +IndentCaseLabels: true +IndentPPDirectives: AfterHash +# IndentWidth: 4 +SpaceAfterCStyleCast: true +UseTab: Always +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: true +AllowShortLambdasOnASingleLine: Inline +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +BreakBeforeBraces: Allman +DerivePointerAlignment: false +KeepEmptyLinesAtTheStartOfBlocks: false +NamespaceIndentation: None +PointerAlignment: Left +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000000..2ef1f22615 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,73 @@ +FormatStyle: file + +Checks: | + *bugprone*, + *performance*, + clang-analyzer-optin.cplusplus.VirtualCall, + clang-analyzer-optin.performance.Padding, + cppcoreguidelines-slicing, + google-explicit-constructor, + misc-definitions-in-headers, + misc-misplaced-const, + misc-non-copyable-objects, + misc-static-assert, + misc-throw-by-value-catch-by-reference, + misc-uniqueptr-reset-release, + modernize-avoid-bind, + modernize-loop-convert, + modernize-make-unique, + modernize-redundant-void-arg, + modernize-replace-auto-ptr, + modernize-replace-disallow-copy-and-assign-macro, + modernize-replace-random-shuffle, + modernize-shrink-to-fit, + modernize-use-auto, + modernize-use-bool-literals, + modernize-use-default-member-init, + modernize-use-emplace, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-noexcept, + modernize-use-nullptr, + modernize-use-using, + readability-avoid-const-params-in-decls, + readability-const-return-type, + readability-container-size-empty, + readability-delete-null-pointer, + readability-else-after-return, + readability-inconsistent-declaration-parameter-name, + readability-make-member-function-const, + readability-misplaced-array-index, + readability-non-const-parameter, + readability-qualified-auto, + readability-redundant-function-ptr-dereference, + readability-redundant-smartptr-get, + readability-redundant-string-cstr, + readability-simplify-subscript-expr, + readability-static-accessed-through-instance, + readability-static-definition-in-anonymous-namespace, + readability-string-compare, + readability-suspicious-call-argument, + readability-uniqueptr-delete-release, + -bugprone-easily-swappable-parameters, + -bugprone-exception-escape, + -bugprone-reserved-identifier, + -bugprone-unused-raii, + +CheckOptions: +- key: modernize-use-equals-default.IgnoreMacros + value: false +- key: performance-for-range-copy.WarnOnAllAutoCopies + value: true +- key: performance-inefficient-string-concatenation.StrictMode + value: true +- key: performance-unnecessary-value-param.AllowedTypes + value: 'exception_ptr$;' +- key: readability-implicit-bool-conversion.AllowPointerConditions + value: true +- key: readability-implicit-bool-conversion.AllowIntegerConditions + value: true +- key: readability-braces-around-statements.ShortStatementLines + value: 2 + +# HeaderFilterRegex: diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml new file mode 100644 index 0000000000..5759f1404e --- /dev/null +++ b/.github/workflows/clang-format-check.yml @@ -0,0 +1,27 @@ +name: clang-format Check +on: + pull_request: + push: + branches: + - clang-format + # - develop +jobs: + formatting-check: + name: Formatting Check + runs-on: ubuntu-latest + strategy: + matrix: + path: + - check: 'src' + exclude: '(Dummy|Sample|Coroutine)' + # - check: 'docs' + # exclude: '' + steps: + - uses: actions/checkout@v3 + - name: Run clang-format style check for C/C++/Protobuf programs. + uses: jidicula/clang-format-action@v4.11.0 + with: + clang-format-version: '13' + check-path: ${{ matrix.path['check'] }} + exclude-regex: ${{ matrix.path['exclude'] }} + fallback-style: 'Mozilla' diff --git a/Phobos.vcxproj b/Phobos.vcxproj index 7cd780d98d..4c4df78aff 100644 --- a/Phobos.vcxproj +++ b/Phobos.vcxproj @@ -317,6 +317,8 @@ false $(Configuration)\ $(Configuration)\IntDir\ + true + -clang-diagnostic-pragma-once-outside-header false @@ -324,6 +326,8 @@ false $(Configuration)\ $(Configuration)\IntDir\ + true + -clang-diagnostic-pragma-once-outside-header false @@ -331,6 +335,8 @@ false $(Configuration)\ $(Configuration)\IntDir\ + true + -clang-diagnostic-pragma-once-outside-header @@ -356,7 +362,7 @@ $(IntDir)\%(RelativeDir) StdCall %(AdditionalOptions) - 4100;4201;4530;4731;4740;4458;4819;5103;5105 + 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495; true true @@ -400,7 +406,7 @@ $(IntDir)\%(RelativeDir) StdCall %(AdditionalOptions) - 4100;4201;4530;4731;4740;4458;4819;5103;5105 + 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495; true true true @@ -443,7 +449,7 @@ $(IntDir)\%(RelativeDir) StdCall %(AdditionalOptions) - 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495 + 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495;26495 true true true