gitlab-styles 9.2.0 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -3
- data/.gitlab/merge_request_templates/Release.md +18 -5
- data/.gitlab-ci.yml +17 -2
- data/.rubocop.yml +6 -1
- data/.rubocop_todo.yml +36 -0
- data/.tests_mapping.yml +10 -0
- data/Gemfile +0 -11
- data/Gemfile.lock +227 -0
- data/README.md +0 -1
- data/gitlab-styles.gemspec +15 -8
- data/lefthook.yml +11 -3
- data/lib/gitlab/styles/rubocop/migration_helpers.rb +1 -1
- data/lib/gitlab/styles/version.rb +1 -1
- data/lib/rubocop/cop/active_record_dependent.rb +0 -5
- data/lib/rubocop/cop/active_record_serialize.rb +0 -6
- data/lib/rubocop/cop/avoid_return_from_blocks.rb +4 -4
- data/lib/rubocop/cop/custom_error_class.rb +1 -1
- data/lib/rubocop/cop/gem_fetcher.rb +1 -1
- data/lib/rubocop/cop/gitlab_security/deep_munge.rb +36 -0
- data/lib/rubocop/cop/gitlab_security/json_serialization.rb +133 -0
- data/lib/rubocop/cop/gitlab_security/public_send.rb +47 -0
- data/lib/rubocop/cop/gitlab_security/redirect_to_params_update.rb +38 -0
- data/lib/rubocop/cop/gitlab_security/send_file_params.rb +40 -0
- data/lib/rubocop/cop/gitlab_security/sql_injection.rb +41 -0
- data/lib/rubocop/cop/gitlab_security/system_command_injection.rb +38 -0
- data/lib/rubocop/cop/in_batches.rb +0 -2
- data/lib/rubocop/cop/internal_affairs/missing_cop_department.rb +80 -0
- data/lib/rubocop/cop/internal_affairs/use_restrict_on_send.rb +99 -0
- data/lib/rubocop/cop/line_break_after_guard_clauses.rb +4 -6
- data/lib/rubocop/cop/line_break_around_conditional_block.rb +1 -1
- data/lib/rubocop/cop/migration/update_large_table.rb +1 -0
- data/lib/rubocop/cop/polymorphic_associations.rb +0 -5
- data/lib/rubocop/cop/rails/include_url_helper.rb +0 -2
- data/lib/rubocop/cop/redirect_with_status.rb +44 -30
- data/lib/rubocop/cop/rspec/empty_line_after_shared_example.rb +9 -2
- data/lib/rubocop/cop/rspec/example_starting_character.rb +1 -1
- data/lib/rubocop/cop/rspec/factory_bot/excessive_create_list.rb +52 -0
- data/lib/rubocop/cop/rspec/useless_dynamic_definition.rb +67 -0
- data/lib/rubocop/cop/rspec/verbose_include_metadata.rb +1 -1
- data/rubocop-capybara.yml +8 -0
- data/rubocop-default.yml +2 -4
- data/rubocop-gemspec.yml +6 -0
- data/rubocop-internal-affairs.yml +11 -0
- data/rubocop-layout.yml +2 -2
- data/rubocop-lint.yml +134 -5
- data/rubocop-naming.yml +5 -0
- data/rubocop-rails.yml +33 -1
- data/rubocop-rspec.yml +5 -5
- data/rubocop-security.yml +19 -1
- data/rubocop-style.yml +18 -3
- metadata +142 -29
- data/lib/gitlab/styles/rubocop/model_helpers.rb +0 -19
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0cd204f5572b14a03cd4f6faec35d9973f07dcab0579cf17ebb5fc10d56ac6b0
         | 
| 4 | 
            +
              data.tar.gz: 7a126190155bc1b39eea832c88e4636306f0fafb09f4b6c2c12c9fb275032a8c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ef80fd1223c28800de324bb2e71bc1c4e381137ddf7e4a4605e7d1e6e301cca3fc5cee69146a80fe23213a77c8c459d7037e305372242702d4cc8c9bb2b08c0b
         | 
| 7 | 
            +
              data.tar.gz: 4f60365ef4232d584eb8ec18f99f8ac5537bd4bf933777d5125c4fb2f71423e7c487dd61f18e9e4e40738c4d02949d9291d7fda7a66fa88442bcdeb8854621c0
         | 
    
        data/.gitignore
    CHANGED
    
    
| @@ -1,13 +1,26 @@ | |
| 1 | 
            -
            <!-- Replace `<PREVIOUS_VERSION>` with the previous version number | 
| 1 | 
            +
            <!-- Replace `<PREVIOUS_VERSION>` with the previous version number, `<COMMIT_UPDATING_VERSION>` with the latest
         | 
| 2 2 | 
             
            commit from this merge request, and `<NEW_VERSION>` with the upcoming version number. -->
         | 
| 3 3 | 
             
            ## Diff
         | 
| 4 4 |  | 
| 5 | 
            -
            https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles | 
| 5 | 
            +
            https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/compare/v<PREVIOUS_VERSION>...<COMMIT_UPDATING_VERSION>
         | 
| 6 6 |  | 
| 7 7 | 
             
            ## Checklist
         | 
| 8 8 |  | 
| 9 | 
            -
            - [ ]  | 
