require: rubocop-performance AllCops: TargetRubyVersion: 2.7 # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop # to ignore them, so only the ones explicitly set in this file are enabled. DisabledByDefault: true Exclude: - "lib/install/templates/**" - "vendor/**/*" - "node_modules/**/*" - "_actions/**/*" # Prefer &&/|| over and/or. Style/AndOr: Enabled: true # Align `when` with `case`. Layout/CaseIndentation: Enabled: true # Align comments with method definitions. Layout/CommentIndentation: Enabled: true # No extra empty lines. Layout/EmptyLines: Enabled: true # In a regular class definition, no empty lines around the body. Layout/EmptyLinesAroundClassBody: Enabled: true # In a regular method definition, no empty lines around the body. Layout/EmptyLinesAroundMethodBody: Enabled: true # In a regular module definition, no empty lines around the body. Layout/EmptyLinesAroundModuleBody: Enabled: true # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }. Style/HashSyntax: Enabled: true # Method definitions after `private` or `protected` isolated calls need one # extra level of indentation. Layout/IndentationConsistency: Enabled: true EnforcedStyle: indented_internal_methods # Detect hard tabs, no hard tabs. Layout/IndentationStyle: Enabled: true # Two spaces, no tabs (for indentation). Layout/IndentationWidth: Enabled: true Layout/SpaceAfterColon: Enabled: true Layout/SpaceAfterComma: Enabled: true Layout/SpaceAroundEqualsInParameterDefault: Enabled: true Layout/SpaceAroundKeyword: Enabled: true Layout/SpaceAroundOperators: Enabled: true Layout/SpaceBeforeFirstArg: Enabled: true # Defining a method with parameters needs parentheses. Style/MethodDefParentheses: Enabled: true # Use `foo {}` not `foo{}`. Layout/SpaceBeforeBlockBraces: Enabled: true # Use `foo { bar }` not `foo {bar}`. Layout/SpaceInsideBlockBraces: Enabled: true # Use `{ a: 1 }` not `{a:1}`. Layout/SpaceInsideHashLiteralBraces: Enabled: true Layout/SpaceInsideParens: Enabled: true # Check quotes usage according to lint rule below. Style/StringLiterals: Enabled: true EnforcedStyle: double_quotes # Blank lines should not have any spaces. Layout/TrailingEmptyLines: Enabled: true # No trailing whitespace. Layout/TrailingWhitespace: Enabled: true # Use quotes for string literals when they are enough. Style/RedundantPercentQ: Enabled: true Lint/DeprecatedClassMethods: Enabled: true # Align `end` with the matching keyword or starting expression except for # assignments, where it should be aligned with the LHS. Layout/EndAlignment: Enabled: true EnforcedStyleAlignWith: variable # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg. Lint/RequireParentheses: Enabled: true # Use `bind_call(obj, args, ...)` instead of `bind(obj).call(args, ...)`. Performance/BindCall: Enabled: true # Use `caller(n..n)` instead of `caller`. Performance/Caller: Enabled: true # Use `casecmp` for case comparison. Performance/Casecmp: Enabled: true # Extract Array and Hash literals outside of loops into local variables or constants. Performance/CollectionLiteralInLoop: Enabled: true # Prefer `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`. Performance/CompareWithBlock: Enabled: true # Use `count` instead of `{select,find_all,filter,reject}...{size,count,length}`. Performance/Count: Enabled: true # Use `delete_prefix` instead of `gsub`. Performance/DeletePrefix: Enabled: true # Use `delete_suffix` instead of `gsub`. Performance/DeleteSuffix: Enabled: true # Use `detect` instead of `select.first`, `find_all.first`, `filter.first`, `select.last`, `find_all.last`, and `filter.last`. Performance/Detect: Enabled: true # Use `str.{start,end}_with?(x, ..., y, ...)` instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`. Performance/DoubleStartEndWith: Enabled: true # Use `end_with?` instead of a regex match anchored to the end of a string. Performance/EndWith: Enabled: true # Do not compute the size of statically sized objects except in constants. Performance/FixedSize: Enabled: true # Use `Enumerable#flat_map` instead of `Enumerable#map...Array#flatten(1). Performance/FlatMap: Enabled: true # Use `key?` or `value?` instead of `keys.include?` or `values.include?`. Performance/InefficientHashSearch: Enabled: true # Use `Range#cover?` instead of `Range#include?` (or `Range#member?`). Performance/RangeInclude: Enabled: true # Use `yield` instead of `block.call`. Performance/RedundantBlockCall: Enabled: true # Use `=~` instead of `String#match` or `Regexp#match` in a context where the returned `MatchData` is not needed. Performance/RedundantMatch: Enabled: true # Use Hash#[]=, rather than Hash#merge! with a single key-value pair. Performance/RedundantMerge: Enabled: true # Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`, `Regexp#===`, or `=~` when `MatchData` is not used. Performance/RegexpMatch: Enabled: true # Use `reverse_each` instead of `reverse.each`. Performance/ReverseEach: Enabled: true # Use `size` instead of `count` for counting the number of elements in `Array` and `Hash`. Performance/Size: Enabled: true # Use `start_with?` instead of a regex match anchored to the beginning of a string. Performance/StartWith: Enabled: true # Use `tr` instead of `gsub` when you are replacing the same number of characters. # Use `delete` instead of `gsub` when you are deleting characters. Performance/StringReplacement: Enabled: true # Checks for .times.map calls. Performance/TimesMap: Enabled: true # Use unary plus to get an unfrozen string literal. Performance/UnfreezeString: Enabled: true # Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`. Performance/UriDefaultParser: Enabled: true