.rubocop.yml
inherit_from: .rubocop_todo.yml
AllCops:
TargetRubyVersion: 3.0
TargetRailsVersion: 7.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:
Exclude:
- 'lib/redmine/wiki_formatting/textile/redcloth3.rb'
Layout/EmptyLinesAroundAccessModifier:
Exclude:
- 'config/initializers/10-patches.rb'
Layout/EmptyLineBetweenDefs:
AllowAdjacentOneLineDefs: true
Layout/FirstHashElementIndentation:
Exclude:
- 'lib/redmine/wiki_formatting/textile/redcloth3.rb'
Layout/LineLength:
AllowedPatterns: ['\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:
Exclude:
- 'db/migrate/085_add_role_tracker_old_status_index_to_workflows.rb'
Layout/SpaceAroundEqualsInParameterDefault:
Enabled: false
Layout/SpaceBeforeSemicolon:
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/SpaceBeforeFirstArg:
Enabled: false
Layout/SpaceInsideBlockBraces:
Enabled: false
Layout/SpaceInsideHashLiteralBraces:
Enabled: false
Lint/MissingSuper:
Exclude:
- 'lib/redmine/views/builders/structure.rb'
Lint/SuppressedException:
AllowComments: true
Layout/LineContinuationLeadingSpace:
Enabled: false
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
Performance/CollectionLiteralInLoop:
MinSize: 4
Rails/ActionControllerFlashBeforeRender:
# False positive in actions where `redirect_to_referer_or` is used
Enabled: false
Rails/ActionControllerTestCase:
Enabled: false
Rails/ActionOrder:
Enabled: false
Rails/ActiveSupportOnLoad:
Exclude:
# TODO: Need to check the impact on plugins. Disable for now.
- 'lib/redmine/preparation.rb'
Rails/ApplicationRecord:
Exclude:
- 'db/migrate/0*.rb'
Rails/BulkChangeTable:
Exclude:
- 'db/migrate/20120714122200_add_workflows_rule_fields.rb'
- 'db/migrate/20131214094309_remove_custom_fields_min_max_length_default_values.rb'
Rails/CompactBlank:
Enabled: false
Rails/Delegate:
Enabled: false
Rails/EnvironmentVariableAccess:
Enabled: false
Rails/FilePath:
Enabled: false
Rails/FindEach:
Enabled: false
Rails/HelperInstanceVariable:
Enabled: false
Rails/Pluck:
Exclude:
# `pluck` is not available in Gemfile
- 'Gemfile'
Rails/RootPathnameMethods:
Enabled: false
Rails/SquishedSQLHeredocs:
Enabled: false
Rails/ThreeStateBooleanColumn:
Exclude:
- 'db/migrate/009_add_hide_mail_pref.rb'
- 'db/migrate/059_add_roles_assignable.rb'
- 'db/migrate/082_add_messages_locked.rb'
- 'db/migrate/086_add_custom_fields_searchable.rb'
- 'db/migrate/102_add_custom_fields_editable.rb'
- 'db/migrate/20120115143100_add_repositories_is_default.rb'
- 'db/migrate/20120127174243_add_custom_fields_multiple.rb'
- 'db/migrate/20210704125704_add_twofa_required_to_groups.rb'
Rails/WhereExists:
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:
Exclude:
- 'lib/redmine/string_array_diff/diff.rb'
- 'lib/redmine/string_array_diff/diffable.rb'
Style/BlockDelimiters:
Exclude:
- 'db/migrate/007_create_journals.rb'
- 'lib/redmine/string_array_diff/diff.rb'
- 'lib/redmine/string_array_diff/diffable.rb'
Style/FetchEnvVar:
Enabled: false
Style/EmptyElse:
EnforcedStyle: empty
Style/FormatString:
EnforcedStyle: sprintf
Style/FormatStringToken:
Enabled: false
Style/FrozenStringLiteralComment:
EnforcedStyle: always
Exclude:
- 'db/**/*.rb'
- 'Gemfile'
- 'Rakefile'
- 'config.ru'
- 'config/additional_environment.rb'
Style/GlobalStdStream:
Enabled: false
Style/HashSyntax:
EnforcedStyle: no_mixed_keys
Style/HashEachMethods:
Exclude:
- 'db/migrate/072_add_enumerations_position.rb'
- 'db/migrate/078_add_custom_fields_position.rb'
Style/IdenticalConditionalBranches:
Exclude:
- 'config/initializers/10-patches.rb'
- 'lib/redmine/wiki_formatting/textile/redcloth3.rb'
Style/InverseMethods:
Enabled: false
Style/NegatedIfElseCondition:
Enabled: false
Style/RaiseArgs:
Enabled: false
Style/RedundantConstantBase:
Exclude:
- 'config/environments/production.rb'
Style/RedundantParentheses:
Enabled: false
Style/Semicolon:
Enabled: false
Style/SlicingWithRange:
Enabled: false
Style/SoleNestedConditional:
Enabled: false
Style/StringLiteralsInInterpolation:
Enabled: false
Style/TernaryParentheses:
Enabled: false
Style/TrailingCommaInArrayLiteral:
Enabled: false
Style/TrailingCommaInHashLiteral:
Enabled: false
Style/YodaExpression:
Enabled: false