Browse Source

Add formatting settings

pull/1904/head
duckdoom5 5 months ago
parent
commit
900d345b20
  1. 80
      .clang-format
  2. 90
      .editorconfig
  3. 29
      .github/workflows/clang-format-check.yml
  4. 4
      .github/workflows/main.yml
  5. 97
      RunClangFormat.sh

80
.clang-format

@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
Language : Cpp
BasedOnStyle : Microsoft
Standard : Latest
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
AccessModifierOffset : -4
AlignTrailingComments :
Kind : Always
OverEmptyLines : 0
AllowAllParametersOfDeclarationOnNextLine : false
AllowShortBlocksOnASingleLine : Empty
AllowShortIfStatementsOnASingleLine : Never
AllowShortLoopsOnASingleLine : false
AllowShortCaseLabelsOnASingleLine : true
AllowShortFunctionsOnASingleLine : Inline
AllowShortLambdasOnASingleLine : Empty
AlwaysBreakTemplateDeclarations : Yes
BinPackParameters : false
BreakBeforeBraces : Custom
BraceWrapping :
AfterCaseLabel : true
AfterClass : true
AfterControlStatement : Always
AfterEnum : true
AfterFunction : true
AfterNamespace : false
AfterObjCDeclaration : true
AfterStruct : true
AfterUnion : true
AfterExternBlock : true
BeforeCatch : true
BeforeElse : true
BeforeLambdaBody : true
BeforeWhile : true
IndentBraces : false
SplitEmptyFunction : true
SplitEmptyRecord : false
SplitEmptyNamespace : true
BreakAfterAttributes : Leave
BreakBeforeTernaryOperators : false
BreakConstructorInitializers : BeforeComma
BreakBeforeConceptDeclarations : Always
ColumnLimit : 0
Cpp11BracedListStyle : false
CompactNamespaces : true
IndentWidth : 4
IndentCaseLabels : true
IndentRequiresClause : true
SortIncludes : Never
IncludeBlocks : Preserve
KeepEmptyLinesAtTheStartOfBlocks : true
MaxEmptyLinesToKeep : 2
EmptyLineAfterAccessModifier : Leave
EmptyLineBeforeAccessModifier : LogicalBlock
NamespaceIndentation : Inner
PointerAlignment : Left
SpacesBeforeTrailingComments : 1
SpacesInAngles : Never
SpacesInSquareBrackets : false
RequiresClausePosition : OwnLine
RequiresExpressionIndentation : Keyword
SpacesInLineCommentPrefix :
Minimum : 1
Maximum : -1
TabWidth : 4
UseTab : Never
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
---
Language: CSharp
BasedOnStyle : Microsoft
Standard : Latest

90
.editorconfig

@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
[*.cs]
# IDE0011: Add braces
csharp_prefer_braces = false:silent
# IDE0008: Use explicit type
dotnet_diagnostic.IDE0008.severity = none
csharp_indent_labels = one_less_than_current
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_throw_expression = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
csharp_style_prefer_method_group_conversion = true:silent
csharp_space_around_binary_operators = before_and_after
[*.{cs,vb}]
#### Naming styles ####
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
# Naming styles
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
indent_size = 4
end_of_line = lf
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_style_namespace_match_folder = true:suggestion

29
.github/workflows/clang-format-check.yml

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
name: clang-format Check
on: [push, pull_request, workflow_dispatch]
# Cancel any previous workflows if the pull request was updated
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
jobs:
formatting-check:
name: Formatting Check
runs-on: ubuntu-latest
strategy:
matrix:
path:
- 'src'
- 'tests'
steps:
- uses: actions/checkout@v4
- name: Run clang-format style check for C/C++/Protobuf programs.
uses: jidicula/clang-format-action@v4.14.0
with:
clang-format-version: 19
check-path: ${{ matrix.path }}
exclude-regex: '(?:(?:Bindings|CLI)\/)|(?:CppParser\/(?:Parse)?(?:Expr|Stmt))'

