inherit_from: .rubocop_todo.yml require: - rubocop-minitest - rubocop-rake AllCops: Exclude: - 'bin/**/*' - 'exe/**/*' - 'fixtures/**/*' - 'tmp/**/*' - 'vendor/**/*' DisplayCopNames: true Layout/ArgumentAlignment: EnforcedStyle: with_fixed_indentation # IndentationWidth: 2 # It's ok to have more than one empty line to create a 'paragrapth'. Layout/EmptyLines: Enabled: false # Extra space is fine. Layout/EmptyLinesAroundClassBody: Enabled: false # Extra space is fine. Layout/EmptyLinesAroundModuleBody: Enabled: false # Normally one line in between, but two allowed for "paragraphs". Layout/EmptyLineBetweenDefs: AllowAdjacentOneLineDefs: true NumberOfEmptyLines: [1, 2] # Rely on Git to normalize end of lines. Layout/EndOfLine: Enabled: false # Add lines as needed. Layout/EmptyLinesAroundBlockBody: Enabled: false Layout/LineLength: Exclude: - features/step_definitions/**/* Layout/ParameterAlignment: EnforcedStyle: with_fixed_indentation Naming/RescuedExceptionsVariableName: PreferredName: error Metrics/AbcSize: Enabled: false Exclude: - test/**/* Metrics/ClassLength: Exclude: - test/**/* # Too noisy. Metrics/CyclomaticComplexity: Enabled: false Metrics/MethodLength: Exclude: - test/**/* # Too noisy. Metrics/PerceivedComplexity: Enabled: false # Nah, sometimes easier to read with accessors having separate grouping. Style/AccessorGrouping: Enabled: false # Prefer { ... } over do ... end except for control flow and # method defintions. Unfortunatly, no cop configuration for this. # https://github.com/chneukirchen/styleguide/blob/e60de37b478d3f892f6985a58d573016f33f0269/RUBY-STYLE#L63-L67 Style/BlockDelimiters: EnforcedStyle: semantic Enabled: false # Generally prefer compact style to reduce indentation. But no hard rule. Style/ClassAndModuleChildren: EnforcedStyle: compact Enabled: false # This doesn't always read nicely. Style/ConditionalAssignment: Enabled: false # Nah, it's ok. Style/CommentedKeyword: Enabled: false # TODO(thomthom): Consider turning this back on. Style/Documentation: Enabled: false # Conflict too often with Metric/LineLength. # https://github.com/bbatsov/rubocop/issues/1332#issuecomment-277503854 Style/GuardClause: Enabled: false # In the context of the Thor DLS the rocket arrow => reads better. Style/HashSyntax: Exclude: - app/commands/**/* # Some times it reads clearer to not trail if/unless at the end. Style/IfUnlessModifier: Enabled: false Style/ModuleFunction: Enabled: false # Excluding some files that copies the Thor implementation. # TODO: Investigate if Thor changed their implementation. Style/OptionalBooleanParameter: Exclude: - lib/skippy/cli.rb - lib/skippy/command.rb # %w and %i etc isn't really intuitive unless you are really familiar with the # syntax. %w seems used often enough. But [:symbol, :foo] reads clearer than # %i(symbol foo). Style/SymbolArray: Enabled: False # Add trailing comma so it's easy to duplicate/add lines. Style/TrailingCommaInArrayLiteral: EnforcedStyleForMultiline: consistent_comma Style/TrailingCommaInHashLiteral: EnforcedStyleForMultiline: consistent_comma # Not testing computed values, but serialized values. # Ignoring floating point tolerance is fine (and wanted) in this case. Minitest/AssertInDelta: Enabled: false # Too many false positives. Minitest/AssertWithExpectedArgument: Enabled: false # No such thing as too many assertions. Minitest/MultipleAssertions: Enabled: false ################################################################################ # Enabling new cops: Gemspec/DateAssignment: # new in 1.10 Enabled: true Layout/LineEndStringConcatenationIndentation: # new in 1.18 Enabled: true Layout/SpaceBeforeBrackets: # new in 1.7 Enabled: true Lint/AmbiguousAssignment: # new in 1.7 Enabled: true Lint/AmbiguousOperatorPrecedence: # new in 1.21 Enabled: true Lint/AmbiguousRange: # new in 1.19 Enabled: true Lint/DeprecatedConstants: # new in 1.8 Enabled: true Lint/DuplicateBranch: # new in 1.3 Enabled: true Lint/DuplicateRegexpCharacterClassElement: # new in 1.1 Enabled: true Lint/EmptyBlock: # new in 1.1 Enabled: true Lint/EmptyClass: # new in 1.3 Enabled: true Lint/EmptyInPattern: # new in 1.16 Enabled: true Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21 Enabled: true Lint/LambdaWithoutLiteralBlock: # new in 1.8 Enabled: true Lint/NoReturnInBeginEndBlocks: # new in 1.2 Enabled: true Lint/NumberedParameterAssignment: # new in 1.9 Enabled: true Lint/OrAssignmentToConstant: # new in 1.9 Enabled: true Lint/RedundantDirGlobSort: # new in 1.8 Enabled: true Lint/RequireRelativeSelfPath: # new in 1.22 Enabled: true Lint/SymbolConversion: # new in 1.9 Enabled: true Lint/ToEnumArguments: # new in 1.1 Enabled: true Lint/TripleQuotes: # new in 1.9 Enabled: true Lint/UnexpectedBlockArity: # new in 1.5 Enabled: true Lint/UnmodifiedReduceAccumulator: # new in 1.1 Enabled: true Security/IoMethods: # new in 1.22 Enabled: true Style/ArgumentsForwarding: # new in 1.1 Enabled: true Style/CollectionCompact: # new in 1.2 Enabled: true Style/DocumentDynamicEvalDefinition: # new in 1.1 Enabled: true Style/EndlessMethod: # new in 1.8 Enabled: true Style/HashConversion: # new in 1.10 Enabled: true Style/HashExcept: # new in 1.7 Enabled: true Style/IfWithBooleanLiteralBranches: # new in 1.9 Enabled: true Style/InPatternThen: # new in 1.16 Enabled: true Style/MultilineInPatternThen: # new in 1.16 Enabled: true Style/NegatedIfElseCondition: # new in 1.2 Enabled: true Style/NilLambda: # new in 1.3 Enabled: true Style/NumberedParameters: # new in 1.22 Enabled: true Style/NumberedParametersLimit: # new in 1.22 Enabled: true Style/QuotedSymbols: # new in 1.16 Enabled: true Style/RedundantArgument: # new in 1.4 Enabled: true Style/RedundantSelfAssignmentBranch: # new in 1.19 Enabled: true Style/SelectByRegexp: # new in 1.22 Enabled: true Style/StringChars: # new in 1.12 Enabled: true Style/SwapValues: # new in 1.1 Enabled: true Minitest/AssertionInLifecycleHook: # new in 0.10 Enabled: true Minitest/AssertKindOf: # new in 0.10 Enabled: true Minitest/AssertOutput: # new in 0.10 Enabled: true Minitest/AssertPathExists: # new in 0.10 Enabled: true Minitest/AssertSilent: # new in 0.10 Enabled: true Minitest/LiteralAsActualArgument: # new in 0.10 Enabled: true Minitest/RefuteInDelta: # new in 0.10 Enabled: true Minitest/RefuteKindOf: # new in 0.10 Enabled: true Minitest/RefutePathExists: # new in 0.10 Enabled: true Minitest/TestMethodName: # new in 0.10 Enabled: true Minitest/UnreachableAssertion: # new in 0.14 Enabled: true Minitest/UnspecifiedException: # new in 0.10 Enabled: true