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 101aa88
Show file tree
Hide file tree
Showing 4 changed files with 105 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
5 changes: 5 additions & 0 deletions Gemfile.lint
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'panolint', '~> 0'
58 changes: 58 additions & 0 deletions lib/something.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# 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)

Check warning on line 18 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Space after keyword `case` is missing. Raw Output: lib/something.rb:18:9: C: Layout/SpaceAroundKeyword: Space after keyword `case` is missing.
when "async" then

Check warning on line 19 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Prefer single-quoted strings when you don't need string interpolation or special symbols. Raw Output: lib/something.rb:19:14: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.

Check warning on line 19 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Do not use `then` for multiline `when` statement. Raw Output: lib/something.rb:19:22: C: Style/MultilineWhenThen: Do not use `then` for multiline `when` statement.
do_another_thing_with('r', six, seven, e)
when "sync" then

Check warning on line 21 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Prefer single-quoted strings when you don't need string interpolation or special symbols. Raw Output: lib/something.rb:21:14: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.

Check warning on line 21 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Do not use `then` for multiline `when` statement. Raw Output: lib/something.rb:21:21: C: Style/MultilineWhenThen: Do not use `then` for multiline `when` statement.
do_another_thing_with('m', seven)
when "nible" then

Check warning on line 23 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Prefer single-quoted strings when you don't need string interpolation or special symbols. Raw Output: lib/something.rb:23:14: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.

Check warning on line 23 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Do not use `then` for multiline `when` statement. Raw Output: lib/something.rb:23:22: C: Style/MultilineWhenThen: Do not use `then` for multiline `when` statement.
result = four.map { |x| x.name }

Check warning on line 24 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Pass `&:name` as an argument to `map` instead of a block. Raw Output: lib/something.rb:24:29: C: Style/SymbolProc: Pass `&:name` as an argument to `map` instead of a block.
end
end

five.each do |n|
n = n + 1

Check warning on line 29 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Use self-assignment shorthand `+=`. Raw Output: lib/something.rb:29:9: C: Style/SelfAssignment: Use self-assignment shorthand `+=`.
puts "N is now #{n}"

if seven.start_with?("r")

Check warning on line 32 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Use `next` to skip iteration. Raw Output: lib/something.rb:32:9: C: Style/Next: Use `next` to skip iteration.
download(seven)
if six.start_wuth?("w")
upload(siv, seven)
end
end

end
end

return 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)
if one == true
puts "Print something here:"
puts '#{two} - #{three}'

@valid = TRUE
end
end
end

0 comments on commit 101aa88

Please sign in to comment.