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 73345d4
Show file tree
Hide file tree
Showing 4 changed files with 103 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'
56 changes: 56 additions & 0 deletions lib/something.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# 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")

Check warning on line 32 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Add empty line after guard clause. Raw Output: lib/something.rb:32:9: C: Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.

Check warning on line 32 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:32:39: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
download(seven)
if six.start_wuth?("w")

Check warning on line 34 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Favor modifier `if` usage when having a single-line body. Another good alternative is the usage of control flow `&&`/`||`. Raw Output: lib/something.rb:34:9: C: Style/IfUnlessModifier: Favor modifier `if` usage when having a single-line body. Another good alternative is the usage of control flow `&&`/`||`.

Check warning on line 34 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:34:28: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
upload(siv, seven)
end
end
end

return result

Check warning on line 40 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Redundant `return` detected. Raw Output: lib/something.rb:40:5: C: Style/RedundantReturn: Redundant `return` detected.
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)

Check warning on line 48 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Unused method argument - `two`. If it's necessary, use `_` or `_two` as an argument name to indicate that it won't be used. If it's unnecessary, remove it. Raw Output: lib/something.rb:48:35: W: Lint/UnusedMethodArgument: Unused method argument - `two`. If it's necessary, use `_` or `_two` as an argument name to indicate that it won't be used. If it's unnecessary, remove it.

Check warning on line 48 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Unused method argument - `three`. If it's necessary, use `_` or `_three` as an argument name to indicate that it won't be used. If it's unnecessary, remove it. Raw Output: lib/something.rb:48:40: W: Lint/UnusedMethodArgument: Unused method argument - `three`. If it's necessary, use `_` or `_three` as an argument name to indicate that it won't be used. If it's unnecessary, remove it.
if one == true

Check warning on line 49 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Use a guard clause (`return unless one == true`) instead of wrapping the code inside a conditional expression. Raw Output: lib/something.rb:49:5: C: Style/GuardClause: Use a guard clause (`return unless one == true`) instead of wrapping the code inside a conditional expression.
puts "Print something here:"

Check warning on line 50 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:50:12: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
puts '#{two} - #{three}'

Check warning on line 51 in lib/something.rb

View workflow job for this annotation

GitHub Actions / lint (2.7)

[rubocop] reported by reviewdog 🐶 Interpolation in single quoted string detected. Use double quoted strings if you need interpolation. Raw Output: lib/something.rb:51:12: W: Lint/InterpolationCheck: Interpolation in single quoted string detected. Use double quoted strings if you need interpolation.

@valid = TRUE
end
end
end

0 comments on commit 73345d4

Please sign in to comment.