Skip to content
Snippets Groups Projects
.rubocop.yml 8.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • require:
      - rubocop-rails
    
      - rubocop-rspec
      - rubocop-performance
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    AllCops:
    
      TargetRubyVersion: 2.7
    
      DisplayCopNames: true
      DisplayStyleGuide: true
      ExtraDetails: true
      UseCache: true
      CacheRootDirectory: tmp
      NewCops: enable
    
    Matt Jankowski's avatar
    Matt Jankowski committed
      Exclude:
    
        - db/schema.rb
    
        - 'app/views/**/*'
        - 'config/**/*'
        - 'bin/*'
        - 'Rakefile'
        - 'node_modules/**/*'
        - 'Vagrantfile'
        - 'vendor/**/*'
        - 'lib/json_ld/*'
        - 'lib/templates/**/*'
    
    Eugen Rochko's avatar
    Eugen Rochko committed
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Bundler/OrderedGems:
    
    Eugen Rochko's avatar
    Eugen Rochko committed
      Enabled: false
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Layout/AccessModifierIndentation:
      EnforcedStyle: indent
    
    Layout/EmptyLineAfterMagicComment:
      Enabled: false
    
    
    Layout/EmptyLineAfterGuardClause:
      Enabled: false
    
    
    Layout/EmptyLineBetweenDefs:
      AllowAdjacentOneLineDefs: true
    
    
    Layout/EmptyLinesAroundAttributeAccessor:
      Enabled: true
    
    
    Layout/FirstHashElementIndentation:
      EnforcedStyle: consistent
    
    
    Layout/HashAlignment:
      Enabled: false
    
    Layout/SpaceAroundMethodCallOperator:
      Enabled: true
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Layout/SpaceInsideHashLiteralBraces:
      EnforcedStyle: space
    
    Lint/DeprecatedOpenSSLConstant:
      Enabled: true
    
    Lint/DuplicateElsifCondition:
      Enabled: true
    
    Lint/MixedRegexpCaptureTypes:
      Enabled: true
    
    Lint/RaiseException:
      Enabled: true
    
    Lint/StructNewOverride:
      Enabled: true
    
    
    abcang's avatar
    abcang committed
    Lint/UselessAccessModifier:
      ContextCreatingMethods:
        - class_methods
    
    
      Max: 34 # RuboCop default 17
    
        - 'lib/**/*cli*.rb'
        - db/*migrate/**/*
        - lib/paperclip/color_extractor.rb
        - app/workers/scheduler/follow_recommendations_scheduler.rb
        - app/services/activitypub/fetch*_service.rb
        - lib/paperclip/**/*
      CountRepeatedAttributes: false
      AllowedMethods:
        - update_media_attachments!
        - account_link_to
        - attempt_oembed
        - build_crutches
        - calculate_scores
        - cc
        - dump_actor!
        - filter_from_home?
        - hydrate
        - import_bookmarks!
        - import_relationships!
        - initialize
        - link_to_mention
        - log_target
        - matches_time_window?
        - parse_metadata
        - perform_statuses_search!
        - privatize_media_attachments!
        - process_update
        - publish_media_attachments!
        - remotable_attachment
        - render_initial_state
        - render_with_cache
        - searchable_by
        - self.cached_filters_for
        - set_fetchable_attributes!
        - signed_request_actor
        - statuses_to_delete
        - update_poll!
    
        - 'lib/mastodon/*_cli.rb'
    
      CountComments: false
      CountAsOne: [array, heredoc]
      AllowedMethods:
        - task
        - namespace
        - class_methods
        - included
    
      Exclude:
        - 'lib/mastodon/*_cli.rb'
    
      CountAsOne: [array, heredoc]
    
      Exclude:
        - 'lib/mastodon/*_cli.rb'
    
        - lib/mastodon/*cli*.rb
        - db/*migrate/**/*
      AllowedMethods:
        - attempt_oembed
        - blocked?
        - build_crutches
        - calculate_scores
        - cc
        - discover_endpoint!
        - filter_from_home?
        - hydrate
        - klass
        - link_to_mention
        - log_target
        - matches_time_window?
        - patch_for_forwarding!
        - preprocess_attributes!
        - process_update
        - remotable_attachment
        - scan_text!
        - self.cached_filters_for
        - set_fetchable_attributes!
        - setup_redis_env_url
        - update_media_attachments!
    
    Lerk's avatar
    Lerk committed
    Layout/LineLength:
    
      Max: 140 # RuboCop default 120
      AllowHeredoc: true
    
    Matt Jankowski's avatar
    Matt Jankowski committed
      AllowURI: true
    
      IgnoreCopDirectives: true
      AllowedPatterns:
        # Allow comments to be long lines
        - !ruby/regexp / \# .*$/
        - !ruby/regexp /^\# .*$/
      Exclude:
        - lib/**/*cli*.rb
        - db/*migrate/**/*
        - db/seeds/**/*
    
    Matt Jankowski's avatar
    Matt Jankowski committed
      CountComments: false
    
      CountAsOne: [array, heredoc]
      Max: 25 # RuboCop default 10
    
      Exclude:
        - 'lib/mastodon/*_cli.rb'
    
      AllowedMethods:
        - account_link_to
        - attempt_oembed
        - body_with_limit
        - build_crutches
        - cached_filters_for
        - calculate_scores
        - check_webfinger!
        - clean_feeds!
        - collection_items
        - collection_presenter
        - copy_account_notes!
        - deduplicate_accounts!
        - deduplicate_conversations!
        - deduplicate_local_accounts!
        - deduplicate_statuses!
        - deduplicate_tags!
        - deduplicate_users!
        - discover_endpoint!
        - extract_extra_uris_with_indices
        - extract_hashtags_with_indices
        - extract_mentions_or_lists_with_indices
        - filter_from_home?
        - from_elasticsearch
        - handle_explicit_update!
        - handle_mark_as_sensitive!
        - hsl_to_rgb
        - import_bookmarks!
        - import_domain_blocks!
        - import_relationships!
        - ldap_options
        - matches_time_window?
        - outbox_presenter
        - pam_get_user
        - parallelize_with_progress
        - parse_and_transform
        - patch_for_forwarding!
        - populate_home
        - post_process_style
        - preload_cache_collection_target_statuses
        - privatize_media_attachments!
        - provides_callback_for
        - publish_media_attachments!
        - relevant_account_timestamp
        - remotable_attachment
        - rgb_to_hsl
        - rss_status_content_format
        - set_fetchable_attributes!
        - setup_redis_env_url
        - signed_request_actor
        - to_preview_card_attributes
        - upgrade_storage_filesystem
        - upgrade_storage_s3
        - user_settings_params
        - hydrate
        - cc
        - self_destruct
    
    
    Metrics/ModuleLength:
      CountComments: false
      Max: 200
    
      CountAsOne: [array, heredoc]
    
      Max: 5 # RuboCop default 5
    
      CountKeywordArgs: true # RuboCop default true
    
      MaxOptionalParameters: 3 # RuboCop default 3
      Exclude:
        - app/models/concerns/account_interactions.rb
        - app/services/activitypub/fetch_remote_account_service.rb
        - app/services/activitypub/fetch_remote_actor_service.rb
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Metrics/PerceivedComplexity:
    
      Max: 16 # RuboCop default 8
      AllowedMethods:
        - attempt_oembed
        - build_crutches
        - calculate_scores
        - deduplicate_users!
        - discover_endpoint!
        - filter_from_home?
        - hydrate
        - patch_for_forwarding!
        - process_update
        - remove_orphans
        - update_media_attachments!
    
    Naming/MemoizedInstanceVariableName:
      Enabled: false
    
    
    Naming/MethodParameterName:
      Enabled: true
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Rails:
      Enabled: true
    
    
    Rails/ApplicationController:
    
      Exclude:
        - 'app/controllers/well_known/**/*.rb'
    
    Matt Jankowski's avatar
    Matt Jankowski committed
      Enabled: false
    
    
    Rails/Exit:
      Exclude:
        - 'lib/mastodon/*'
    
        - 'lib/cli.rb'
    
    Rails/FilePath:
      Enabled: false
    
    Rails/HasAndBelongsToMany:
      Enabled: false
    
    Rails/HasManyOrHasOneDependent:
      Enabled: false
    
    
    Rails/HelperInstanceVariable:
      Enabled: false
    
    
    Rails/HttpStatus:
      Enabled: false
    
    Rails/IndexBy:
      Enabled: false
    
    Rails/InverseOf:
      Enabled: false
    
    Rails/LexicallyScopedActionFilter:
      Enabled: false
    
    Rails/OutputSafety:
      Enabled: true
    
    Rails/RakeEnvironment:
      Enabled: false
    
    Rails/RedundantForeignKey:
      Enabled: false
    
    Rails/SkipsModelValidations:
      Enabled: false
    
    Rails/UniqueValidationWithoutIndex:
      Enabled: false
    
    Style/AccessorGrouping:
      Enabled: true
    
    Style/AccessModifierDeclarations:
      Enabled: false
    
    Style/ArrayCoercion:
      Enabled: true
    
    Style/BisectedAttrAccessor:
      Enabled: true
    
    Style/CaseLikeIf:
      Enabled: false
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Style/ClassAndModuleChildren:
      Enabled: false
    
    
    Style/CollectionMethods:
      Enabled: true
      PreferredMethods:
        find_all: 'select'
    
    Style/Documentation:
      Enabled: false
    
    Style/DoubleNegation:
    
    Style/ExpandPathArguments:
      Enabled: false
    
    Style/ExponentialNotation:
      Enabled: true
    
    Style/FormatString:
      Enabled: false
    
    
    Style/FormatStringToken:
      Enabled: false
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Style/GuardClause:
    
    Style/HashAsLastArrayItem:
      Enabled: false
    
    Style/HashEachMethods:
      Enabled: true
    
    Style/HashLikeCase:
      Enabled: true
    
    Style/HashTransformKeys:
      Enabled: true
    
    Style/HashTransformValues:
      Enabled: false
    
    
    Rose's avatar
    Rose committed
    Style/HashSyntax:
      Enabled: true
      EnforcedStyle: ruby19_no_mixed_keys
    
    
    Style/IfUnlessModifier:
      Enabled: false
    
    Style/InverseMethods:
      Enabled: false
    
    
    Style/MutableConstant:
      Enabled: false
    
    
    Style/PercentLiteralDelimiters:
      PreferredDelimiters:
        '%i': '()'
        '%w': '()'
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Style/PerlBackrefs:
      AutoCorrect: false
    
    Style/RedundantFetchBlock:
      Enabled: true
    
    Style/RedundantFileExtensionInRequire:
      Enabled: true
    
    Style/RedundantRegexpCharacterClass:
      Enabled: false
    
    Style/RedundantRegexpEscape:
      Enabled: false
    
    Style/RedundantReturn:
      Enabled: true
    
    
    Style/RedundantBegin:
      Enabled: false
    
    
    Matt Jankowski's avatar
    Matt Jankowski committed
    Style/RegexpLiteral:
    
    yhirano's avatar
    yhirano committed
      Enabled: false
    
    
    Style/RescueStandardError:
    
    
    Style/SignalException:
      Enabled: false
    
    Style/SlicingWithRange:
      Enabled: true
    
    
    Style/TrailingCommaInArrayLiteral:
      EnforcedStyleForMultiline: 'comma'
    
    Style/TrailingCommaInHashLiteral:
    
    Matt Jankowski's avatar
    Matt Jankowski committed
      EnforcedStyleForMultiline: 'comma'
    
    
    Style/UnpackFirst:
      Enabled: false
    
    
    RSpec/ScatteredSetup:
      Enabled: false
    RSpec/ImplicitExpect:
      Enabled: false
    RSpec/NamedSubject:
      Enabled: false
    RSpec/DescribeClass:
      Enabled: false
    RSpec/LetSetup:
      Enabled: false