You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
7.7 KiB
240 lines
7.7 KiB
# 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 |
|
|
|
require: |
|
- rubocop-rails |
|
- rubocop-rspec |
|
- rubocop-rspec_rails |
|
- rubocop-performance |
|
- rubocop-capybara |
|
- ./lib/linter/rubocop_middle_dot |
|
|
|
AllCops: |
|
TargetRubyVersion: 3.1 # Set to minimum supported version of CI |
|
DisplayCopNames: true |
|
DisplayStyleGuide: true |
|
ExtraDetails: true |
|
UseCache: true |
|
CacheRootDirectory: tmp |
|
NewCops: enable # Opt-in to newly added rules |
|
Exclude: |
|
- db/schema.rb |
|
- 'bin/*' |
|
- 'node_modules/**/*' |
|
- 'Vagrantfile' |
|
- 'vendor/**/*' |
|
- 'config/initializers/json_ld*' # Generated files |
|
- 'lib/mastodon/migration_helpers.rb' # Vendored from GitLab |
|
- '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: |
|
Max: 300 # Default of 120 causes a duplicate entry in generated todo file |
|
|
|
## Disable most Metrics/*Length cops |
|
# Reason: those are often triggered and force significant refactors when this happend |
|
# but the team feel they are not really improving the code quality. |
|
|
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocklength |
|
Metrics/BlockLength: |
|
Enabled: false |
|
|
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength |
|
Metrics/ClassLength: |
|
Enabled: false |
|
|
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmethodlength |
|
Metrics/MethodLength: |
|
Enabled: false |
|
|
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmodulelength |
|
Metrics/ModuleLength: |
|
Enabled: false |
|
|
|
## End Disable Metrics/*Length cops |
|
|
|
# Reason: Currently disabled in .rubocop_todo.yml |
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize |
|
Metrics/AbcSize: |
|
Exclude: |
|
- 'lib/mastodon/cli/*.rb' |
|
|
|
# Reason: Currently disabled in .rubocop_todo.yml |
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity |
|
Metrics/CyclomaticComplexity: |
|
Exclude: |
|
- lib/mastodon/cli/*.rb |
|
|
|
# Reason: |
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsparameterlists |
|
Metrics/ParameterLists: |
|
CountKeywordArgs: false |
|
|
|
# Reason: Prefer seeing a variable name |
|
# https://docs.rubocop.org/rubocop/cops_naming.html#namingblockforwarding |
|
Naming/BlockForwarding: |
|
EnforcedStyle: explicit |
|
|
|
# Reason: Prevailing style is argument file paths |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsfilepath |
|
Rails/FilePath: |
|
EnforcedStyle: arguments |
|
|
|
# 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: Conflicts with `Lint/UselessMethodDefinition` for inherited controller actions |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railslexicallyscopedactionfilter |
|
Rails/LexicallyScopedActionFilter: |
|
Exclude: |
|
- 'app/controllers/auth/*' |
|
|
|
# Reason: These tasks are doing local work which do not need full env loaded |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsrakeenvironment |
|
Rails/RakeEnvironment: |
|
Exclude: |
|
- 'lib/tasks/auto_annotate_models.rake' |
|
- 'lib/tasks/emojis.rake' |
|
- 'lib/tasks/mastodon.rake' |
|
- 'lib/tasks/repo.rake' |
|
- 'lib/tasks/statistics.rake' |
|
|
|
# Reason: There are appropriate times to use these features |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsskipsmodelvalidations |
|
Rails/SkipsModelValidations: |
|
Enabled: false |
|
|
|
# Reason: We want to preserve the ability to migrate from arbitrary old versions, |
|
# and cannot guarantee that every installation has run every migration as they upgrade. |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsunusedignoredcolumns |
|
Rails/UnusedIgnoredColumns: |
|
Enabled: false |
|
|
|
# Reason: Prevailing style choice |
|
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsnegateinclude |
|
Rails/NegateInclude: |
|
Enabled: false |
|
|
|
# Reason: Enforce default limit, but allow some elements to span lines |
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecexamplelength |
|
RSpec/ExampleLength: |
|
CountAsOne: ['array', 'heredoc', 'method_call'] |
|
|
|
# Reason: Deprecated cop, will be removed in 3.0, replaced by SpecFilePathFormat |
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath |
|
RSpec/FilePath: |
|
Enabled: false |
|
|
|
# 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: Match overrides from Rspec/FilePath rule above |
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat |
|
RSpec/SpecFilePathFormat: |
|
CustomTransform: |
|
ActivityPub: activitypub |
|
DeepL: deepl |
|
FetchOEmbedService: fetch_oembed_service |
|
OEmbedController: oembed_controller |
|
OStatus: ostatus |
|
|
|
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus |
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus |
|
RSpecRails/HttpStatus: |
|
EnforcedStyle: numeric |
|
|
|
# Reason: |
|
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren |
|
Style/ClassAndModuleChildren: |
|
Enabled: false |
|
|
|
# Reason: Classes mostly self-document with their names |
|
# https://docs.rubocop.org/rubocop/cops_style.html#styledocumentation |
|
Style/Documentation: |
|
Enabled: false |
|
|
|
# Reason: Route redirects are not token-formatted and must be skipped |
|
# https://docs.rubocop.org/rubocop/cops_style.html#styleformatstringtoken |
|
Style/FormatStringToken: |
|
inherit_mode: |
|
merge: |
|
- AllowedMethods # The rubocop-rails config adds `redirect` |
|
AllowedMethods: |
|
- redirect_with_vary |
|
|
|
# Reason: Prevailing style choice |
|
# https://docs.rubocop.org/rubocop/cops_style.html#stylehashaslastarrayitem |
|
Style/HashAsLastArrayItem: |
|
Enabled: false |
|
|
|
# Reason: Enforce modern Ruby style |
|
# https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax |
|
Style/HashSyntax: |
|
EnforcedStyle: ruby19_no_mixed_keys |
|
EnforcedShorthandSyntax: either |
|
|
|
# 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: Prevailing style choice |
|
# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantfetchblock |
|
Style/RedundantFetchBlock: |
|
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/MiddleDot: |
|
Enabled: true
|
|
|