diff --git a/.gitignore b/.gitignore index 5700a5c81d..d1a1edf06f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /**/.DS_Store /coverage + +# Local cache of Rubocop remote config +.rubocop-* diff --git a/.rubocop.yml b/.rubocop.yml index 989edc3011..104b0677c1 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -7,483 +7,6 @@ # The linter file that doesn't lead junior developers to bad habits. # https://github.com/makersacademy/scaffolint # -# Problems (eg obselete names) may be due to an incompatible version. -# Check your Rubocop version with `rubocop -v` in the command line. -# -# Tested with Rubocop version 0.71.0 -# -# Introduction -# ============ -# -# Our order of priorities: -# -# 1. Conforming your code to the styleguide. -# 2. The styleguide being thorough and complete. -# -# This file relaxes Rubocop a bit so you can learn about code quality rather -# than just following the rules. Some guidelines can result in worse code if you -# don't know why they are there. For instance, if a line is too long, you might -# be tempted to simply abbreviate your variable names - making your code harder -# to read. -# -# We prioritize rules that offer good, easily incorporated feedback on improving -# your code, without being overwhelming or requiring experienced judgement. -# -# As you become a better developer you will remove or amend this file according -# to what you think good code should look like. -# -# Physical Code Size -# ================== -# -# Sometimes beginner devs interpret line or block length restrictions as a -# reason to make things so abbreviated as to be unreadable. These messages are -# designed to make you write more readable code - not less. -# -# We want to encourage testing, but it can be verbose in the early stages. -# So we'll give you a break. As you learn, try removing the next two sections. - -Metrics/LineLength: - Exclude: - - 'spec/**/*' - - 'test/**/*' - Max: 100 - -Metrics/BlockLength: - Exclude: - - 'spec/**/*' - - 'test/**/*' - -# Code Style -# ========== -# -# Many devs, upon running a linter for the first time, see a big wall of errors -# of dubious necessity and put it in the 'way too much trouble' box. Beginners -# usually have far more pressing concerns than which sort of quotes they use. -# -# This makes Rubocop have a bigger 'payoff' for beginners without so much of -# the punishment. We focus our linting on things that significantly impact -# readability, expressiveness, or teach a dev new things. For example: -# -# * Indentation & whitespace (inconsistency, really gross stuff like `a=1`) -# * Easy wins in expressiveness (e.g. guard clauses — nice opportunity to -# inject concretes) -# * Egregious non-idiomatic ruby like `def getFilename` - -IndentationConsistency: - Enabled: true -IndentationWidth: - Enabled: true -AccessorMethodName: - Enabled: true -BlockEndNewline: - Enabled: true -DefWithParentheses: - Enabled: true -EmptyLineBetweenDefs: - Enabled: true -EmptyLines: - Enabled: true -ExtraSpacing: - Enabled: true -GuardClause: - Enabled: true -IdenticalConditionalBranches: - Enabled: true -InverseMethods: - Enabled: true -LeadingCommentSpace: - Enabled: true -NegatedIf: - Enabled: true -NegatedWhile: - Enabled: true -NilComparison: - Enabled: true -Not: - Enabled: true -NumericLiterals: - Enabled: true -NumericPredicate: - Enabled: true -OneLineConditional: - Enabled: true -RedundantParentheses: - Enabled: true -RedundantSelf: - Enabled: true -Style/SafeNavigation: - Enabled: true -SelfAssignment: - Enabled: true -SpaceAfterColon: - Enabled: true -SpaceAfterComma: - Enabled: true -SpaceAfterMethodName: - Enabled: true -SpaceAfterNot: - Enabled: true -SpaceAfterSemicolon: - Enabled: true -SpaceAroundBlockParameters: - Enabled: true -SpaceAroundEqualsInParameterDefault: - Enabled: true -SpaceAroundKeyword: - Enabled: true -SpaceAroundOperators: - Enabled: true -SpaceBeforeBlockBraces: - Enabled: true -SpaceBeforeComma: - Enabled: true -SpaceBeforeComment: - Enabled: true -SpaceBeforeFirstArg: - Enabled: true -SpaceBeforeSemicolon: - Enabled: true -SpaceInLambdaLiteral: - Enabled: true -SpaceInsideArrayPercentLiteral: - Enabled: true -SpaceInsideBlockBraces: - Enabled: true -SpaceInsideReferenceBrackets: - Enabled: true -SpaceInsideArrayLiteralBrackets: - Enabled: true -SpaceInsideHashLiteralBraces: - Enabled: true -SpaceInsideParens: - Enabled: true -SpaceInsidePercentLiteralDelimiters: - Enabled: true -SpaceInsideRangeLiteral: - Enabled: true -SpaceInsideStringInterpolation: - Enabled: true -SymbolLiteral: - Enabled: true -TrailingBlankLines: - Enabled: true -TrivialAccessors: - Enabled: true - -# Rubocop doesn't make disabling all cops in a given group easy, so we list... -AccessModifierIndentation: - Enabled: false -Alias: - Enabled: false -AlignArray: - Enabled: false -AlignHash: - Enabled: false -AlignParameters: - Enabled: false -AndOr: - Enabled: false -ArrayJoin: - Enabled: false -AsciiComments: - Enabled: false -AsciiIdentifiers: - Enabled: false -Attr: - Enabled: false -AutoResourceCleanup: - Enabled: false -BarePercentLiterals: - Enabled: false -BeginBlock: - Enabled: false -BlockComments: - Enabled: false -BlockDelimiters: - Enabled: false -BracesAroundHashParameters: - Enabled: false -CaseEquality: - Enabled: false -CaseIndentation: - Enabled: false -CharacterLiteral: - Enabled: false -ClassAndModuleChildren: - Enabled: false -ClassCheck: - Enabled: false -ClassMethods: - Enabled: false -ClassVars: - Enabled: false -ClosingParenthesisIndentation: - Enabled: false -CollectionMethods: - Enabled: false -ColonMethodCall: - Enabled: false -CommandLiteral: - Enabled: false -CommentAnnotation: - Enabled: false -CommentIndentation: - Enabled: false -ConditionalAssignment: - Enabled: false -Copyright: - Enabled: false -Documentation: - Enabled: false -DocumentationMethod: - Enabled: false -DotPosition: - Enabled: false -DoubleNegation: - Enabled: false -EachForSimpleLoop: - Enabled: false -EachWithObject: - Enabled: false -ElseAlignment: - Enabled: false -EmptyCaseCondition: - Enabled: false -EmptyElse: - Enabled: false -EmptyLineAfterMagicComment: - Enabled: false -EmptyLinesAroundAccessModifier: - Enabled: false -EmptyLinesAroundBeginBody: - Enabled: false -EmptyLinesAroundBlockBody: - Enabled: false -EmptyLinesAroundClassBody: - Enabled: false -EmptyLinesAroundExceptionHandlingKeywords: - Enabled: false -EmptyLinesAroundMethodBody: - Enabled: false -EmptyLinesAroundModuleBody: - Enabled: false -EmptyLiteral: - Enabled: false -EmptyMethod: - Enabled: false -Encoding: - Enabled: false -EndBlock: - Enabled: false -EndOfLine: - Enabled: false -EvenOdd: - Enabled: false -FirstArrayElementLineBreak: - Enabled: false -FirstHashElementLineBreak: - Enabled: false -FirstMethodArgumentLineBreak: - Enabled: false -FirstMethodParameterLineBreak: - Enabled: false -Layout/IndentFirstArgument: - Enabled: false -FlipFlop: - Enabled: false -For: - Enabled: false -FormatString: - Enabled: false -FrozenStringLiteralComment: - Enabled: false -GlobalVars: - Enabled: false -HashSyntax: - Enabled: false -IfInsideElse: - Enabled: false -IfUnlessModifier: - Enabled: false -IfUnlessModifierOfIfUnless: - Enabled: false -IfWithSemicolon: - Enabled: false -ImplicitRuntimeError: - Enabled: false -IndentFirstArrayElement: - Enabled: false -IndentAssignment: - Enabled: false -IndentFirstHashElement: - Enabled: false -IndentHeredoc: - Enabled: false -InfiniteLoop: - Enabled: false -InitialIndentation: - Enabled: false -InlineComment: - Enabled: false -Lambda: - Enabled: false -LambdaCall: - Enabled: false -LineEndConcatenation: - Enabled: false -MethodCallWithArgsParentheses: - Enabled: false -MethodCallWithoutArgsParentheses: - Enabled: false -MethodCalledOnDoEndBlock: - Enabled: false -MethodDefParentheses: - Enabled: false -MethodMissingSuper: - Enabled: false -MissingRespondToMissing: - Enabled: false -MissingElse: - Enabled: false -MixinGrouping: - Enabled: false -ModuleFunction: - Enabled: false -MultilineArrayBraceLayout: - Enabled: false -MultilineAssignmentLayout: - Enabled: false -MultilineBlockChain: - Enabled: false -MultilineBlockLayout: - Enabled: false -MultilineHashBraceLayout: - Enabled: false -MultilineIfModifier: - Enabled: false -MultilineIfThen: - Enabled: false -MultilineMemoization: - Enabled: false -MultilineMethodCallBraceLayout: - Enabled: false -MultilineMethodCallIndentation: - Enabled: false -MultilineMethodDefinitionBraceLayout: - Enabled: false -MultilineOperationIndentation: - Enabled: false -MultilineTernaryOperator: - Enabled: false -MutableConstant: - Enabled: false -NestedModifier: - Enabled: false -NestedParenthesizedCalls: - Enabled: false -NestedTernaryOperator: - Enabled: false -Next: - Enabled: false -NonNilCheck: - Enabled: false -NumericLiteralPrefix: - Enabled: false -BinaryOperatorParameterName: - Enabled: false -OptionHash: - Enabled: false -OptionalArguments: - Enabled: false -ParallelAssignment: - Enabled: false -ParenthesesAroundCondition: - Enabled: false -PercentLiteralDelimiters: - Enabled: false -PercentQLiterals: - Enabled: false -PerlBackrefs: - Enabled: false -PreferredHashMethods: - Enabled: false -Proc: - Enabled: false -RaiseArgs: - Enabled: false -RedundantBegin: - Enabled: false -RedundantException: - Enabled: false -RedundantFreeze: - Enabled: false -RedundantReturn: - Enabled: false -RegexpLiteral: - Enabled: false -RescueEnsureAlignment: - Enabled: false -RescueModifier: - Enabled: false -Semicolon: - Enabled: false -Send: - Enabled: false -SignalException: - Enabled: false -SingleLineBlockParams: - Enabled: false -SingleLineMethods: - Enabled: false -SpecialGlobalVars: - Enabled: false -StabbyLambdaParentheses: - Enabled: false -StringLiterals: - Enabled: false -StringLiteralsInInterpolation: - Enabled: false -StringMethods: - Enabled: false -StructInheritance: - Enabled: false -SymbolArray: - Enabled: false -SymbolProc: - Enabled: false -Tab: - Enabled: false -TernaryParentheses: - Enabled: false -TrailingCommaInArguments: - Enabled: false -TrailingCommaInArrayLiteral: - Enabled: false -TrailingCommaInHashLiteral: - Enabled: false -TrailingUnderscoreVariable: - Enabled: false -TrailingWhitespace: - Enabled: false -UnlessElse: - Enabled: false -UnneededCapitalW: - Enabled: false -UnneededInterpolation: - Enabled: false -UnneededPercentQ: - Enabled: false -VariableInterpolation: - Enabled: false -VariableNumber: - Enabled: false -WhenThen: - Enabled: false -WhileUntilDo: - Enabled: false -WhileUntilModifier: - Enabled: false -WordArray: - Enabled: false -ZeroLengthPredicate: - Enabled: false +# Configure Rubocop to use the config file in the Scaffolint GitHub repo +inherit_from: + - https://raw.githubusercontent.com/makersacademy/scaffolint/v1.1.0/.rubocop.yml diff --git a/Gemfile b/Gemfile index 457f41207a..cb72219cb1 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' group :test do gem 'rspec' - gem 'rubocop', '0.71.0' + gem 'rubocop', '0.79.0' gem 'simplecov', require: false gem 'simplecov-console', require: false end diff --git a/Gemfile.lock b/Gemfile.lock index dcee570b03..899f09c4b9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,10 +5,10 @@ GEM ast (2.4.0) diff-lcs (1.3) docile (1.3.2) - jaro_winkler (1.5.3) + jaro_winkler (1.5.4) json (2.2.0) - parallel (1.18.0) - parser (2.6.5.0) + parallel (1.19.1) + parser (2.7.0.4) ast (~> 2.4.0) rainbow (3.0.0) rspec (3.9.0) @@ -24,10 +24,10 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.9.0) rspec-support (3.9.0) - rubocop (0.71.0) + rubocop (0.79.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) - parser (>= 2.6) + parser (>= 2.7.0.1) rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 1.7) @@ -50,7 +50,7 @@ PLATFORMS DEPENDENCIES rspec - rubocop (= 0.71.0) + rubocop (= 0.79.0) simplecov simplecov-console