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 the Ruby linters (Rubocop and Reek) on Pull Requests.

* A test file with a fest for the linters! 😋
  • Loading branch information
Sergio Bobillier committed Oct 31, 2024
1 parent 7f5b7ab commit 62d3f07
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 0 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/ruby-linters.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This workflow runs Rubocop and Reek 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 }}
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Run Rubocop
uses: reviewdog/[email protected]
with:
skip_install: true
rubocop_version: gemfile
rubocop_extensions: rubocop-rspec:gemfile
use_bundler: true
- name: Run Reek
uses: reviewdog/[email protected]
with:
reek_version: gemfile
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

# A class to test the linters
class MyClass
# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/CyclomaticComplexity
# rubocop:disable Metrics/MethodLength
# rubocop:disable Metrics/PerceivedComplexity
# rubocop:disable Metrics/ParameterLists
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, e)
when 'sync'
do_another_thing_with('m', seven)
when 'nible'
result = four.map(&:name)
end
end

five.each do |n|
n += 1
puts "N is now #{n}"

next unless seven.start_with?('r')

download(seven)
upload(siv, seven) if six.start_wuth?('w')
end
end

result
end
# rubocop:enable Metrics/AbcSize
# rubocop:enable Metrics/CyclomaticComplexity
# rubocop:enable Metrics/MethodLength
# rubocop:enable Metrics/PerceivedComplexity
# rubocop:enable Metrics/ParameterLists

def do_something_else_with(one, two, three)
return unless one == true

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

@valid = TRUE
end
end

0 comments on commit 62d3f07

Please sign in to comment.