Skip to content

Commit

Permalink
[ELITERT-1198] Add action to run Ruby linters
Browse files Browse the repository at this point in the history
The action runs Rubocop on Pull Requests.
  • Loading branch information
Sergio Bobillier committed Oct 31, 2024
1 parent 7f5b7ab commit c2ebbf7
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/ruby-linters.yml
Original file line number Diff line number Diff line change
@@ -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/[email protected]
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
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
AllCops:
Exclude:
- vendor/**/*
- spec/spec_helper.rb
Metrics/BlockLength:
Exclude:
Expand Down
7 changes: 7 additions & 0 deletions Gemfile.lint
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'rubocop', '~> 1'
gem 'rubocop-rspec', '~> 3'
gem 'reek', '~> 6'
55 changes: 55 additions & 0 deletions lib/something.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# frozen_string_literal: true

# Class to test the linters
class MyClass

Check failure on line 4 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[reek] reported by reviewdog 🐶 InstanceVariableAssumption: MyClass assumes too much for instance variable '@Valid' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md] Raw Output: lib/something.rb:4: InstanceVariableAssumption: MyClass assumes too much for instance variable '@Valid' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md]
# 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)

Check failure on line 10 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[reek] reported by reviewdog 🐶 LongParameterList: MyClass#do_something has 7 parameters [https://github.com/troessner/reek/blob/v6.1.4/docs/Long-Parameter-List.md] Raw Output: lib/something.rb:10: LongParameterList: MyClass#do_something has 7 parameters [https://github.com/troessner/reek/blob/v6.1.4/docs/Long-Parameter-List.md]

Check failure on line 10 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[reek] reported by reviewdog 🐶 TooManyStatements: MyClass#do_something has approx 12 statements [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Statements.md] Raw Output: lib/something.rb:10: TooManyStatements: MyClass#do_something has approx 12 statements [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Statements.md]
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|

Check failure on line 28 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[reek] reported by reviewdog 🐶 UncommunicativeVariableName: MyClass#do_something has the variable name 'n' [https://github.com/troessner/reek/blob/v6.1.4/docs/Uncommunicative-Variable-Name.md] Raw Output: lib/something.rb:28: UncommunicativeVariableName: MyClass#do_something has the variable name 'n' [https://github.com/troessner/reek/blob/v6.1.4/docs/Uncommunicative-Variable-Name.md]
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

Check failure on line 48 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[reek] reported by reviewdog 🐶 ControlParameter: MyClass#do_something_else_with is controlled by argument 'one' [https://github.com/troessner/reek/blob/v6.1.4/docs/Control-Parameter.md] Raw Output: lib/something.rb:48: ControlParameter: MyClass#do_something_else_with is controlled by argument 'one' [https://github.com/troessner/reek/blob/v6.1.4/docs/Control-Parameter.md]

puts 'Print something here:'
puts "#{two} - #{three}"

@valid = TRUE
end
end

0 comments on commit c2ebbf7

Please sign in to comment.