--- inherit_gem: rubocop-gem_dev: 'config/rubocop.yml' inherit_mode: merge: - Exclude require: - rubocop-md - rubocop-minitest - rubocop-performance - rubocop-rake AllCops: Exclude: - 'alba.gemspec' - 'benchmark/**/*.rb' - 'docs/**/*' - 'script/**/*.rb' NewCops: enable EnabledByDefault: true TargetRubyVersion: 3.0 Bundler/GemComment: Exclude: - 'benchmark/**/*' # Items in Gemfile is dev dependencies and we don't have to specify versions. Bundler/GemVersion: Enabled: false # Test class is a class, but not really Layout/ClassStructure: Exclude: - 'test/**/*' # LineLength 80 comes from restrictions in good old days. Layout/LineLength: Max: 160 # We'd like to write something like: # assert_equal( # expected, # actual # ) Layout/RedundantLineBreak: Exclude: - 'test/**/*' Layout/SpaceInsideHashLiteralBraces: EnforcedStyle: no_space Layout/MultilineAssignmentLayout: EnforcedStyle: same_line Lint/ConstantResolution: Enabled: false # In test code we don't care about the metrics! Metrics: Exclude: - 'test/**/*.rb' # `Resource` module is a core module and its length tends to be long... # `Alba` main module is also long because it has all parts of configuration Metrics/ClassLength: Exclude: - 'lib/alba/resource.rb' - 'lib/alba.rb' - 'test/**/*.rb' # Neec to specify this Metrics/ModuleLength: Exclude: - 'lib/alba/resource.rb' - 'lib/alba.rb' # Resource class includes DSLs, which tend to accept long list of parameters Metrics/ParameterLists: Max: 7 Exclude: - 'test/**/*.rb' # Putting extra empty line is not valuable in test # We prefer shorter test code Minitest/EmptyLineBeforeAssertionMethods: Enabled: false # By nature of that test Minitest/NoTestCases: Exclude: - 'test/dependencies/test_dependencies.rb' # We need to use `OpenStruct` to wrap object in ConfitionalAttribute Performance/OpenStruct: Exclude: - 'lib/alba/conditional_attribute.rb' # We need to eval resource code to test errors on resource classes Security/Eval: Exclude: - 'test/**/*.rb' Style/ConstantVisibility: Exclude: - 'lib/alba/version.rb' - 'test/**/*.rb' # Copyright is in README Style/Copyright: Enabled: false # I know what I do :) Style/DisableCopsWithinSourceCodeDirective: Enabled: false # Test files doesn't need to have documentation Style/Documentation: Exclude: - 'test/**/*' # In README it's so obvious Style/DocumentationMethod: Exclude: - 'README.md' # I don't want to think about error class in example code Style/ImplicitRuntimeError: Exclude: - 'README.md' # We use it, don't we? Style/InlineComment: Enabled: false Style/MethodCallWithArgsParentheses: AllowedMethods: ['require', 'require_relative', 'include', 'extend', 'puts', 'p', 'warn', 'raise', 'send', 'public_send', 'alias_method'] Exclude: # There are so many calls like `attributes` and `register_type` without parenthese and that's absolutely fine - 'test/**/*.rb' - 'README.md' # There are so many cases we just want `if` expression! Style/MissingElse: EnforcedStyle: case # We need to use `OpenStruct` to wrap object in ConfitionalAttribute Style/OpenStructUse: Exclude: - 'lib/alba/conditional_attribute.rb' # It's example code, please forgive us Style/OptionalBooleanParameter: Exclude: - 'README.md'