4
.github/workflows/main.yml

@ -35,8 +35,6 @@ jobs: @@ -35,8 +35,6 @@ jobs:
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v11
@ -127,8 +125,6 @@ jobs: @@ -127,8 +125,6 @@ jobs:
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Set version
run: nbgv cloud --all-vars

97
RunClangFormat.sh

@ -0,0 +1,97 @@ @@ -0,0 +1,97 @@
#!/usr/bin/env bash
set -e
solution_dir=$(cd "$(dirname "$0")"; pwd)
FOLDERS="src tests"
ALLOWED_EXTENSIONS_RE=".*\.\(cpp\|hpp\|c\|h\|inl\)"
EXCLUSION_RE="\(Bindings\|CLI\)/\|\(CppParser/\(Parse\)?\(Expr\|Stmt\)\)"
CLANG_FORMAT_OPTIONS="--fallback-style=none -i --verbose"
clang_format=""
VS_INSTALL_DIR=""
format()
{
find_clang_format
DRY_RUN=0
# read -p "Dry run? (1/0): " DRY_RUN
if [ "$DRY_RUN" -eq 1 ]; then
CLANG_FORMAT_OPTIONS="$CLANG_FORMAT_OPTIONS --dry-run --Werror"
fi
# Format all files, in the specified list of directories
# Loop through each file in the directory (and subdirectories)
for p in $FOLDERS; do
echo "Formatting files in folder \"$p\"..."
cd "$solution_dir/$p"
file_list=$(find . -type f -regex $ALLOWED_EXTENSIONS_RE -and -not -regex ".*/\($EXCLUSION_RE\).*" -print)
"$clang_format" $CLANG_FORMAT_OPTIONS $file_list
cd ..
done
}
find_vswhere()
{
echo "Looking for 'vswhere'..."
VSWHERE_PATH="$(printenv 'ProgramFiles(x86)')/Microsoft Visual Studio/Installer/vswhere.exe"
if [ -x "$(command -v vswhere.exe)" ]; then
vswhere="vswhere.exe"
elif [ -f "$VSWHERE_PATH" ]; then
vswhere=$VSWHERE_PATH
else
echo -e "Could not locate vswhere.exe at:\n " $VSWHERE_PATH
read -n 1 -s -r -p "Press any key to continue, or Ctrl+C to exit" key
exit 1
fi
echo -e "Found 'vswhere.exe':\n @" $vswhere "\n"
}
find_visual_studio()
{
find_vswhere
echo "Looking for visual studio..."
# Find visual studio installation path
VS_INSTALL_DIR=$("$vswhere" -latest -property installationPath)
# Find visual studio installation path
if [ ! -d "$VS_INSTALL_DIR" ]; then
echo -e "Visual Studio Installation directory not found at vswhere specified path:\n " $VS_INSTALL_DIR
read -n 1 -s -r -p "Press any key to continue, or Ctrl+C to exit" key
exit 1
fi
echo -e "Found Visual Studio:\n @" $VS_INSTALL_DIR "\n"
}
find_clang_format()
{
echo "Looking for clang-format..."
find_visual_studio
CLANG_FORMAT_PATH="VC/Tools/Llvm/bin/clang-format.exe"
clang_format="$VS_INSTALL_DIR/$CLANG_FORMAT_PATH"
# Verify clang-format actually exists as well
if ! [ -f "$clang_format" ]; then
echo "clang-format.exe could not be located at: $clang_format"
read -n 1 -s -r -p "Press any key to continue, or Ctrl+C to exit" key
exit 1
fi
echo -e "Found clang-format.exe:\n" " Using" $("$clang_format" --version) "\n" " @" $clang_format "\n"
}
format
echo "Done!"
read -n 1 -s -r -p "Press any key to continue, or Ctrl+C to exit" key
exit 0
Loading…
Cancel
Save