diff --git a/.EditorConfig b/.EditorConfig new file mode 100644 index 000000000..61ab3ee2c --- /dev/null +++ b/.EditorConfig @@ -0,0 +1,61 @@ +root = true +# All files +[*.*] +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 +max_line_length=150 + +# Interfaces should start with I and PascalCase +dotnet_naming_rule.interfaces_begin_with_I.severity = warning +dotnet_naming_rule.interfaces_begin_with_I.symbols = interfaces +dotnet_naming_rule.interfaces_begin_with_I.style = prefix_and_pascal_case +dotnet_naming_rule.interfaces_begin_with_I.required_prefix = I +dotnet_naming_symbols.interfaces.applicable_kinds = interface +dotnet_diagnostic.interfaces_begin_with_I.severity = warning +dotnet_diagnostic.interfaces_begin_with_I.enabled = true + +# Static fields should start with _s +dotnet_naming_rule.static_fields_begin_with_s.severity = warning +dotnet_naming_rule.static_fields_begin_with_s.symbols = static_fields +dotnet_naming_rule.static_fields_begin_with_s.style = custom +dotnet_naming_rule.static_fields_begin_with_s.custom_recommended_prefix = _r +dotnet_naming_rule.static_fields_begin_with_s.required_prefix = _r +dotnet_naming_rule.static_fields_begin_with_s.capitalization = camel_case +dotnet_naming_symbols.static_fields.applicable_kinds = field +dotnet_naming_symbols.static_fields.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.static_fields.required_modifiers = static +dotnet_diagnostic.static_fields_begin_with_s.severity = warning +dotnet_diagnostic.static_fields_begin_with_s.enabled = true + +# Enforce use of Pascal case in enums, classes, const and methods +dotnet_naming_rule.enforce_pascal_case.severity = suggestion +dotnet_naming_rule.enforce_pascal_case.symbols = methods, enums, consts, public_methods, public_classes +dotnet_naming_rule.enforce_pascal_case.style = pascal_case +dotnet_naming_symbols.methods.applicable_kinds = method +dotnet_naming_symbols.enums.applicable_kinds = enum +dotnet_naming_symbols.consts.applicable_kinds = field +dotnet_naming_symbols.consts.applicable_modifiers = const +dotnet_naming_symbols.public_methods.applicable_kinds = method +dotnet_naming_symbols.public_methods.applicable_accessibilities = public +dotnet_naming_symbols.public_classes.applicable_kinds = class +dotnet_naming_symbols.public_classes.applicable_accessibilities = public +dotnet_diagnostic.enforce_pascal_case.severity = suggestion +dotnet_diagnostic.enforce_pascal_case.enabled = true + +# private and internal members should start with underscore +dotnet_naming_rule.private_and_internal_members_start_with_underscore.severity = warning +dotnet_naming_rule.private_and_internal_members_start_with_underscore.symbols = private_fields, internal_fields, private_properties, internal_properties, private_methods, internal_methods +dotnet_naming_rule.private_and_internal_members_start_with_underscore.style = underscore_prefix +dotnet_naming_symbols.private_fields.applicable_kinds = field +dotnet_naming_symbols.internal_fields.applicable_kinds = field +dotnet_naming_symbols.private_properties.applicable_kinds = property +dotnet_naming_symbols.internal_properties.applicable_kinds = property +dotnet_naming_symbols.private_methods.applicable_kinds = method +dotnet_naming_symbols.internal_methods.applicable_kinds = method +dotnet_naming_symbols.private_methods.applicable_accessibilities = private +dotnet_naming_symbols.internal_methods.applicable_accessibilities = internal +dotnet_diagnostic.private_and_internal_members_start_with_underscore.severity = warning +dotnet_diagnostic.private_and_internal_members_start_with_underscore.enabled = true diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 000000000..dc328598f --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,43 @@ +name: Code standards check + +# Triggers the workflow on pull request events but only for the master branch +on: + pull_request: + branches: [ master ] + workflow_dispatch: + inputs: + logLevel: + default: warning + description: "Log level" + required: true + tags: + description: "Linter" + required: false + +concurrency: + # older builds for the same pull request number or branch should be cancelled + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + DOTNET_VERSION: 6.0 + DOTNET_LEGACY_VERSION: 4.7.1 + +jobs: + run-linter: + name: Run linter + runs-on: windows-latest + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + - name: Set up .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: "6.0.x" + dotnet-quality: 'ga' + - name: Run linters + uses: wearerequired/lint-action@v2 + with: + dotnet_format: true + continue_on_error: true + check_name: ${linter} run diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 86da91f0e..d0bd7c6bd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,7 +37,8 @@ jobs: dotnet: ['net6.0', 'net472', 'net471'] cloud_env: ['AZURE', 'GCP', 'AWS'] steps: - - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@v3 - name: Setup Dotnet uses: actions/setup-dotnet@v3 with: diff --git a/.gitignore b/.gitignore index 325ad49d6..268c8f4dc 100644 --- a/.gitignore +++ b/.gitignore @@ -309,3 +309,6 @@ whitesource/ Snowflake.Data.Tests/macos_*_performance.csv Snowflake.Data.Tests/windows_*_performance.csv Snowflake.Data.Tests/unix_*_performance.csv + +# Ignore Mac files +**/.DS_Store \ No newline at end of file