inherit_from: .rubocop_todo.yml
|
|
|
|
inherit_mode:
|
|
merge:
|
|
- Exclude
|
|
|
|
require:
|
|
- rubocop-rails
|
|
- rubocop-rspec
|
|
- rubocop-performance
|
|
- rubocop-capybara
|
|
|
|
AllCops:
|
|
TargetRubyVersion: 2.7
|
|
DisplayCopNames: true
|
|
DisplayStyleGuide: true
|
|
ExtraDetails: true
|
|
UseCache: true
|
|
CacheRootDirectory: tmp
|
|
NewCops: enable
|
|
Exclude:
|
|
- db/schema.rb
|
|
- 'bin/*'
|
|
- 'Rakefile'
|
|
- 'node_modules/**/*'
|
|
- 'Vagrantfile'
|
|
- 'vendor/**/*'
|
|
- 'lib/json_ld/*'
|
|
- 'lib/templates/**/*'
|
|
|
|
Layout/FirstHashElementIndentation:
|
|
EnforcedStyle: consistent
|
|
|
|
Layout/LineLength:
|
|
AllowedPatterns:
|
|
# Allow comments to be long lines
|
|
- !ruby/regexp / \# .*$/
|
|
- !ruby/regexp /^\# .*$/
|
|
Exclude:
|
|
- lib/**/*cli*.rb
|
|
- db/*migrate/**/*
|
|
- db/seeds/**/*
|
|
|
|
Lint/UselessAccessModifier:
|
|
ContextCreatingMethods:
|
|
- class_methods
|
|
|
|
Metrics/AbcSize:
|
|
Exclude:
|
|
- 'lib/**/*cli*.rb'
|
|
- db/*migrate/**/*
|
|
|
|
Metrics/BlockLength:
|
|
CountAsOne: [array, heredoc]
|
|
Exclude:
|
|
- 'lib/mastodon/*_cli.rb'
|
|
|
|
Metrics/BlockNesting:
|
|
Exclude:
|
|
- 'lib/mastodon/*_cli.rb'
|
|
|
|
# Reason: Some Excluded files would be candidates for refactoring but not currently addressed
|
|
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength
|
|
Metrics/ClassLength:
|
|
CountAsOne: ['array', 'hash', 'heredoc', 'method_call']
|
|
Exclude:
|
|
- 'lib/mastodon/*_cli.rb'
|
|
- 'app/controllers/admin/accounts_controller.rb'
|
|
- 'app/controllers/api/base_controller.rb'
|
|
- 'app/controllers/api/v1/admin/accounts_controller.rb'
|
|
- 'app/controllers/application_controller.rb'
|
|
- 'app/controllers/auth/registrations_controller.rb'
|
|
- 'app/controllers/auth/sessions_controller.rb'
|
|
- 'app/lib/activitypub/activity.rb'
|
|
- 'app/lib/activitypub/activity/create.rb'
|
|
- 'app/lib/activitypub/tag_manager.rb'
|
|
- 'app/lib/feed_manager.rb'
|
|
- 'app/lib/link_details_extractor.rb'
|
|
- 'app/lib/request.rb'
|
|
- 'app/lib/text_formatter.rb'
|
|
- 'app/lib/user_settings_decorator.rb'
|
|
- 'app/mailers/user_mailer.rb'
|
|
- 'app/models/account.rb'
|
|
- 'app/models/admin/account_action.rb'
|
|
- 'app/models/form/account_batch.rb'
|
|
- 'app/models/media_attachment.rb'
|
|
- 'app/models/status.rb'
|
|
- 'app/models/tag.rb'
|
|
- 'app/models/user.rb'
|
|
- 'app/serializers/activitypub/actor_serializer.rb'
|
|
- 'app/serializers/activitypub/note_serializer.rb'
|
|
- 'app/serializers/rest/status_serializer.rb'
|
|
- 'app/services/account_search_service.rb'
|
|
- 'app/services/activitypub/process_account_service.rb'
|
|
- 'app/services/activitypub/process_status_update_service.rb'
|
|
- 'app/services/backup_service.rb'
|
|
- 'app/services/delete_account_service.rb'
|
|
- 'app/services/fan_out_on_write_service.rb'
|
|
- 'app/services/fetch_link_card_service.rb'
|
|
- 'app/services/import_service.rb'
|
|
- 'app/services/notify_service.rb'
|
|
- 'app/services/post_status_service.rb'
|
|
- 'app/services/update_status_service.rb'
|
|
- 'lib/paperclip/color_extractor.rb'
|
|
|
|
Metrics/CyclomaticComplexity:
|
|
Exclude:
|
|
- lib/mastodon/*cli*.rb
|
|
- db/*migrate/**/*
|
|
|
|
Metrics/MethodLength:
|
|
CountAsOne: [array, heredoc]
|
|
Exclude:
|
|
- 'lib/mastodon/*_cli.rb'
|
|
|
|
Metrics/ModuleLength:
|
|
CountAsOne: [array, heredoc]
|
|
|
|
Rails/HttpStatus:
|
|
EnforcedStyle: numeric
|
|
|
|
Rails/Exit:
|
|
Exclude:
|
|
- 'lib/mastodon/*_cli.rb'
|
|
- 'lib/mastodon/cli_helper.rb'
|
|
- 'lib/cli.rb'
|
|
|
|
# Reason: Some single letter camel case files shouldn't be split
|
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
|
RSpec/FilePath:
|
|
CustomTransform:
|
|
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
|
|
DeepL: deepl
|
|
FetchOEmbedService: fetch_oembed_service
|
|
JsonLdHelper: jsonld_helper
|
|
OEmbedController: oembed_controller
|
|
OStatus: ostatus
|
|
NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances
|
|
Exclude:
|
|
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
|
|
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
|
|
- 'spec/controllers/concerns/account_controller_concern_spec.rb' # Concerns describe ApplicationController and don't fit naming
|
|
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
|
|
- 'spec/controllers/concerns/localized_spec.rb'
|
|
- 'spec/controllers/concerns/rate_limit_headers_spec.rb'
|
|
- 'spec/controllers/concerns/signature_verification_spec.rb'
|
|
- 'spec/controllers/concerns/user_tracking_concern_spec.rb'
|
|
|
|
RSpec/NotToNot:
|
|
EnforcedStyle: to_not
|
|
|
|
RSpec/Rails/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
|
|
|
|
Style/HashSyntax:
|
|
EnforcedStyle: ruby19_no_mixed_keys
|
|
|
|
Style/NumericLiterals:
|
|
AllowedPatterns:
|
|
- \d{4}_\d{2}_\d{2}_\d{6} # For DB migration date version number readability
|
|
|
|
Style/PercentLiteralDelimiters:
|
|
PreferredDelimiters:
|
|
'%i': '()'
|
|
'%w': '()'
|
|
|
|
Style/RescueStandardError:
|
|
EnforcedStyle: implicit
|
|
|
|
Style/TrailingCommaInArrayLiteral:
|
|
EnforcedStyleForMultiline: 'comma'
|
|
|
|
Style/TrailingCommaInHashLiteral:
|
|
EnforcedStyleForMultiline: 'comma'
|
|
|
|
Style/SymbolArray:
|
|
Enabled: false
|