diff --git a/.github/workflows/ruby-linters.yml b/.github/workflows/ruby-linters.yml new file mode 100644 index 0000000..2a557e5 --- /dev/null +++ b/.github/workflows/ruby-linters.yml @@ -0,0 +1,43 @@ +# This workflow runs Rubocop on the Pull Requests to make sure no linter warnings slip by. + +name: Ruby Linters + +on: + pull_request: + branches: [ "master" ] + +permissions: + contents: read + +jobs: + lint: + + runs-on: ubuntu-latest + strategy: + matrix: + ruby-version: ['2.7'] + + env: + BUNDLE_GEMFILE: Gemfile.lint + + steps: + - uses: actions/checkout@v4 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + - name: Install Gems + run: | + bundler install + - name: Run Rubocop + uses: reviewdog/action-rubocop@v2.19.1 + with: + skip_install: true + rubocop_version: gemfile + rubocop_extensions: rubocop-rspec:gemfile + use_bundler: true + - name: reek + uses: reviewdog/action-reek@v1 + with: + reek_version: gemfile + fail_on_error: true diff --git a/.rubocop.yml b/.rubocop.yml index c59b9e2..1111317 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,6 @@ AllCops: Exclude: + - vendor/**/* - spec/spec_helper.rb Metrics/BlockLength: Exclude: diff --git a/Gemfile.lint b/Gemfile.lint new file mode 100644 index 0000000..c60926b --- /dev/null +++ b/Gemfile.lint @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source 'https://rubygems.org' + +gem 'rubocop', '~> 1' +gem 'rubocop-rspec', '~> 3' +gem 'reek', '~> 6' diff --git a/lib/something.rb b/lib/something.rb new file mode 100644 index 0000000..2a7321e --- /dev/null +++ b/lib/something.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +# Class to test the linters +class MyClass + # rubocop:disable Metrics/ParameterLists + # rubocop:disable Metrics/PerceivedComplexity + # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/CyclomaticComplexity + # rubocop:disable Metrics/AbcSize + def do_something(one, two, three, four, five, six, seven) + if one.present? && two.present? && three.prsent? && four.present? && five.present? && six.present? && seven.present? + do_something_else_with(one, two, three) + doAnotherThing(four, five, six) + + e = mix(one, two) + + if @valid == TRUE + case five + when 'async' + do_another_thing_with('r', six, seven) + when 'sync' + do_another_thing_with('m', seven, e) + when 'nible' + result = four.map(&:name) + end + end + + five.each do |n| + n += 1 + puts "N is now #{n}" + + if seven.start_with?('r') + download(seven) + upload(siv, seven) if six.start_wuth?('w') + end + end + end + + result + end + # rubocop:enable Metrics/ParameterLists + # rubocop:enable Metrics/PerceivedComplexity + # rubocop:enable Metrics/MethodLength + # rubocop:enable Metrics/CyclomaticComplexity + # rubocop:enable Metrics/AbcSize + + def do_something_else_with(one, two, three) + return unless one == true + + puts 'Print something here:' + puts "#{two} - #{three}" + + @valid = TRUE + end +end