| 10 | 
            -
            - [ ]  | 
| 11 | 
            -
            - [ ]  | 
| 9 | 
            +
            - [ ] Change the `VERSION` constant to a minor version in  `lib/gitlab/styles/version.rb` (you might have to change the version number in the next steps according to [SemVer](https://semver.org)).
         | 
| 10 | 
            +
            - [ ] Ensure the diff link above is up-to-date.
         | 
| 11 | 
            +
            - [ ] Add release notes to the [Changelog](#changelog) section below.
         | 
| 12 | 
            +
            - [ ] Based on the diff and the release notes, update the `version.rb` according to [SemVer](https://semver.org).
         | 
| 13 | 
            +
            - [ ] Create an MR on `gitlab-org/gitlab` project [with the `New Version of gitlab-styles.md` template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/merge_request_templates/New%20Version%20of%20gitlab-styles.md) to test the new version of `gitlab-styles`, and follow the MR instructions.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ## Changelog
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            <!--
         | 
| 18 | 
            +
            Paste output of:
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            curl https://gitlab.com/api/v4/projects/4176070/repository/changelog?version=<NEW_VERSION> | jq -r ".notes"
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            NOTE: Skip `v` in `<NEW_VERSION>`. For example, Use `version=10.0.0` instead of `version=v10.0.0`.
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            -->
         | 
| 12 25 |  | 
| 13 26 | 
             
            /label ~"type::maintenance" ~"static code analysis"
         | 
    
        data/.gitlab-ci.yml
    CHANGED
    
    | @@ -10,6 +10,9 @@ default: | |
| 10 10 | 
             
                - bundle --version
         | 
| 11 11 | 
             
                - bundle install
         | 
| 12 12 |  | 
| 13 | 
            +
            variables:
         | 
| 14 | 
            +
              BUNDLE_FROZEN: 'true'
         | 
| 15 | 
            +
             | 
| 13 16 | 
             
            workflow:
         | 
| 14 17 | 
             
              rules:
         | 
| 15 18 | 
             
                # For merge requests, create a pipeline.
         | 
| @@ -25,15 +28,27 @@ styles: | |
| 25 28 | 
             
                - bundle exec rubocop --debug --parallel
         | 
| 26 29 | 
             
              parallel:
         | 
| 27 30 | 
             
                matrix:
         | 
| 28 | 
            -
                  - RUBY_VERSION: ['2.7', '3.0']
         | 
| 31 | 
            +
                  - RUBY_VERSION: ['2.7', '3.0', '3.1', '3.2']
         | 
| 29 32 |  | 
| 30 33 | 
             
            specs:
         | 
| 31 34 | 
             
              stage: test
         | 
| 32 35 | 
             
              script:
         | 
| 36 | 
            +
                # Disable simplecov for all Ruby version other than 3.0
         | 
| 37 | 
            +
                - if [[ "$RUBY_VERSION" != "3.0" ]]; then export SIMPLECOV=0; fi
         | 
| 33 38 | 
             
                - bundle exec rspec
         | 
| 34 39 | 
             
              parallel:
         | 
| 35 40 | 
             
                matrix:
         | 
| 36 | 
            -
                  - RUBY_VERSION: ['2.7', '3.0']
         | 
| 41 | 
            +
                  - RUBY_VERSION: ['2.7', '3.0', '3.1', '3.2']
         | 
| 42 | 
            +
              artifacts:
         | 
| 43 | 
            +
                name: coverage
         | 
| 44 | 
            +
                expire_in: 31d
         | 
| 45 | 
            +
                paths:
         | 
| 46 | 
            +
                  - coverage/index.html
         | 
| 47 | 
            +
                  - coverage/assets/
         | 
| 48 | 
            +
                reports:
         | 
| 49 | 
            +
                  coverage_report:
         | 
| 50 | 
            +
                    coverage_format: cobertura
         | 
| 51 | 
            +
                    path: coverage/coverage.xml
         | 
| 37 52 |  | 
| 38 53 | 
             
            include:
         | 
| 39 54 | 
             
              - project: 'gitlab-org/quality/pipeline-common'
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,12 +1,17 @@ | |
| 1 1 | 
             
            inherit_from:
         | 
| 2 2 | 
             
              - rubocop-default.yml
         | 
| 3 | 
            +
              - .rubocop_todo.yml
         | 
| 3 4 |  | 
| 4 5 | 
             
            require:
         | 
| 5 6 | 
             
              - rubocop/cop/internal_affairs
         | 
| 7 | 
            +
              - rubocop-rake
         | 
| 6 8 |  | 
| 7 9 | 
             
            AllCops:
         | 
| 8 10 | 
             
              NewCops: disable # https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/40
         | 
| 9 | 
            -
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            Gemspec/DevelopmentDependencies:
         | 
| 13 | 
            +
              EnforcedStyle: gemspec
         | 
| 14 | 
            +
              Enabled: true
         | 
| 10 15 |  | 
| 11 16 | 
             
            InternalAffairs/DeprecateCopHelper:
         | 
| 12 17 | 
             
              Enabled: true
         | 
    
        data/.rubocop_todo.yml
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # This configuration was generated by
         | 
| 2 | 
            +
            # `rubocop --auto-gen-config`
         | 
| 3 | 
            +
            # on 2023-06-05 10:15:47 UTC using RuboCop version 1.50.2.
         | 
| 4 | 
            +
            # The point is for the user to remove these configuration records
         | 
| 5 | 
            +
            # one by one as the offenses are removed from the code base.
         | 
| 6 | 
            +
            # Note that changes in the inspected code, or installation of new
         | 
| 7 | 
            +
            # versions of RuboCop, may require this file to be generated again.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # Offense count: 1
         | 
| 10 | 
            +
            InternalAffairs/InheritDeprecatedCopClass:
         | 
| 11 | 
            +
              Exclude:
         | 
| 12 | 
            +
                - 'lib/rubocop/cop/gitlab_security/json_serialization.rb'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            # Offense count: 11
         | 
| 15 | 
            +
            InternalAffairs/MissingCopDepartment:
         | 
| 16 | 
            +
              Exclude:
         | 
| 17 | 
            +
                - 'lib/rubocop/cop/active_record_dependent.rb'
         | 
| 18 | 
            +
                - 'lib/rubocop/cop/active_record_serialize.rb'
         | 
| 19 | 
            +
                - 'lib/rubocop/cop/avoid_return_from_blocks.rb'
         | 
| 20 | 
            +
                - 'lib/rubocop/cop/custom_error_class.rb'
         | 
| 21 | 
            +
                - 'lib/rubocop/cop/gem_fetcher.rb'
         | 
| 22 | 
            +
                - 'lib/rubocop/cop/in_batches.rb'
         | 
| 23 | 
            +
                - 'lib/rubocop/cop/line_break_after_guard_clauses.rb'
         | 
| 24 | 
            +
                - 'lib/rubocop/cop/line_break_around_conditional_block.rb'
         | 
| 25 | 
            +
                - 'lib/rubocop/cop/polymorphic_associations.rb'
         | 
| 26 | 
            +
                - 'lib/rubocop/cop/redirect_with_status.rb'
         | 
| 27 | 
            +
                - 'lib/rubocop/cop/without_reactive_cache.rb'
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            # Offense count: 5
         | 
| 30 | 
            +
            InternalAffairs/UseRestrictOnSend:
         | 
| 31 | 
            +
              Exclude:
         | 
| 32 | 
            +
                - 'lib/rubocop/cop/active_record_dependent.rb'
         | 
| 33 | 
            +
                - 'lib/rubocop/cop/active_record_serialize.rb'
         | 
| 34 | 
            +
                - 'lib/rubocop/cop/in_batches.rb'
         | 
| 35 | 
            +
                - 'lib/rubocop/cop/polymorphic_associations.rb'
         | 
| 36 | 
            +
                - 'lib/rubocop/cop/without_reactive_cache.rb'
         | 
    
        data/.tests_mapping.yml
    ADDED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -4,14 +4,3 @@ source 'https://rubygems.org' | |
| 4 4 |  | 
| 5 5 | 
             
            # Specify your gem's dependencies in gitlab-rubocop.gemspec
         | 
| 6 6 | 
             
            gemspec
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            group :development do
         | 
| 9 | 
            -
              gem "lefthook", require: false
         | 
| 10 | 
            -
            end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            group :test do
         | 
| 13 | 
            -
              # Pin these dependencies, otherwise a new rule could break the CI pipelines
         | 
| 14 | 
            -
              gem 'rubocop', '1.38.0'
         | 
| 15 | 
            -
              gem 'rubocop-rspec', '2.15.0'
         | 
| 16 | 
            -
              gem 'rspec-parameterized', '0.5.2', require: false
         | 
| 17 | 
            -
            end
         | 
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,227 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: .
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                gitlab-styles (10.1.0)
         | 
| 5 | 
            +
                  rubocop (~> 1.50.2)
         | 
| 6 | 
            +
                  rubocop-graphql (~> 0.18)
         | 
| 7 | 
            +
                  rubocop-performance (~> 1.15)
         | 
| 8 | 
            +
                  rubocop-rails (~> 2.17)
         | 
| 9 | 
            +
                  rubocop-rspec (~> 2.22)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            GEM
         | 
| 12 | 
            +
              remote: https://rubygems.org/
         | 
| 13 | 
            +
              specs:
         | 
| 14 | 
            +
                activesupport (7.0.4.3)
         | 
| 15 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 16 | 
            +
                  i18n (>= 1.6, < 2)
         | 
| 17 | 
            +
                  minitest (>= 5.1)
         | 
| 18 | 
            +
                  tzinfo (~> 2.0)
         | 
| 19 | 
            +
                addressable (2.8.4)
         | 
| 20 | 
            +
                  public_suffix (>= 2.0.2, < 6.0)
         | 
| 21 | 
            +
                ast (2.4.2)
         | 
| 22 | 
            +
                binding_of_caller (1.0.0)
         | 
| 23 | 
            +
                  debug_inspector (>= 0.0.1)
         | 
| 24 | 
            +
                byebug (11.1.3)
         | 
| 25 | 
            +
                claide (1.1.0)
         | 
| 26 | 
            +
                claide-plugins (0.9.2)
         | 
| 27 | 
            +
                  cork
         | 
| 28 | 
            +
                  nap
         | 
| 29 | 
            +
                  open4 (~> 1.3)
         | 
| 30 | 
            +
                coderay (1.1.3)
         | 
| 31 | 
            +
                colored2 (3.1.2)
         | 
| 32 | 
            +
                concurrent-ruby (1.2.2)
         | 
| 33 | 
            +
                cork (0.3.0)
         | 
| 34 | 
            +
                  colored2 (~> 3.1)
         | 
| 35 | 
            +
                danger (9.3.0)
         | 
| 36 | 
            +
                  claide (~> 1.0)
         | 
| 37 | 
            +
                  claide-plugins (>= 0.9.2)
         | 
| 38 | 
            +
                  colored2 (~> 3.1)
         | 
| 39 | 
            +
                  cork (~> 0.1)
         | 
| 40 | 
            +
                  faraday (>= 0.9.0, < 3.0)
         | 
| 41 | 
            +
                  faraday-http-cache (~> 2.0)
         | 
| 42 | 
            +
                  git (~> 1.13.0)
         | 
| 43 | 
            +
                  kramdown (~> 2.3)
         | 
| 44 | 
            +
                  kramdown-parser-gfm (~> 1.0)
         | 
| 45 | 
            +
                  no_proxy_fix
         | 
| 46 | 
            +
                  octokit (~> 5.0)
         | 
| 47 | 
            +
                  terminal-table (>= 1, < 4)
         | 
| 48 | 
            +
                danger-gitlab (8.0.0)
         | 
| 49 | 
            +
                  danger
         | 
| 50 | 
            +
                  gitlab (~> 4.2, >= 4.2.0)
         | 
| 51 | 
            +
                debug_inspector (1.1.0)
         | 
| 52 | 
            +
                diff-lcs (1.5.0)
         | 
| 53 | 
            +
                docile (1.4.0)
         | 
| 54 | 
            +
                faraday (1.10.3)
         | 
| 55 | 
            +
                  faraday-em_http (~> 1.0)
         | 
| 56 | 
            +
                  faraday-em_synchrony (~> 1.0)
         | 
| 57 | 
            +
                  faraday-excon (~> 1.1)
         | 
| 58 | 
            +
                  faraday-httpclient (~> 1.0)
         | 
| 59 | 
            +
                  faraday-multipart (~> 1.0)
         | 
| 60 | 
            +
                  faraday-net_http (~> 1.0)
         | 
| 61 | 
            +
                  faraday-net_http_persistent (~> 1.0)
         | 
| 62 | 
            +
                  faraday-patron (~> 1.0)
         | 
| 63 | 
            +
                  faraday-rack (~> 1.0)
         | 
| 64 | 
            +
                  faraday-retry (~> 1.0)
         | 
| 65 | 
            +
                  ruby2_keywords (>= 0.0.4)
         | 
| 66 | 
            +
                faraday-em_http (1.0.0)
         | 
| 67 | 
            +
                faraday-em_synchrony (1.0.0)
         | 
| 68 | 
            +
                faraday-excon (1.1.0)
         | 
| 69 | 
            +
                faraday-http-cache (2.5.0)
         | 
| 70 | 
            +
                  faraday (>= 0.8)
         | 
| 71 | 
            +
                faraday-httpclient (1.0.1)
         | 
| 72 | 
            +
                faraday-multipart (1.0.4)
         | 
| 73 | 
            +
                  multipart-post (~> 2)
         | 
| 74 | 
            +
                faraday-net_http (1.0.1)
         | 
| 75 | 
            +
                faraday-net_http_persistent (1.2.0)
         | 
| 76 | 
            +
                faraday-patron (1.0.0)
         | 
| 77 | 
            +
                faraday-rack (1.0.0)
         | 
| 78 | 
            +
                faraday-retry (1.0.3)
         | 
| 79 | 
            +
                git (1.13.2)
         | 
| 80 | 
            +
                  addressable (~> 2.8)
         | 
| 81 | 
            +
                  rchardet (~> 1.8)
         | 
| 82 | 
            +
                gitlab (4.19.0)
         | 
| 83 | 
            +
                  httparty (~> 0.20)
         | 
| 84 | 
            +
                  terminal-table (>= 1.5.1)
         | 
| 85 | 
            +
                gitlab-dangerfiles (3.6.7)
         | 
| 86 | 
            +
                  danger (>= 8.4.5)
         | 
| 87 | 
            +
                  danger-gitlab (>= 8.0.0)
         | 
| 88 | 
            +
                  rake
         | 
| 89 | 
            +
                httparty (0.21.0)
         | 
| 90 | 
            +
                  mini_mime (>= 1.0.0)
         | 
| 91 | 
            +
                  multi_xml (>= 0.5.2)
         | 
| 92 | 
            +
                i18n (1.13.0)
         | 
| 93 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 94 | 
            +
                json (2.6.3)
         | 
| 95 | 
            +
                kramdown (2.4.0)
         | 
| 96 | 
            +
                  rexml
         | 
| 97 | 
            +
                kramdown-parser-gfm (1.1.0)
         | 
| 98 | 
            +
                  kramdown (~> 2.0)
         | 
| 99 | 
            +
                lefthook (1.3.13)
         | 
| 100 | 
            +
                method_source (1.0.0)
         | 
| 101 | 
            +
                mini_mime (1.1.2)
         | 
| 102 | 
            +
                minitest (5.18.0)
         | 
| 103 | 
            +
                multi_xml (0.6.0)
         | 
| 104 | 
            +
                multipart-post (2.3.0)
         | 
| 105 | 
            +
                nap (1.1.0)
         | 
| 106 | 
            +
                no_proxy_fix (0.1.2)
         | 
| 107 | 
            +
                octokit (5.6.1)
         | 
| 108 | 
            +
                  faraday (>= 1, < 3)
         | 
| 109 | 
            +
                  sawyer (~> 0.9)
         | 
| 110 | 
            +
                open4 (1.3.4)
         | 
| 111 | 
            +
                parallel (1.23.0)
         | 
| 112 | 
            +
                parser (3.2.2.1)
         | 
| 113 | 
            +
                  ast (~> 2.4.1)
         | 
| 114 | 
            +
                proc_to_ast (0.1.0)
         | 
| 115 | 
            +
                  coderay
         | 
| 116 | 
            +
                  parser
         | 
| 117 | 
            +
                  unparser
         | 
| 118 | 
            +
                pry (0.14.2)
         | 
| 119 | 
            +
                  coderay (~> 1.1)
         | 
| 120 | 
            +
                  method_source (~> 1.0)
         | 
| 121 | 
            +
                pry-byebug (3.10.1)
         | 
| 122 | 
            +
                  byebug (~> 11.0)
         | 
| 123 | 
            +
                  pry (>= 0.13, < 0.15)
         | 
| 124 | 
            +
                public_suffix (5.0.1)
         | 
| 125 | 
            +
                rack (3.0.7)
         | 
| 126 | 
            +
                rainbow (3.1.1)
         | 
| 127 | 
            +
                rake (13.0.6)
         | 
| 128 | 
            +
                rchardet (1.8.0)
         | 
| 129 | 
            +
                regexp_parser (2.8.0)
         | 
| 130 | 
            +
                rexml (3.2.5)
         | 
| 131 | 
            +
                rspec (3.12.0)
         | 
| 132 | 
            +
                  rspec-core (~> 3.12.0)
         | 
| 133 | 
            +
                  rspec-expectations (~> 3.12.0)
         | 
| 134 | 
            +
                  rspec-mocks (~> 3.12.0)
         | 
| 135 | 
            +
                rspec-core (3.12.2)
         | 
| 136 | 
            +
                  rspec-support (~> 3.12.0)
         | 
| 137 | 
            +
                rspec-expectations (3.12.3)
         | 
| 138 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 139 | 
            +
                  rspec-support (~> 3.12.0)
         | 
| 140 | 
            +
                rspec-mocks (3.12.5)
         | 
| 141 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 142 | 
            +
                  rspec-support (~> 3.12.0)
         | 
| 143 | 
            +
                rspec-parameterized-core (1.0.0)
         | 
| 144 | 
            +
                  parser
         | 
| 145 | 
            +
                  proc_to_ast
         | 
| 146 | 
            +
                  rspec (>= 2.13, < 4)
         | 
| 147 | 
            +
                  unparser
         | 
| 148 | 
            +
                rspec-parameterized-table_syntax (1.0.0)
         | 
| 149 | 
            +
                  binding_of_caller
         | 
| 150 | 
            +
                  rspec-parameterized-core (< 2)
         | 
| 151 | 
            +
                rspec-support (3.12.0)
         | 
| 152 | 
            +
                rubocop (1.50.2)
         | 
| 153 | 
            +
                  json (~> 2.3)
         | 
| 154 | 
            +
                  parallel (~> 1.10)
         | 
| 155 | 
            +
                  parser (>= 3.2.0.0)
         | 
| 156 | 
            +
                  rainbow (>= 2.2.2, < 4.0)
         | 
| 157 | 
            +
                  regexp_parser (>= 1.8, < 3.0)
         | 
| 158 | 
            +
                  rexml (>= 3.2.5, < 4.0)
         | 
| 159 | 
            +
                  rubocop-ast (>= 1.28.0, < 2.0)
         | 
| 160 | 
            +
                  ruby-progressbar (~> 1.7)
         | 
| 161 | 
            +
                  unicode-display_width (>= 2.4.0, < 3.0)
         | 
| 162 | 
            +
                rubocop-ast (1.28.1)
         | 
| 163 | 
            +
                  parser (>= 3.2.1.0)
         | 
| 164 | 
            +
                rubocop-capybara (2.18.0)
         | 
| 165 | 
            +
                  rubocop (~> 1.41)
         | 
| 166 | 
            +
                rubocop-factory_bot (2.23.0)
         | 
| 167 | 
            +
                  rubocop (~> 1.33)
         | 
| 168 | 
            +
                rubocop-graphql (0.19.0)
         | 
| 169 | 
            +
                  rubocop (>= 0.87, < 2)
         | 
| 170 | 
            +
                rubocop-performance (1.17.1)
         | 
| 171 | 
            +
                  rubocop (>= 1.7.0, < 2.0)
         | 
| 172 | 
            +
                  rubocop-ast (>= 0.4.0)
         | 
| 173 | 
            +
                rubocop-rails (2.19.1)
         | 
| 174 | 
            +
                  activesupport (>= 4.2.0)
         | 
| 175 | 
            +
                  rack (>= 1.1)
         | 
| 176 | 
            +
                  rubocop (>= 1.33.0, < 2.0)
         | 
| 177 | 
            +
                rubocop-rake (0.6.0)
         | 
| 178 | 
            +
                  rubocop (~> 1.0)
         | 
| 179 | 
            +
                rubocop-rspec (2.22.0)
         | 
| 180 | 
            +
                  rubocop (~> 1.33)
         | 
| 181 | 
            +
                  rubocop-capybara (~> 2.17)
         | 
| 182 | 
            +
                  rubocop-factory_bot (~> 2.22)
         | 
| 183 | 
            +
                ruby-progressbar (1.13.0)
         | 
| 184 | 
            +
                ruby2_keywords (0.0.5)
         | 
| 185 | 
            +
                sawyer (0.9.2)
         | 
| 186 | 
            +
                  addressable (>= 2.3.5)
         | 
| 187 | 
            +
                  faraday (>= 0.17.3, < 3)
         | 
| 188 | 
            +
                simplecov (0.22.0)
         | 
| 189 | 
            +
                  docile (~> 1.1)
         | 
| 190 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 191 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 192 | 
            +
                simplecov-cobertura (2.1.0)
         | 
| 193 | 
            +
                  rexml
         | 
| 194 | 
            +
                  simplecov (~> 0.19)
         | 
| 195 | 
            +
                simplecov-html (0.12.3)
         | 
| 196 | 
            +
                simplecov_json_formatter (0.1.4)
         | 
| 197 | 
            +
                terminal-table (3.0.2)
         | 
| 198 | 
            +
                  unicode-display_width (>= 1.1.1, < 3)
         | 
| 199 | 
            +
                test_file_finder (0.1.4)
         | 
| 200 | 
            +
                  faraday (~> 1.0)
         | 
| 201 | 
            +
                tzinfo (2.0.6)
         | 
| 202 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 203 | 
            +
                unicode-display_width (2.4.2)
         | 
| 204 | 
            +
                unparser (0.6.7)
         | 
| 205 | 
            +
                  diff-lcs (~> 1.3)
         | 
| 206 | 
            +
                  parser (>= 3.2.0)
         | 
| 207 | 
            +
             | 
| 208 | 
            +
            PLATFORMS
         | 
| 209 | 
            +
              ruby
         | 
| 210 | 
            +
             | 
| 211 | 
            +
            DEPENDENCIES
         | 
| 212 | 
            +
              bundler (~> 2.1)
         | 
| 213 | 
            +
              gitlab-dangerfiles (~> 3.6.7)
         | 
| 214 | 
            +
              gitlab-styles!
         | 
| 215 | 
            +
              lefthook (~> 1.3.13)
         | 
| 216 | 
            +
              pry-byebug (~> 3.10)
         | 
| 217 | 
            +
              rake (~> 13.0)
         | 
| 218 | 
            +
              rspec (~> 3.0)
         | 
| 219 | 
            +
              rspec-parameterized-table_syntax (~> 1.0.0)
         | 
| 220 | 
            +
              rubocop-rake (~> 0.6)
         | 
| 221 | 
            +
              simplecov (~> 0.22.0)
         | 
| 222 | 
            +
              simplecov-cobertura (~> 2.1.0)
         | 
| 223 | 
            +
              simplecov-html (~> 0.12.3)
         | 
| 224 | 
            +
              test_file_finder (~> 0.1.4)
         | 
| 225 | 
            +
             | 
| 226 | 
            +
            BUNDLED WITH
         | 
| 227 | 
            +
               2.4.13
         | 
    
        data/README.md
    CHANGED
    
    | @@ -91,7 +91,6 @@ To release a new version: | |
| 91 91 | 
             
            1. Create a Merge Request.
         | 
| 92 92 | 
             
            1. Use Merge Request template [Release.md](https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/blob/master/.gitlab/merge_request_templates/Release.md).
         | 
| 93 93 | 
             
            1. Follow the instructions.
         | 
| 94 | 
            -
            1. (Optional, but appreciated) Create an MR on `gitlab-org/gitlab` project [with the `New Version of gitlab-styles.md` template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/merge_request_templates/New%20Version%20of%20gitlab-styles.md) to test the new version of `gitlab-styles`, and follow the MR instructions.
         | 
| 95 94 | 
             
            1. After the Merge Request has been merged, a new gem version is [published automatically](https://gitlab.com/gitlab-org/quality/pipeline-common/-/blob/master/ci/gem-release.yml)
         | 
| 96 95 |  | 
| 97 96 | 
             
            See [!123](https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/123) as an example.
         | 
    
        data/gitlab-styles.gemspec
    CHANGED
    
    | @@ -22,15 +22,22 @@ Gem::Specification.new do |spec| | |
| 22 22 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 23 23 | 
             
              spec.require_paths = ['lib']
         | 
| 24 24 |  | 
| 25 | 
            -
              spec.add_dependency 'rubocop', '~> 1. | 
| 26 | 
            -
              spec.add_dependency 'rubocop- | 
| 27 | 
            -
              spec.add_dependency 'rubocop- | 
| 28 | 
            -
              spec.add_dependency 'rubocop- | 
| 29 | 
            -
              spec.add_dependency 'rubocop- | 
| 30 | 
            -
              spec.add_dependency 'rubocop-rspec', '~> 2.15'
         | 
| 25 | 
            +
              spec.add_dependency 'rubocop', '~> 1.50.2'
         | 
| 26 | 
            +
              spec.add_dependency 'rubocop-graphql', '~> 0.18'
         | 
| 27 | 
            +
              spec.add_dependency 'rubocop-performance', '~> 1.15'
         | 
| 28 | 
            +
              spec.add_dependency 'rubocop-rails', '~> 2.17'
         | 
| 29 | 
            +
              spec.add_dependency 'rubocop-rspec', '~> 2.22'
         | 
| 31 30 |  | 
| 32 31 | 
             
              spec.add_development_dependency 'bundler', '~> 2.1'
         | 
| 33 | 
            -
              spec.add_development_dependency 'gitlab-dangerfiles', '~>  | 
| 34 | 
            -
              spec.add_development_dependency ' | 
| 32 | 
            +
              spec.add_development_dependency 'gitlab-dangerfiles', '~> 3.6.7'
         | 
| 33 | 
            +
              spec.add_development_dependency 'lefthook', '~> 1.3.13'
         | 
| 34 | 
            +
              spec.add_development_dependency 'pry-byebug', '~> 3.10'
         | 
| 35 | 
            +
              spec.add_development_dependency 'rake', '~> 13.0'
         | 
| 35 36 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 37 | 
            +
              spec.add_development_dependency 'rspec-parameterized-table_syntax', '~> 1.0.0'
         | 
| 38 | 
            +
              spec.add_development_dependency 'rubocop-rake', '~> 0.6'
         | 
| 39 | 
            +
              spec.add_development_dependency 'simplecov', '~> 0.22.0'
         | 
| 40 | 
            +
              spec.add_development_dependency 'simplecov-cobertura', '~> 2.1.0'
         | 
| 41 | 
            +
              spec.add_development_dependency 'simplecov-html', '~> 0.12.3'
         | 
| 42 | 
            +
              spec.add_development_dependency 'test_file_finder', '~> 0.1.4'
         | 
| 36 43 | 
             
            end
         | 
    
        data/lefthook.yml
    CHANGED
    
    | @@ -10,7 +10,15 @@ pre-push: | |
| 10 10 | 
             
                  glob: '*.{rb,rake}'
         | 
| 11 11 | 
             
                  run: bundle exec rubocop --parallel --force-exclusion {files}
         | 
| 12 12 |  | 
| 13 | 
            -
                # Run  | 
| 13 | 
            +
                # Run only relevant specs.
         | 
| 14 14 | 
             
                rspec:
         | 
| 15 | 
            -
                   | 
| 16 | 
            -
                   | 
| 15 | 
            +
                  files: git diff --name-only --diff-filter=d $(git merge-base origin/master HEAD)..HEAD
         | 
| 16 | 
            +
                  run: |
         | 
| 17 | 
            +
                    tests=$(tff --mapping-file .tests_mapping.yml {files})
         | 
| 18 | 
            +
                    if [ "$tests" != "" ]; then
         | 
| 19 | 
            +
                      echo "bundle exec rspec --format progress $tests"
         | 
| 20 | 
            +
                      bundle exec rspec --format progress $tests
         | 
| 21 | 
            +
                    else
         | 
| 22 | 
            +
                      echo "No specs to run."
         | 
| 23 | 
            +
                      exit 0
         | 
| 24 | 
            +
                    fi
         | 
| @@ -7,7 +7,7 @@ module Gitlab | |
| 7 7 | 
             
                  module MigrationHelpers
         | 
| 8 8 | 
             
                    # Returns true if the given node originated from the db/migrate directory.
         | 
| 9 9 | 
             
                    def in_migration?(node)
         | 
| 10 | 
            -
                      dirname = File.dirname(node. | 
| 10 | 
            +
                      dirname = File.dirname(node.source_range.source_buffer.name)
         | 
| 11 11 |  | 
| 12 12 | 
             
                      dirname.end_with?(
         | 
| 13 13 | 
             
                        'db/migrate',
         | 
| @@ -1,13 +1,9 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative '../../gitlab/styles/rubocop/model_helpers'
         | 
| 4 | 
            -
             | 
| 5 3 | 
             
            module Rubocop
         | 
| 6 4 | 
             
              module Cop
         | 
| 7 5 | 
             
                # Cop that prevents the use of `dependent: ...` in ActiveRecord models.
         | 
| 8 6 | 
             
                class ActiveRecordDependent < RuboCop::Cop::Base
         | 
| 9 | 
            -
                  include Gitlab::Styles::Rubocop::ModelHelpers
         | 
| 10 | 
            -
             | 
| 11 7 | 
             
                  MSG = 'Do not use `dependent:` to remove associated data, ' \
         | 
| 12 8 | 
             
                        'use foreign keys with cascading deletes instead.'
         | 
| 13 9 |  | 
| @@ -15,7 +11,6 @@ module Rubocop | |
| 15 11 | 
             
                  ALLOWED_OPTIONS = [:restrict_with_error].freeze
         | 
| 16 12 |  | 
| 17 13 | 
             
                  def on_send(node)
         | 
| 18 | 
            -
                    return unless in_model?(node)
         | 
| 19 14 | 
             
                    return unless METHOD_NAMES.include?(node.children[1])
         | 
| 20 15 |  | 
| 21 16 | 
             
                    node.children.last.each_node(:pair) do |pair|
         | 
| @@ -1,18 +1,12 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative '../../gitlab/styles/rubocop/model_helpers'
         | 
| 4 | 
            -
             | 
| 5 3 | 
             
            module Rubocop
         | 
| 6 4 | 
             
              module Cop
         | 
| 7 5 | 
             
                # Cop that prevents the use of `serialize` in ActiveRecord models.
         | 
| 8 6 | 
             
                class ActiveRecordSerialize < RuboCop::Cop::Base
         | 
| 9 | 
            -
                  include Gitlab::Styles::Rubocop::ModelHelpers
         | 
| 10 | 
            -
             | 
| 11 7 | 
             
                  MSG = 'Do not store serialized data in the database, use separate columns and/or tables instead'
         | 
| 12 8 |  | 
| 13 9 | 
             
                  def on_send(node)
         | 
| 14 | 
            -
                    return unless in_model?(node)
         | 
| 15 | 
            -
             | 
| 16 10 | 
             
                    add_offense(node.loc.selector) if node.children[1] == :serialize
         | 
| 17 11 | 
             
                  end
         | 
| 18 12 | 
             
                end
         | 
| @@ -23,7 +23,7 @@ module Rubocop | |
| 23 23 | 
             
                class AvoidReturnFromBlocks < RuboCop::Cop::Base
         | 
| 24 24 | 
             
                  MSG = 'Do not return from a block, use next or break instead.'
         | 
| 25 25 | 
             
                  DEF_METHODS = %i[define_method lambda].freeze
         | 
| 26 | 
            -
                   | 
| 26 | 
            +
                  ALLOWED_METHODS = %i[each each_filename times loop].freeze
         | 
| 27 27 |  | 
| 28 28 | 
             
                  def on_block(node)
         | 
| 29 29 | 
             
                    block_body = node.body
         | 
| @@ -32,7 +32,7 @@ module Rubocop | |
| 32 32 | 
             
                    return unless top_block?(node)
         | 
| 33 33 |  | 
| 34 34 | 
             
                    block_body.each_node(:return) do |return_node|
         | 
| 35 | 
            -
                      next if parent_blocks(node, return_node).all? { |block|  | 
| 35 | 
            +
                      next if parent_blocks(node, return_node).all? { |block| allowed?(block) }
         | 
| 36 36 |  | 
| 37 37 | 
             
                      add_offense(return_node)
         | 
| 38 38 | 
             
                    end
         | 
| @@ -71,8 +71,8 @@ module Rubocop | |
| 71 71 | 
             
                      (node.block_type? && DEF_METHODS.include?(node.method_name))
         | 
| 72 72 | 
             
                  end
         | 
| 73 73 |  | 
| 74 | 
            -
                  def  | 
| 75 | 
            -
                     | 
| 74 | 
            +
                  def allowed?(block_node)
         | 
| 75 | 
            +
                    ALLOWED_METHODS.include?(block_node.method_name)
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 | 
             
                end
         | 
| 78 78 | 
             
              end
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RuboCop
         | 
| 4 | 
            +
              module Cop
         | 
| 5 | 
            +
                module GitlabSecurity
         | 
| 6 | 
            +
                  # Checks for disabling the deep munge security control.
         | 
| 7 | 
            +
                  #
         | 
| 8 | 
            +
                  # Disabling this security setting can leave the application open to unsafe
         | 
| 9 | 
            +
                  # query generation
         | 
| 10 | 
            +
                  #
         | 
| 11 | 
            +
                  # @example
         | 
| 12 | 
            +
                  #
         | 
| 13 | 
            +
                  #   # bad
         | 
| 14 | 
            +
                  #   config.action_dispatch.perform_deep_munge = false
         | 
| 15 | 
            +
                  #
         | 
| 16 | 
            +
                  # See CVE-2012-2660, CVE-2012-2694, and CVE-2013-0155.
         | 
| 17 | 
            +
                  class DeepMunge < RuboCop::Cop::Base
         | 
| 18 | 
            +
                    MSG = 'Never disable the deep munge security option.'
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    # @!method disable_deep_munge?(node)
         | 
| 21 | 
            +
                    def_node_matcher :disable_deep_munge?, <<-PATTERN
         | 
| 22 | 
            +
                      (send
         | 
| 23 | 
            +
                        (send (send nil? :config) :action_dispatch) :perform_deep_munge=
         | 
| 24 | 
            +
                          { (false) (send true :!) }
         | 
| 25 | 
            +
                      )
         | 
| 26 | 
            +
                    PATTERN
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    def on_send(node)
         | 
| 29 | 
            +
                      return unless disable_deep_munge?(node)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                      add_offense(node.loc.selector)
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         |