about summary refs log tree commit diff
path: root/.rubocop.yml
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-04-03 17:21:33 +0200
committerGitHub <noreply@github.com>2023-04-03 17:21:33 +0200
commit8192b0da7cd1fac38a68eab6746fc7ec74328a77 (patch)
tree686c30ed5f6c4cfe5f6b4d84e46ff19f7baa6949 /.rubocop.yml
parentcbdb25ab0343603165fc89fd28b07c9ca0f2ae6d (diff)
parent7b15f4006adb5f8f04d83174532c30eeb78757b0 (diff)
Merge pull request #2155 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to '.rubocop.yml')
-rw-r--r--.rubocop.yml88
1 files changed, 81 insertions, 7 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 1033db92d..e6a0c2d14 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,5 +1,7 @@
+# Can be removed once all rules are addressed or moved to this file as documented overrides
 inherit_from: .rubocop_todo.yml
 
+# Used for merging with exclude lists with .rubocop_todo.yml
 inherit_mode:
   merge:
     - Exclude
@@ -11,13 +13,13 @@ require:
   - rubocop-capybara
 
 AllCops:
-  TargetRubyVersion: 2.7
+  TargetRubyVersion: 2.7 # Set to minimum supported version of CI
   DisplayCopNames: true
   DisplayStyleGuide: true
   ExtraDetails: true
   UseCache: true
   CacheRootDirectory: tmp
-  NewCops: enable
+  NewCops: enable # Opt-in to newly added rules
   Exclude:
     - db/schema.rb
     - 'bin/*'
@@ -25,12 +27,16 @@ AllCops:
     - 'node_modules/**/*'
     - 'Vagrantfile'
     - 'vendor/**/*'
-    - 'lib/json_ld/*'
+    - 'lib/json_ld/*' # Generated files
     - 'lib/templates/**/*'
 
+# Reason: Prefer Hashes without extreme indentation
+# https://docs.rubocop.org/rubocop/cops_layout.html#layoutfirsthashelementindentation
 Layout/FirstHashElementIndentation:
   EnforcedStyle: consistent
 
+# Reason: Currently disabled in .rubocop_todo.yml
+# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
 Layout/LineLength:
   AllowedPatterns:
     # Allow comments to be long lines
@@ -41,20 +47,50 @@ Layout/LineLength:
     - db/*migrate/**/*
     - db/seeds/**/*
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier
 Lint/UselessAccessModifier:
   ContextCreatingMethods:
     - class_methods
 
+# Reason: Currently disabled in .rubocop_todo.yml
+# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize
 Metrics/AbcSize:
   Exclude:
     - 'lib/**/*cli*.rb'
     - db/*migrate/**/*
 
+# Reason: Some functions cannot be broken up, but others may be refactor candidates
+# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocklength
 Metrics/BlockLength:
-  CountAsOne: [array, heredoc]
+  CountAsOne: ['array', 'hash', 'heredoc', 'method_call']
   Exclude:
     - 'lib/mastodon/*_cli.rb'
+    - 'lib/tasks/*.rake'
+    - 'app/models/concerns/account_associations.rb'
+    - 'app/models/concerns/account_interactions.rb'
+    - 'app/models/concerns/ldap_authenticable.rb'
+    - 'app/models/concerns/omniauthable.rb'
+    - 'app/models/concerns/pam_authenticable.rb'
+    - 'app/models/concerns/remotable.rb'
+    - 'app/services/suspend_account_service.rb'
+    - 'app/services/unsuspend_account_service.rb'
+    - 'app/views/accounts/show.rss.ruby'
+    - 'app/views/tags/show.rss.ruby'
+    - 'config/environments/development.rb'
+    - 'config/environments/production.rb'
+    - 'config/initializers/devise.rb'
+    - 'config/initializers/doorkeeper.rb'
+    - 'config/initializers/omniauth.rb'
+    - 'config/initializers/simple_form.rb'
+    - 'config/navigation.rb'
+    - 'config/routes.rb'
+    - 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
+    - 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
+    - 'lib/paperclip/gif_transcoder.rb'
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocknesting
 Metrics/BlockNesting:
   Exclude:
     - 'lib/mastodon/*_cli.rb'
@@ -103,22 +139,32 @@ Metrics/ClassLength:
     - 'app/services/update_status_service.rb'
     - 'lib/paperclip/color_extractor.rb'
 
+# Reason: Currently disabled in .rubocop_todo.yml
+# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity
 Metrics/CyclomaticComplexity:
   Exclude:
     - lib/mastodon/*cli*.rb
     - db/*migrate/**/*
 
+# Reason: Currently disabled in .rubocop_todo.yml
+# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmethodlength
 Metrics/MethodLength:
   CountAsOne: [array, heredoc]
   Exclude:
     - 'lib/mastodon/*_cli.rb'
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror
 Metrics/ModuleLength:
   CountAsOne: [array, heredoc]
 
+# Reason: Prevailing style uses numeric status codes, matches RSpec/Rails/HttpStatus
+# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railshttpstatus
 Rails/HttpStatus:
   EnforcedStyle: numeric
 
+# Reason: Allowed only in the `tootctl` CLI application code
+# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsexit
 Rails/Exit:
   Exclude:
     - 'lib/mastodon/*_cli.rb'
@@ -146,9 +192,18 @@ RSpec/FilePath:
     - 'spec/controllers/concerns/signature_verification_spec.rb'
     - 'spec/controllers/concerns/user_tracking_concern_spec.rb'
 
+# Reason:
+# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
+RSpec/NamedSubject:
+  EnforcedStyle: named_only
+
+# Reason: Prevailing style choice
+# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnottonot
 RSpec/NotToNot:
   EnforcedStyle: to_not
 
+# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
+# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
 RSpec/Rails/HttpStatus:
   EnforcedStyle: numeric
 
@@ -162,26 +217,45 @@ Style/ClassAndModuleChildren:
 Style/Documentation:
   Enabled: false
 
+# Reason: Enforce modern Ruby style
+# https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax
 Style/HashSyntax:
   EnforcedStyle: ruby19_no_mixed_keys
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_style.html#stylenumericliterals
 Style/NumericLiterals:
   AllowedPatterns:
     - \d{4}_\d{2}_\d{2}_\d{6} # For DB migration date version number readability
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_style.html#stylepercentliteraldelimiters
 Style/PercentLiteralDelimiters:
   PreferredDelimiters:
     '%i': '()'
     '%w': '()'
 
+# Reason: Prefer less indentation in conditional assignments
+# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantbegin
+Style/RedundantBegin:
+  Enabled: false
+
+# Reason: Overridden to reduce implicit StandardError rescues
+# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror
 Style/RescueStandardError:
   EnforcedStyle: implicit
 
+# Reason: Originally disabled for CodeClimate, and no config consensus has been found
+# https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray
+Style/SymbolArray:
+  Enabled: false
+
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_style.html#styletrailingcommainarrayliteral
 Style/TrailingCommaInArrayLiteral:
   EnforcedStyleForMultiline: 'comma'
 
+# Reason:
+# https://docs.rubocop.org/rubocop/cops_style.html#styletrailingcommainhashliteral
 Style/TrailingCommaInHashLiteral:
   EnforcedStyleForMultiline: 'comma'
-
-Style/SymbolArray:
-  Enabled: false