Skip to content

Commit

Permalink
ruby: include Rubocop (#20821)
Browse files Browse the repository at this point in the history
* ruby: include Rubocop

We use a fair bit of Ruby logic here and there so until this website
disappears (not soon), we might as well ensure we're hacking as one.

* ci: include Rubocop in the flow
  • Loading branch information
freesteph authored Oct 16, 2024
1 parent 6df7e00 commit 1b88fa1
Show file tree
Hide file tree
Showing 25 changed files with 502 additions and 260 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ jobs:
ruby-version: 3.3.4
bundler-cache: true

- name: Lint Ruby with Rubocop
run: bundle exec rubocop

- name: Install npm dependencies
uses: actions/setup-node@v4
with:
Expand Down
18 changes: 18 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
inherit_from: .rubocop_todo.yml

# The behavior of RuboCop can be controlled via the .rubocop.yml
# configuration file. It makes it possible to enable/disable
# certain cops (checks) and to alter their behavior if they accept
# any parameters. The file can be placed either in your home
# directory or in some project directory.
#
# RuboCop will start looking for the configuration file in the directory
# where the inspected file is and continue its way up to the root directory.
#
# See https://docs.rubocop.org/rubocop/configuration
require:
- rubocop-rspec
- rubocop-rake

AllCops:
NewCops: enable
176 changes: 176 additions & 0 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2024-10-16 07:34:36 UTC using RuboCop version 1.66.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
Lint/AmbiguousOperator:
Exclude:
- 'spec/lib/models/member_spec.rb'

# Offense count: 2
# Configuration parameters: DebuggerMethods, DebuggerRequires.
Lint/Debugger:
Exclude:
- '_site/bin/beta-rb'
- 'bin/beta-rb'

# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowPercentLiteralArrayArgument.
Lint/RedundantSplatExpansion:
Exclude:
- 'spec/lib/models/member_spec.rb'

# Offense count: 2
Lint/ShadowingOuterLocalVariable:
Exclude:
- '_site/bin/htmlproofer'
- 'bin/htmlproofer'

# Offense count: 6
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 108

# Offense count: 1
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
# AllowedMethods: refine
Metrics/BlockLength:
Max: 42

# Offense count: 3
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/CyclomaticComplexity:
Max: 26

# Offense count: 7
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Max: 67

# Offense count: 3
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/PerceivedComplexity:
Max: 28

# Offense count: 2
# Configuration parameters: ForbiddenDelimiters.
# ForbiddenDelimiters: (?i-mx:(^|\s)(EO[A-Z]{1}|END)(\s|$))
Naming/HeredocDelimiterNaming:
Exclude:
- '_site/bin/beta-rb'
- 'bin/beta-rb'

# Offense count: 45
# Configuration parameters: EnforcedStyle, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, camelCase
Naming/VariableName:
Exclude:
- '_plugins/community.rb'
- '_plugins/incubators.rb'
- '_plugins/sponsors.rb'
- '_plugins/startups.rb'

# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
RSpec/ContainExactly:
Exclude:
- 'spec/lib/models/member_spec.rb'

# Offense count: 4
# Configuration parameters: Prefixes, AllowedPatterns.
# Prefixes: when, with, without
RSpec/ContextWording:
Exclude:
- 'spec/plugins/startup_spec.rb'
- 'spec/spec_helper.rb'

# Offense count: 4
# Configuration parameters: AllowedGroups.
RSpec/NestedGroups:
Max: 4

# Offense count: 4
# Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
# Include: **/*_spec.rb
RSpec/SpecFilePathFormat:
Exclude:
- '**/spec/routing/**/*'
- 'spec/lib/models/member_spec.rb'
- 'spec/plugins/community_spec.rb'
- 'spec/plugins/money_spec.rb'
- 'spec/plugins/startup_spec.rb'

# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Rake/Desc:
Exclude:
- 'Rakefile'

# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowOnConstant, AllowOnSelfClass.
Style/CaseEquality:
Exclude:
- '_plugins/incubators.rb'

# Offense count: 17
# Configuration parameters: AllowedConstants.
Style/Documentation:
Exclude:
- 'spec/**/*'
- 'test/**/*'
- '_plugins/community.rb'
- '_plugins/content_url_encoded_markdown.rb'
- '_plugins/dates.rb'
- '_plugins/images.rb'
- '_plugins/incubators.rb'
- '_plugins/national_impact.rb'
- '_plugins/phases.rb'
- '_plugins/sponsors.rb'
- '_plugins/startup.rb'
- '_plugins/startups.rb'
- '_site/bin/beta-rb'
- 'bin/beta-rb'
- 'lib/htmlproofer/check_img_http.rb'
- 'lib/models/member.rb'

# Offense count: 1
Style/OpenStructUse:
Exclude:
- 'spec/plugins/community_spec.rb'

# Offense count: 1
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
Exclude:
- '_plugins/startup.rb'

# Offense count: 32
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
# SupportedStyles: single_quotes, double_quotes
Style/StringLiterals:
Exclude:
- 'spec/lib/models/member_spec.rb'

# Offense count: 4
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: WordRegex.
# SupportedStyles: percent, brackets
Style/WordArray:
EnforcedStyle: percent
MinSize: 4

# Offense count: 4
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 150
26 changes: 17 additions & 9 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
source "https://rubygems.org"
# frozen_string_literal: true

ruby "3.3.4"
source 'https://rubygems.org'

gem "base64"
gem "csv"
gem "jekyll"
ruby '3.3.4'

gem "activemodel"
gem 'base64'
gem 'csv'
gem 'jekyll'

gem 'activemodel'

group :jekyll_plugins do
gem 'jekyll-redirect-from'
end

group :test, :development do
gem 'rubocop'
gem 'rubocop-rake'
gem 'rubocop-rspec'
end

group :test do
gem 'debug'
gem 'guard'
Expand All @@ -23,10 +31,10 @@ group :test do
gem 'rspec'
end

gem 'rake', group: [:default, :test]
gem 'rake', group: %i[default test]

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.0" if Gem.win_platform?
gem 'wdm', '~> 0.1.0' if Gem.win_platform?
27 changes: 27 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ GEM
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
afm (0.2.2)
ast (2.4.2)
async (2.11.0)
console (~> 1.25, >= 1.25.2)
fiber-annotation
Expand Down Expand Up @@ -124,6 +125,7 @@ GEM
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
kwalify (0.7.2)
language_server-protocol (3.17.0.3)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
Expand All @@ -149,6 +151,10 @@ GEM
addressable
nokogiri
optimist (3.1.0)
parallel (1.26.3)
parser (3.3.5.0)
ast (~> 2.4.1)
racc
pathutil (0.16.2)
forwardable-extended (~> 2.6)
pdf-reader (2.12.0)
Expand All @@ -171,6 +177,7 @@ GEM
ffi (~> 1.0)
rdoc (6.7.0)
psych (>= 4.0.0)
regexp_parser (2.9.2)
reline (0.5.8)
io-console (~> 0.5)
rexml (3.2.8)
Expand All @@ -189,6 +196,23 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.1)
rubocop (1.66.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.4, < 3.0)
rubocop-ast (>= 1.32.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.32.3)
parser (>= 3.3.1.0)
rubocop-rake (0.6.0)
rubocop (~> 1.0)
rubocop-rspec (3.0.5)
rubocop (~> 1.61)
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
safe_yaml (1.0.5)
sass-embedded (1.77.4-aarch64-linux-gnu)
Expand Down Expand Up @@ -236,6 +260,9 @@ DEPENDENCIES
opengraph_parser
rake
rspec
rubocop
rubocop-rake
rubocop-rspec
tzinfo-data

RUBY VERSION
Expand Down
2 changes: 2 additions & 0 deletions Guardfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

# More info at https://github.com/guard/guard#readme

guard :rspec, cmd: 'bundle exec rspec' do
Expand Down
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ down:
docker compose down
sh:
$(DOCKER-RUN) web bash
lint:
$(DOCKER-RUN) web $(BUNDLE-EXEC) rubocop

html-proofer:
bundle exec htmlproofer ./_site/ --ignore-files "/recrutement\/*/" --no-enforce-https --disable-external --root_dir _site/ --allow-missing-href
Expand Down
7 changes: 4 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
task "assets:precompile" do
exec("jekyll build")
end
# frozen_string_literal: true

task 'assets:precompile' do
exec('jekyll build')
end
Loading

0 comments on commit 1b88fa1

Please sign in to comment.