inherit_from: .rubocop_todo.yml

AllCops:
  TargetRubyVersion: 2.5
  TargetRailsVersion: 6.1

  NewCops: enable

  Exclude:
    - '**/vendor/**/*'
    - '**/tmp/**/*'
    - '**/bin/**/*'
    - '**/plugins/**/*'
    - '**/extra/**/*'
    - '**/lib/generators/**/templates/*'
    - '**/lib/tasks/**/*'
    - '**/files/**/*'
    - 'db/schema.rb'

# Enable extensions

require:
  - rubocop-performance
  - rubocop-rails

# Rules for Redmine

Bundler/OrderedGems:
  Enabled: false

Layout/CaseIndentation:
  Exclude:
    - 'config/initializers/10-patches.rb'

Layout/ClosingParenthesisIndentation:
  Enabled: true
  Exclude:
    - 'lib/redmine/wiki_formatting/textile/redcloth3.rb'

Layout/EmptyLinesAroundAccessModifier:
  Enabled: true
  Exclude:
    - 'config/initializers/10-patches.rb'

Layout/EmptyLineBetweenDefs:
  AllowAdjacentOneLineDefs: true

Layout/FirstHashElementIndentation:
  Enabled: true
  Exclude:
    - 'lib/redmine/wiki_formatting/textile/redcloth3.rb'

Layout/LineLength:
  Enabled: true
  IgnoredPatterns: ['\A\s+test \".+\" do\z', '\A\s*\#']
  Exclude:
    - 'db/migrate/0*.rb'
    - 'db/migrate/1*.rb'
    - 'db/migrate/201*.rb'
    - 'db/migrate/20200*.rb'
    - 'lib/redmine/wiki_formatting/textile/redcloth3.rb'

Layout/RescueEnsureAlignment:
  Enabled: true
  Exclude:
    - 'db/migrate/085_add_role_tracker_old_status_index_to_workflows.rb'

Layout/SpaceAroundEqualsInParameterDefault:
  Enabled: false

Layout/SpaceBeforeSemicolon:
  Enabled: true
  Exclude:
    - 'config/initializers/10-patches.rb'

Layout/SpaceBeforeBlockBraces:
  # "space" is used more than "no_space".
  # But "no_space" is more natural in one liner.
  #   str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/")
  Enabled: false

Layout/SpaceInsideBlockBraces:
  Enabled: false

Layout/SpaceInsideHashLiteralBraces:
  Enabled: false

Lint/RaiseException:
  Enabled: true

Lint/StructNewOverride:
  Enabled: true

Lint/SuppressedException:
  AllowComments: true

Layout/TrailingWhitespace:
  AllowInHeredoc: true

Metrics:
  Enabled: false

Naming/AccessorMethodName:
  Enabled: false

Naming/VariableNumber:
  CheckMethodNames: false
  CheckSymbols: false

Naming/BinaryOperatorParameterName:
  Enabled: false

Naming/PredicateName:
  Enabled: false

Rails/BulkChangeTable:
  Exclude:
    - 'db/migrate/20120714122200_add_workflows_rule_fields.rb'
    - 'db/migrate/20131214094309_remove_custom_fields_min_max_length_default_values.rb'

Rails/EnvironmentVariableAccess:
  Enabled: false

Rails/HelperInstanceVariable:
  Enabled: false

Style/AsciiComments:
  Exclude:
    # Copyright credit has non ascii character.
    # We can not change nor remove it.
    - 'app/models/repository/git.rb'

Style/BlockComments:
  Enabled: true
  Exclude:
    - 'lib/diff.rb'

Style/BlockDelimiters:
  Enabled: true
  Exclude:
    - 'db/migrate/007_create_journals.rb'
    - 'lib/diff.rb'

Style/EmptyElse:
  EnforcedStyle: empty

Style/FormatString:
  EnforcedStyle: sprintf

Style/FormatStringToken:
  Enabled: false

Style/FrozenStringLiteralComment:
  Enabled: true
  EnforcedStyle: always
  Exclude:
    - 'db/**/*.rb'
    - 'Gemfile'
    - 'Rakefile'
    - 'config.ru'
    - 'config/additional_environment.rb'

Style/HashEachMethods:
  Enabled: true

Style/HashSyntax:
  Enabled: true
  EnforcedStyle: no_mixed_keys

Style/HashTransformKeys:
  Enabled: true

Style/HashTransformValues:
  Enabled: true

Style/IdenticalConditionalBranches:
  Exclude:
    - 'config/initializers/10-patches.rb'
    - 'lib/redmine/wiki_formatting/textile/redcloth3.rb'

Style/NegatedIfElseCondition:
  Enabled: false

Style/RaiseArgs:
  Enabled: false

Style/TrailingCommaInArrayLiteral:
  Enabled: false

Style/TrailingCommaInHashLiteral:
  Enabled: false