Skip to content

Style/BlockDelimiters: Flag `it {` in multi-line use

What does this MR do and why?

By default, the following use of it in multi-line was allowed:

  it {
    ...
  }

  it("works") {
    ...
  }

This does not align well with other methods like specify where the following use is flagged:

  specify {
    ...
  }

With this MRs we now also flag multi-line it { for consistency reasons.

Examples

# bad

it {
  multi
    .line
    .code
}

# good

it do
  multi
    .line
    .code
end

# also/still good

proc {
  multi
    .line
    .code
}

lambda {
  multi
    .line
    .code
}

Offenses in gitlab-org/gitlab

32005 files inspected, 91 offenses detected, 91 offenses autocorrectable

Offenses
Offenses:

ee/spec/finders/security/related_pipelines_finder_spec.rb:52:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/finders/security/scan_result_policies/findings_finder_spec.rb:62:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/finders/security/scan_result_policies/findings_finder_spec.rb:80:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/helpers/compliance_management/compliance_framework/group_settings_helper_spec.rb:60:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/helpers/ee/labels_helper_spec.rb:106:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/helpers/ee/labels_helper_spec.rb:119:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb:29:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb:48:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb:33:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb:53:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb:99:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb:125:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb:143:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb:15:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb:54:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/lib/gitlab/package_metadata/connector/base_data_file_spec.rb:70:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/lib/gitlab/package_metadata/connector/base_data_file_spec.rb:86:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb:48:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb:66:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb:89:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb:106:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb:123:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/lib/gitlab/package_metadata/connector/offline_spec.rb:29:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/lib/gitlab/package_metadata/connector/offline_spec.rb:42:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/lib/gitlab/package_metadata/connector/offline_spec.rb:54:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/lib/gitlab/package_metadata/connector/offline_spec.rb:66:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/models/audit_events/streaming/instance_event_type_filter_spec.rb:17:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/ee/design_management/repository_spec.rb:9:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/ee/projects/wiki_repository_spec.rb:7:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/geo/design_management_repository_state_spec.rb:8:6: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
  it {
     ^
ee/spec/models/geo/wiki_repository_state_spec.rb:9:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/namespace_setting_spec.rb:15:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/namespace_setting_spec.rb:22:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/protected_environments/deploy_access_level_spec.rb:6:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/security/finding_spec.rb:21:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/security/finding_spec.rb:246:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/models/vulnerabilities/feedback_spec.rb:6:6: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
  it {
     ^
ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb:206:14: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
          it {
             ^
ee/spec/services/package_metadata/compressed_package_data_object_spec.rb:19:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/services/package_metadata/data_object_fabricator_spec.rb:19:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/services/package_metadata/data_object_fabricator_spec.rb:44:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
ee/spec/services/security/scanned_resources_counting_service_spec.rb:26:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/services/security/scanned_resources_counting_service_spec.rb:37:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/services/security/scanned_resources_counting_service_spec.rb:48:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/services/security/scanned_resources_service_spec.rb:56:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/services/security/scanned_resources_service_spec.rb:66:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
ee/spec/services/security/vulnerability_counting_service_spec.rb:65:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/services/security/vulnerability_counting_service_spec.rb:76:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
ee/spec/services/security/vulnerability_counting_service_spec.rb:87:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/helpers/abuse_reports_helper_spec.rb:9:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/helpers/admin/user_actions_helper_spec.rb:72:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/helpers/merge_requests_helper_spec.rb:87:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/helpers/projects/cluster_agents_helper_spec.rb:28:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/build/rules_spec.rb:190:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/lib/gitlab/ci/build/rules_spec.rb:207:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/lib/gitlab/ci/build/rules_spec.rb:222:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/lib/gitlab/ci/build/rules_spec.rb:237:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/lib/gitlab/ci/build/rules_spec.rb:259:16: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
            it {
               ^
spec/lib/gitlab/ci/build/rules_spec.rb:271:16: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
            it {
               ^
spec/lib/gitlab/ci/build/rules_spec.rb:279:16: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
            it {
               ^
spec/lib/gitlab/ci/build/rules_spec.rb:294:16: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
            it {
               ^
spec/lib/gitlab/ci/config/external/file/artifact_spec.rb:204:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/config/external/file/artifact_spec.rb:221:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/lib/gitlab/ci/config/external/file/base_spec.rb:210:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/config/external/file/local_spec.rb:266:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/config/external/file/project_spec.rb:250:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/config/external/file/project_spec.rb:279:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/lib/gitlab/ci/config/external/file/remote_spec.rb:223:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/ci/config/external/file/template_spec.rb:121:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/data_builder/build_spec.rb:39:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb:73:83: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it("wraps in a Gitlab::Git::ResourceExhaustedError with default message") {
                                                                                  ^
spec/lib/gitlab/regex_spec.rb:80:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/gitlab/regex_spec.rb:122:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/lib/release_highlights/validator/entry_spec.rb:36:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/models/abuse_report_spec.rb:67:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/models/abuse_report_spec.rb:73:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/models/abuse_report_spec.rb:96:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/models/ci/group_variable_spec.rb:63:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/models/ci/group_variable_spec.rb:68:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/models/environment_status_spec.rb:40:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/models/hooks/web_hook_spec.rb:134:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/models/hooks/web_hook_spec.rb:150:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/models/hooks/web_hook_spec.rb:159:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/models/hooks/web_hook_spec.rb:184:12: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
        it {
           ^
spec/models/incident_management/timeline_event_tag_spec.rb:10:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/models/users/in_product_marketing_email_spec.rb:22:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/models/users/in_product_marketing_email_spec.rb:35:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/models/users/phone_number_validation_spec.rb:14:6: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
  it {
     ^
spec/models/users/project_callout_spec.rb:20:8: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
    it {
       ^
spec/presenters/tree_entry_presenter_spec.rb:31:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^
spec/requests/jira_connect/subscriptions_controller_spec.rb:37:10: C: [Correctable] Style/BlockDelimiters: Avoid using {...} for multi-line blocks.
      it {
         ^

32005 files inspected, 91 offenses detected, 91 offenses autocorrectable

Prior discussion

Scope this MR

We still allow proc and lambda to use { in multi-line blocks but this could be changed later if we wanted to.

The main reason it's not changed yet is iteration and the fact that 👮 Style/Lambda is configured to use EnforcedStyle: literal which allows the use of proc {/lambda { now.

Edited by Peter Leitzen

Merge request reports