diff --git a/.github/workflows/reviews.yml b/.github/workflows/reviews.yml new file mode 100644 index 00000000..5f58aff6 --- /dev/null +++ b/.github/workflows/reviews.yml @@ -0,0 +1,24 @@ +name: Code review +on: +- push +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + fetch-depth: 0 + - run: | + git fetch --no-tags --prune origin + - uses: borales/actions-yarn@v2.0.0 + with: + cmd: install + - uses: adwerx/pronto-ruby@v2.5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RUBOCOP_CONFIG: ./pronto/rubocop/rubocop.yml + YAMLLINT_OPTS: -c ./pronto/yamllint/yamllint.yml + with: + runners: >- + brakeman eslint_npm fasterer poper rails_best_practices rails_schema reek rubocop scss yamllint diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..78337ad0 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "pronto/rubocop"] + path = pronto/rubocop + url = git@github.com:rubyroidlabs/rubocop.git +[submodule "pronto/yamllint"] + path = pronto/yamllint + url = git@github.com:rubyroidlabs/yamllint.git diff --git a/.hound.yml b/.hound.yml deleted file mode 100644 index 04a71d79..00000000 --- a/.hound.yml +++ /dev/null @@ -1,4 +0,0 @@ -fail_on_violations: true - -ruby: - config_file: rubocop/rubocop.yml diff --git a/pronto/rubocop b/pronto/rubocop new file mode 160000 index 00000000..23a55bf8 --- /dev/null +++ b/pronto/rubocop @@ -0,0 +1 @@ +Subproject commit 23a55bf888478bcc11c376f9fbb9273e9273e674 diff --git a/pronto/yamllint b/pronto/yamllint new file mode 160000 index 00000000..9751e30b --- /dev/null +++ b/pronto/yamllint @@ -0,0 +1 @@ +Subproject commit 9751e30b0d2a48d59782229fc736c1edabe78a2d diff --git a/rubocop/disabled.yml b/rubocop/disabled.yml deleted file mode 100644 index f2534395..00000000 --- a/rubocop/disabled.yml +++ /dev/null @@ -1,10 +0,0 @@ -Style/FrozenStringLiteralComment: - Description: >- - Add the frozen_string_literal comment to the top of files - to help transition from Ruby 2.3.0 to Ruby 3.0. - Enabled: false - -Metrics/LineLength: - Description: 'Limit lines to 80 characters.' - StyleGuide: '#80-character-limits' - Enabled: false diff --git a/rubocop/enabled.yml b/rubocop/enabled.yml deleted file mode 100644 index f6df6863..00000000 --- a/rubocop/enabled.yml +++ /dev/null @@ -1,1864 +0,0 @@ -# These are all the cops that are enabled in the default configuration. - -#################### Layout ############################### - -Layout/AccessModifierIndentation: - Description: Check indentation of private/protected visibility modifiers. - StyleGuide: '#indent-public-private-protected' - Enabled: true - -Layout/AlignArray: - Description: >- - Align the elements of an array literal if they span more than - one line. - StyleGuide: '#align-multiline-arrays' - Enabled: true - -Layout/AlignHash: - Description: >- - Align the elements of a hash literal if they span more than - one line. - Enabled: true - -Layout/AlignParameters: - Description: >- - Align the parameters of a method call if they span more - than one line. - StyleGuide: '#no-double-indent' - Enabled: true - -Layout/BlockEndNewline: - Description: 'Put end statement of multiline block on its own line.' - Enabled: true - -Layout/CaseIndentation: - Description: 'Indentation of when in a case/when/[else/]end.' - StyleGuide: '#indent-when-to-case' - Enabled: true - -Layout/ClosingParenthesisIndentation: - Description: 'Checks the indentation of hanging closing parentheses.' - Enabled: true - -Layout/CommentIndentation: - Description: 'Indentation of comments.' - Enabled: true - -Layout/DotPosition: - Description: 'Checks the position of the dot in multi-line method calls.' - StyleGuide: '#consistent-multi-line-chains' - Enabled: true - -Layout/ElseAlignment: - Description: 'Align elses and elsifs correctly.' - Enabled: true - -Layout/EmptyLineBetweenDefs: - Description: 'Use empty lines between defs.' - StyleGuide: '#empty-lines-between-methods' - Enabled: true - -Layout/EmptyLines: - Description: "Don't use several empty lines in a row." - StyleGuide: '#two-or-more-empty-lines' - Enabled: true - -Layout/EmptyLinesAroundAccessModifier: - Description: "Keep blank lines around access modifiers." - StyleGuide: '#empty-lines-around-access-modifier' - Enabled: true - -Layout/EmptyLinesAroundBeginBody: - Description: "Keeps track of empty lines around begin-end bodies." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EmptyLinesAroundBlockBody: - Description: "Keeps track of empty lines around block bodies." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EmptyLinesAroundClassBody: - Description: "Keeps track of empty lines around class bodies." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EmptyLinesAroundExceptionHandlingKeywords: - Description: "Keeps track of empty lines around exception handling keywords." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EmptyLinesAroundModuleBody: - Description: "Keeps track of empty lines around module bodies." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EmptyLinesAroundMethodBody: - Description: "Keeps track of empty lines around method bodies." - StyleGuide: '#empty-lines-around-bodies' - Enabled: true - -Layout/EndOfLine: - Description: 'Use Unix-style line endings.' - StyleGuide: '#crlf' - Enabled: true - -Layout/ExtraSpacing: - Description: 'Do not use unnecessary spacing.' - Enabled: true - -Layout/InitialIndentation: - Description: >- - Checks the indentation of the first non-blank non-comment line in a file. - Enabled: true - -Layout/FirstParameterIndentation: - Description: 'Checks the indentation of the first parameter in a method call.' - Enabled: true - -Layout/IndentationConsistency: - Description: 'Keep indentation straight.' - StyleGuide: '#spaces-indentation' - Enabled: true - -Layout/IndentationWidth: - Description: 'Use 2 spaces for indentation.' - StyleGuide: '#spaces-indentation' - Enabled: true - -Layout/IndentArray: - Description: >- - Checks the indentation of the first element in an array - literal. - Enabled: true - -Layout/IndentAssignment: - Description: >- - Checks the indentation of the first line of the - right-hand-side of a multi-line assignment. - Enabled: true - -Layout/IndentHash: - Description: 'Checks the indentation of the first key in a hash literal.' - Enabled: true - -Layout/IndentHeredoc: - Description: 'This cops checks the indentation of the here document bodies.' - StyleGuide: '#squiggly-heredocs' - Enabled: true - -Layout/SpaceInLambdaLiteral: - Description: 'Checks for spaces in lambda literals.' - Enabled: true - -Layout/LeadingCommentSpace: - Description: 'Comments should start with a space.' - StyleGuide: '#hash-space' - Enabled: true - -Layout/MultilineArrayBraceLayout: - Description: >- - Checks that the closing brace in an array literal is - either on the same line as the last array element, or - a new line. - Enabled: true - -Layout/MultilineBlockLayout: - Description: 'Ensures newlines after multiline block do statements.' - Enabled: true - -Layout/MultilineHashBraceLayout: - Description: >- - Checks that the closing brace in a hash literal is - either on the same line as the last hash element, or - a new line. - Enabled: true - -Layout/MultilineMethodCallBraceLayout: - Description: >- - Checks that the closing brace in a method call is - either on the same line as the last method argument, or - a new line. - Enabled: true - -Layout/MultilineMethodCallIndentation: - Description: >- - Checks indentation of method calls with the dot operator - that span more than one line. - Enabled: true - -Layout/MultilineMethodDefinitionBraceLayout: - Description: >- - Checks that the closing brace in a method definition is - either on the same line as the last method parameter, or - a new line. - Enabled: true - -Layout/MultilineOperationIndentation: - Description: >- - Checks indentation of binary operations that span more than - one line. - Enabled: true - -Layout/EmptyLineAfterMagicComment: - Description: 'Add an empty line after magic comments to separate them from code.' - StyleGuide: '#separate-magic-comments-from-code' - Enabled: true - -Layout/RescueEnsureAlignment: - Description: 'Align rescues and ensures correctly.' - Enabled: true - -Layout/SpaceBeforeFirstArg: - Description: >- - Checks that exactly one space is used between a method name - and the first argument for method calls without parentheses. - Enabled: true - -Layout/SpaceAfterColon: - Description: 'Use spaces after colons.' - StyleGuide: '#spaces-operators' - Enabled: true - -Layout/SpaceAfterComma: - Description: 'Use spaces after commas.' - StyleGuide: '#spaces-operators' - Enabled: true - -Layout/SpaceAfterMethodName: - Description: >- - Do not put a space between a method name and the opening - parenthesis in a method definition. - StyleGuide: '#parens-no-spaces' - Enabled: true - -Layout/SpaceAfterNot: - Description: Tracks redundant space after the ! operator. - StyleGuide: '#no-space-bang' - Enabled: true - -Layout/SpaceAfterSemicolon: - Description: 'Use spaces after semicolons.' - StyleGuide: '#spaces-operators' - Enabled: true - -Layout/SpaceBeforeBlockBraces: - Description: >- - Checks that the left block brace has or doesn't have space - before it. - Enabled: true - -Layout/SpaceBeforeComma: - Description: 'No spaces before commas.' - Enabled: true - -Layout/SpaceBeforeComment: - Description: >- - Checks for missing space between code and a comment on the - same line. - Enabled: true - -Layout/SpaceBeforeSemicolon: - Description: 'No spaces before semicolons.' - Enabled: true - -Layout/SpaceInsideBlockBraces: - Description: >- - Checks that block braces have or don't have surrounding space. - For blocks taking parameters, checks that the left brace has - or doesn't have trailing space. - Enabled: true - -Layout/SpaceAroundBlockParameters: - Description: 'Checks the spacing inside and after block parameters pipes.' - Enabled: true - -Layout/SpaceAroundEqualsInParameterDefault: - Description: >- - Checks that the equals signs in parameter default assignments - have or don't have surrounding space depending on - configuration. - StyleGuide: '#spaces-around-equals' - Enabled: true - -Layout/SpaceAroundKeyword: - Description: 'Use a space around keywords if appropriate.' - Enabled: true - -Layout/SpaceAroundOperators: - Description: 'Use a single space around operators.' - StyleGuide: '#spaces-operators' - Enabled: true - -Layout/SpaceInsideArrayPercentLiteral: - Description: 'No unnecessary additional spaces between elements in %i/%w literals.' - Enabled: true - -Layout/SpaceInsidePercentLiteralDelimiters: - Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.' - Enabled: true - -Layout/SpaceInsideBrackets: - Description: 'No spaces after [ or before ].' - StyleGuide: '#no-spaces-braces' - Enabled: true - -Layout/SpaceInsideHashLiteralBraces: - Description: "Use spaces inside hash literal braces - or don't." - StyleGuide: '#spaces-operators' - Enabled: true - -Layout/SpaceInsideParens: - Description: 'No spaces after ( or before ).' - StyleGuide: '#no-spaces-braces' - Enabled: true - -Layout/SpaceInsideRangeLiteral: - Description: 'No spaces inside range literals.' - StyleGuide: '#no-space-inside-range-literals' - Enabled: true - -Layout/SpaceInsideStringInterpolation: - Description: 'Checks for padding/surrounding spaces inside string interpolation.' - StyleGuide: '#string-interpolation' - Enabled: true - -Layout/Tab: - Description: 'No hard tabs.' - StyleGuide: '#spaces-indentation' - Enabled: true - -Layout/TrailingBlankLines: - Description: 'Checks trailing blank lines and final newline.' - StyleGuide: '#newline-eof' - Enabled: true - -Layout/TrailingWhitespace: - Description: 'Avoid trailing whitespace.' - StyleGuide: '#no-trailing-whitespace' - Enabled: true - -Layout/BlockAlignment: - Description: 'Align block ends correctly.' - Enabled: true - -Layout/DefEndAlignment: - Description: 'Align ends corresponding to defs correctly.' - Enabled: true - -Layout/EndAlignment: - Description: 'Align ends correctly.' - Enabled: true - -#################### Naming ############################## - -Naming/AccessorMethodName: - Description: Check the naming of accessor methods for get_/set_. - StyleGuide: '#accessor_mutator_method_names' - Enabled: true - -Naming/AsciiIdentifiers: - Description: 'Use only ascii symbols in identifiers.' - StyleGuide: '#english-identifiers' - Enabled: true - -Naming/ClassAndModuleCamelCase: - Description: 'Use CamelCase for classes and modules.' - StyleGuide: '#camelcase-classes' - Enabled: true - -Naming/ConstantName: - Description: 'Constants should use SCREAMING_SNAKE_CASE.' - StyleGuide: '#screaming-snake-case' - Enabled: true - -Naming/FileName: - Description: 'Use snake_case for source file names.' - StyleGuide: '#snake-case-files' - Enabled: true - -Naming/HeredocDelimiterCase: - Description: 'Use configured case for heredoc delimiters.' - StyleGuide: '#heredoc-delimiters' - Enabled: true - -Naming/HeredocDelimiterNaming: - Description: 'Use descriptive heredoc delimiters.' - StyleGuide: '#heredoc-delimiters' - Enabled: true - -Naming/MethodName: - Description: 'Use the configured style when naming methods.' - StyleGuide: '#snake-case-symbols-methods-vars' - Enabled: true - -Naming/PredicateName: - Description: 'Check the names of predicate methods.' - StyleGuide: '#bool-methods-qmark' - Enabled: true - -Naming/BinaryOperatorParameterName: - Description: 'When defining binary operators, name the argument other.' - StyleGuide: '#other-arg' - Enabled: true - -Naming/VariableName: - Description: 'Use the configured style when naming variables.' - StyleGuide: '#snake-case-symbols-methods-vars' - Enabled: true - -Naming/VariableNumber: - Description: 'Use the configured style when numbering variables.' - Enabled: true - -#################### Style ############################### - -Style/Alias: - Description: 'Use alias instead of alias_method.' - StyleGuide: '#alias-method' - Enabled: true - -Style/AndOr: - Description: 'Use &&/|| instead of and/or.' - StyleGuide: '#no-and-or-or' - Enabled: true - -Style/ArrayJoin: - Description: 'Use Array#join instead of Array#*.' - StyleGuide: '#array-join' - Enabled: true - -Style/AsciiComments: - Description: 'Use only ascii symbols in comments.' - StyleGuide: '#english-comments' - Enabled: true - -Style/Attr: - Description: 'Checks for uses of Module#attr.' - StyleGuide: '#attr' - Enabled: true - -Style/BeginBlock: - Description: 'Avoid the use of BEGIN blocks.' - StyleGuide: '#no-BEGIN-blocks' - Enabled: true - -Style/BarePercentLiterals: - Description: 'Checks if usage of %() or %Q() matches configuration.' - StyleGuide: '#percent-q-shorthand' - Enabled: true - -Style/BlockComments: - Description: 'Do not use block comments.' - StyleGuide: '#no-block-comments' - Enabled: true - -Style/BlockDelimiters: - Description: >- - Avoid using {...} for multi-line blocks (multiline chaining is - always ugly). - Prefer {...} over do...end for single-line blocks. - StyleGuide: '#single-line-blocks' - Enabled: true - -Style/BracesAroundHashParameters: - Description: 'Enforce braces style around hash parameters.' - Enabled: true - -Style/CaseEquality: - Description: 'Avoid explicit use of the case equality operator(===).' - StyleGuide: '#no-case-equality' - Enabled: true - -Style/CharacterLiteral: - Description: 'Checks for uses of character literals.' - StyleGuide: '#no-character-literals' - Enabled: true - -Style/ClassAndModuleChildren: - Description: 'Checks style of children classes and modules.' - StyleGuide: '#namespace-definition' - Enabled: true - -Style/ClassCheck: - Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.' - Enabled: true - -Style/ClassMethods: - Description: 'Use self when defining module/class methods.' - StyleGuide: '#def-self-class-methods' - Enabled: true - -Style/ClassVars: - Description: 'Avoid the use of class variables.' - StyleGuide: '#no-class-vars' - Enabled: true - -Style/ColonMethodCall: - Description: 'Do not use :: for method call.' - StyleGuide: '#double-colons' - Enabled: true - -Style/CommandLiteral: - Description: 'Use `` or %x around command literals.' - StyleGuide: '#percent-x' - Enabled: true - -Style/CommentAnnotation: - Description: >- - Checks formatting of special comments - (TODO, FIXME, OPTIMIZE, HACK, REVIEW). - StyleGuide: '#annotate-keywords' - Enabled: true - -Style/CommentedKeyword: - Description: 'Do not place comments on the same line as certain keywords.' - Enabled: true - -Style/ConditionalAssignment: - Description: >- - Use the return value of `if` and `case` statements for - assignment to a variable and variable comparison instead - of assigning that variable inside of each branch. - Enabled: true - -Style/DefWithParentheses: - Description: 'Use def with parentheses when there are arguments.' - StyleGuide: '#method-parens' - Enabled: true - -Style/Dir: - Description: >- - Use the `__dir__` method to retrieve the canonicalized - absolute path to the current file. - Enabled: true - -Style/Documentation: - Description: 'Document classes and non-namespace modules.' - Enabled: true - Exclude: - - 'spec/**/*' - - 'test/**/*' - -Style/DoubleNegation: - Description: 'Checks for uses of double negation (!!).' - StyleGuide: '#no-bang-bang' - Enabled: true - -Style/EachForSimpleLoop: - Description: >- - Use `Integer#times` for a simple loop which iterates a fixed - number of times. - Enabled: true - -Style/EachWithObject: - Description: 'Prefer `each_with_object` over `inject` or `reduce`.' - Enabled: true - -Style/EmptyElse: - Description: 'Avoid empty else-clauses.' - Enabled: true - -Style/EmptyCaseCondition: - Description: 'Avoid empty condition in case statements.' - Enabled: true - -Style/EmptyLiteral: - Description: 'Prefer literals to Array.new/Hash.new/String.new.' - StyleGuide: '#literal-array-hash' - Enabled: true - -Style/EmptyMethod: - Description: 'Checks the formatting of empty method definitions.' - StyleGuide: '#no-single-line-methods' - Enabled: true - -Style/EndBlock: - Description: 'Avoid the use of END blocks.' - StyleGuide: '#no-END-blocks' - Enabled: true - -Style/Encoding: - Description: 'Use UTF-8 as the source file encoding.' - StyleGuide: '#utf-8' - Enabled: true - -Style/EvenOdd: - Description: 'Favor the use of Integer#even? && Integer#odd?' - StyleGuide: '#predicate-methods' - Enabled: true - -Style/FlipFlop: - Description: 'Checks for flip flops' - StyleGuide: '#no-flip-flops' - Enabled: true - -Style/For: - Description: 'Checks use of for or each in multiline loops.' - StyleGuide: '#no-for-loops' - Enabled: true - -Style/FormatString: - Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.' - StyleGuide: '#sprintf' - Enabled: true - -Style/FormatStringToken: - Description: 'Use a consistent style for format string tokens.' - Enabled: true - -Style/GlobalVars: - Description: 'Do not introduce global variables.' - StyleGuide: '#instance-vars' - Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html' - Enabled: true - -Style/GuardClause: - Description: 'Check for conditionals that can be replaced with guard clauses' - StyleGuide: '#no-nested-conditionals' - Enabled: true - -Style/HashSyntax: - Description: >- - Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax - { :a => 1, :b => 2 }. - StyleGuide: '#hash-literals' - Enabled: true - -Style/IfInsideElse: - Description: 'Finds if nodes inside else, which can be converted to elsif.' - Enabled: true - -Style/IfUnlessModifier: - Description: >- - Favor modifier if/unless usage when you have a - single-line body. - StyleGuide: '#if-as-a-modifier' - Enabled: true - -Style/IfUnlessModifierOfIfUnless: - Description: >- - Avoid modifier if/unless usage on conditionals. - Enabled: true - -Style/IfWithSemicolon: - Description: 'Do not use if x; .... Use the ternary operator instead.' - StyleGuide: '#no-semicolon-ifs' - Enabled: true - -Style/IdenticalConditionalBranches: - Description: >- - Checks that conditional statements do not have an identical - line at the end of each branch, which can validly be moved - out of the conditional. - Enabled: true - -Style/InfiniteLoop: - Description: 'Use Kernel#loop for infinite loops.' - StyleGuide: '#infinite-loop' - Enabled: true - -Style/InverseMethods: - Description: >- - Use the inverse method instead of `!.method` - if an inverse method is defined. - Enabled: true - -Style/Lambda: - Description: 'Use the new lambda literal syntax for single-line blocks.' - StyleGuide: '#lambda-multi-line' - Enabled: true - -Style/LambdaCall: - Description: 'Use lambda.call(...) instead of lambda.(...).' - StyleGuide: '#proc-call' - Enabled: true - -Style/LineEndConcatenation: - Description: >- - Use \ instead of + or << to concatenate two string literals at - line end. - Enabled: true - -Style/MethodCallWithoutArgsParentheses: - Description: 'Do not use parentheses for method calls with no arguments.' - StyleGuide: '#method-invocation-parens' - Enabled: true - -Style/MethodDefParentheses: - Description: >- - Checks if the method definitions have or don't have - parentheses. - StyleGuide: '#method-parens' - Enabled: true - -Style/MethodMissing: - Description: 'Avoid using `method_missing`.' - StyleGuide: '#no-method-missing' - Enabled: true - -Style/MinMax: - Description: >- - Use `Enumerable#minmax` instead of `Enumerable#min` - and `Enumerable#max` in conjunction.' - Enabled: true - -Style/MixinGrouping: - Description: 'Checks for grouping of mixins in `class` and `module` bodies.' - StyleGuide: '#mixin-grouping' - Enabled: true - -Style/ModuleFunction: - Description: 'Checks for usage of `extend self` in modules.' - StyleGuide: '#module-function' - Enabled: true - -Style/MultilineBlockChain: - Description: 'Avoid multi-line chains of blocks.' - StyleGuide: '#single-line-blocks' - Enabled: true - -Style/MultilineIfThen: - Description: 'Do not use then for multi-line if/unless.' - StyleGuide: '#no-then' - Enabled: true - -Style/MultilineIfModifier: - Description: 'Only use if/unless modifiers on single line statements.' - StyleGuide: '#no-multiline-if-modifiers' - Enabled: true - -Style/MultilineMemoization: - Description: 'Wrap multiline memoizations in a `begin` and `end` block.' - Enabled: true - -Style/MultilineTernaryOperator: - Description: >- - Avoid multi-line ?: (the ternary operator); - use if/unless instead. - StyleGuide: '#no-multiline-ternary' - Enabled: true - -Style/MultipleComparison: - Description: >- - Avoid comparing a variable with multiple items in a conditional, - use Array#include? instead. - Enabled: true - -Style/MutableConstant: - Description: 'Do not assign mutable objects to constants.' - Enabled: true - -Style/NegatedIf: - Description: >- - Favor unless over if for negative conditions - (or control flow or). - StyleGuide: '#unless-for-negatives' - Enabled: true - -Style/NegatedWhile: - Description: 'Favor until over while for negative conditions.' - StyleGuide: '#until-for-negatives' - Enabled: true - -Style/NestedModifier: - Description: 'Avoid using nested modifiers.' - StyleGuide: '#no-nested-modifiers' - Enabled: true - -Style/NestedParenthesizedCalls: - Description: >- - Parenthesize method calls which are nested inside the - argument list of another parenthesized method call. - Enabled: true - -Style/NestedTernaryOperator: - Description: 'Use one expression per branch in a ternary operator.' - StyleGuide: '#no-nested-ternary' - Enabled: true - -Style/Next: - Description: 'Use `next` to skip iteration instead of a condition at the end.' - StyleGuide: '#no-nested-conditionals' - Enabled: true - -Style/NilComparison: - Description: 'Prefer x.nil? to x == nil.' - StyleGuide: '#predicate-methods' - Enabled: true - -Style/NonNilCheck: - Description: 'Checks for redundant nil checks.' - StyleGuide: '#no-non-nil-checks' - Enabled: true - -Style/Not: - Description: 'Use ! instead of not.' - StyleGuide: '#bang-not-not' - Enabled: true - -Style/NumericLiterals: - Description: >- - Add underscores to large numeric literals to improve their - readability. - StyleGuide: '#underscores-in-numerics' - Enabled: true - -Style/NumericLiteralPrefix: - Description: 'Use smallcase prefixes for numeric literals.' - StyleGuide: '#numeric-literal-prefixes' - Enabled: true - -Style/NumericPredicate: - Description: >- - Checks for the use of predicate- or comparison methods for - numeric comparisons. - StyleGuide: '#predicate-methods' - # This will change to a new method call which isn't guaranteed to be on the - # object. Switching these methods has to be done with knowledge of the types - # of the variables which rubocop doesn't have. - AutoCorrect: false - Enabled: true - -Style/OneLineConditional: - Description: >- - Favor the ternary operator(?:) over - if/then/else/end constructs. - StyleGuide: '#ternary-operator' - Enabled: true - -Style/OptionalArguments: - Description: >- - Checks for optional arguments that do not appear at the end - of the argument list - StyleGuide: '#optional-arguments' - Enabled: true - -Style/OrAssignment: - Description: 'Recommend usage of double pipe equals (||=) where applicable.' - StyleGuide: '#double-pipe-for-uninit' - Enabled: true - -Style/ParallelAssignment: - Description: >- - Check for simple usages of parallel assignment. - It will only warn when the number of variables - matches on both sides of the assignment. - StyleGuide: '#parallel-assignment' - Enabled: true - -Style/ParenthesesAroundCondition: - Description: >- - Don't use parentheses around the condition of an - if/unless/while. - StyleGuide: '#no-parens-around-condition' - Enabled: true - -Style/PercentLiteralDelimiters: - Description: 'Use `%`-literal delimiters consistently' - StyleGuide: '#percent-literal-braces' - Enabled: true - -Style/PercentQLiterals: - Description: 'Checks if uses of %Q/%q match the configured preference.' - Enabled: true - -Style/PerlBackrefs: - Description: 'Avoid Perl-style regex back references.' - StyleGuide: '#no-perl-regexp-last-matchers' - Enabled: true - -Style/PreferredHashMethods: - Description: 'Checks use of `has_key?` and `has_value?` Hash methods.' - StyleGuide: '#hash-key' - Enabled: true - -Style/Proc: - Description: 'Use proc instead of Proc.new.' - StyleGuide: '#proc' - Enabled: true - -Style/RaiseArgs: - Description: 'Checks the arguments passed to raise/fail.' - StyleGuide: '#exception-class-messages' - Enabled: true - -Style/RedundantBegin: - Description: "Don't use begin blocks when they are not needed." - StyleGuide: '#begin-implicit' - Enabled: true - -Style/RedundantConditional: - Description: "Don't return true/false from a conditional." - Enabled: true - -Style/RedundantException: - Description: "Checks for an obsolete RuntimeException argument in raise/fail." - StyleGuide: '#no-explicit-runtimeerror' - Enabled: true - -Style/RedundantFreeze: - Description: "Checks usages of Object#freeze on immutable objects." - Enabled: true - -Style/RedundantParentheses: - Description: "Checks for parentheses that seem not to serve any purpose." - Enabled: true - -Style/RedundantReturn: - Description: "Don't use return where it's not required." - StyleGuide: '#no-explicit-return' - Enabled: true - -Style/RedundantSelf: - Description: "Don't use self where it's not needed." - StyleGuide: '#no-self-unless-required' - Enabled: true - -Style/RegexpLiteral: - Description: 'Use / or %r around regular expressions.' - StyleGuide: '#percent-r' - Enabled: true - -Style/RescueModifier: - Description: 'Avoid using rescue in its modifier form.' - StyleGuide: '#no-rescue-modifiers' - Enabled: true - -Style/SafeNavigation: - Description: >- - This cop transforms usages of a method call safeguarded by - a check for the existance of the object to - safe navigation (`&.`). - Enabled: true - -Style/SelfAssignment: - Description: >- - Checks for places where self-assignment shorthand should have - been used. - StyleGuide: '#self-assignment' - Enabled: true - -Style/Semicolon: - Description: "Don't use semicolons to terminate expressions." - StyleGuide: '#no-semicolon' - Enabled: true - -Style/SignalException: - Description: 'Checks for proper usage of fail and raise.' - StyleGuide: '#prefer-raise-over-fail' - Enabled: true - -Style/SingleLineMethods: - Description: 'Avoid single-line methods.' - StyleGuide: '#no-single-line-methods' - Enabled: true - -Style/SpecialGlobalVars: - Description: 'Avoid Perl-style global variables.' - StyleGuide: '#no-cryptic-perlisms' - Enabled: true - -Style/StabbyLambdaParentheses: - Description: 'Check for the usage of parentheses around stabby lambda arguments.' - StyleGuide: '#stabby-lambda-with-args' - Enabled: true - -Style/StderrPuts: - Description: 'Use `warn` instead of `$stderr.puts`.' - StyleGuide: '#warn' - Enabled: true - -Style/StringLiterals: - Description: 'Checks if uses of quotes match the configured preference.' - StyleGuide: '#consistent-string-literals' - Enabled: true - -Style/StringLiteralsInInterpolation: - Description: >- - Checks if uses of quotes inside expressions in interpolated - strings match the configured preference. - Enabled: true - -Style/StructInheritance: - Description: 'Checks for inheritance from Struct.new.' - StyleGuide: '#no-extend-struct-new' - Enabled: true - -Style/SymbolArray: - Description: 'Use %i or %I for arrays of symbols.' - StyleGuide: '#percent-i' - Enabled: true - -Style/SymbolLiteral: - Description: 'Use plain symbols instead of string symbols when possible.' - Enabled: true - -Style/SymbolProc: - Description: 'Use symbols as procs instead of blocks when possible.' - Enabled: true - -Style/TernaryParentheses: - Description: 'Checks for use of parentheses around ternary conditions.' - Enabled: true - -Style/TrailingCommaInArguments: - Description: 'Checks for trailing comma in argument lists.' - StyleGuide: '#no-trailing-params-comma' - Enabled: true - -Style/TrailingCommaInArrayLiteral: - Description: 'Checks for trailing comma in array literals.' - StyleGuide: '#no-trailing-array-commas' - Enabled: true - -Style/TrailingCommaInHashLiteral: - Description: 'Checks for trailing comma in hash literals.' - Enabled: true - -Style/TrivialAccessors: - Description: 'Prefer attr_* methods to trivial readers/writers.' - StyleGuide: '#attr_family' - Enabled: true - -Style/UnlessElse: - Description: >- - Do not use unless with else. Rewrite these with the positive - case first. - StyleGuide: '#no-else-with-unless' - Enabled: true - -Style/UnneededCapitalW: - Description: 'Checks for %W when interpolation is not needed.' - Enabled: true - -Style/UnneededInterpolation: - Description: 'Checks for strings that are just an interpolated expression.' - Enabled: true - -Style/UnneededPercentQ: - Description: 'Checks for %q/%Q when single quotes or double quotes would do.' - StyleGuide: '#percent-q' - Enabled: true - -Style/TrailingUnderscoreVariable: - Description: >- - Checks for the usage of unneeded trailing underscores at the - end of parallel variable assignment. - AllowNamedUnderscoreVariables: true - Enabled: true - -Style/VariableInterpolation: - Description: >- - Don't interpolate global, instance and class variables - directly in strings. - StyleGuide: '#curlies-interpolate' - Enabled: true - -Style/WhenThen: - Description: 'Use when x then ... for one-line cases.' - StyleGuide: '#one-line-cases' - Enabled: true - -Style/WhileUntilDo: - Description: 'Checks for redundant do after while or until.' - StyleGuide: '#no-multiline-while-do' - Enabled: true - -Style/WhileUntilModifier: - Description: >- - Favor modifier while/until usage when you have a - single-line body. - StyleGuide: '#while-as-a-modifier' - Enabled: true - -Style/WordArray: - Description: 'Use %w or %W for arrays of words.' - StyleGuide: '#percent-w' - Enabled: true - -Style/YodaCondition: - Description: 'Do not use literals as the first operand of a comparison.' - Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions' - Enabled: true - -Style/ZeroLengthPredicate: - Description: 'Use #empty? when testing for objects of length 0.' - Enabled: true - -#################### Metrics ############################### - -Metrics/AbcSize: - Description: >- - A calculated magnitude based on number of assignments, - branches, and conditions. - Reference: 'http://c2.com/cgi/wiki?AbcMetric' - Enabled: true - -Metrics/BlockNesting: - Description: 'Avoid excessive block nesting' - StyleGuide: '#three-is-the-number-thou-shalt-count' - Enabled: true - -Metrics/ClassLength: - Description: 'Avoid classes longer than 100 lines of code.' - Enabled: true - -Metrics/ModuleLength: - Description: 'Avoid modules longer than 100 lines of code.' - Enabled: true - -Metrics/CyclomaticComplexity: - Description: >- - A complexity metric that is strongly correlated to the number - of test cases needed to validate a method. - Enabled: true - -Metrics/MethodLength: - Description: 'Avoid methods longer than 10 lines of code.' - StyleGuide: '#short-methods' - Enabled: true - -Metrics/BlockLength: - Description: 'Avoid long blocks with many lines.' - Enabled: true - -Metrics/ParameterLists: - Description: 'Avoid parameter lists longer than three or four parameters.' - StyleGuide: '#too-many-params' - Enabled: true - -Metrics/PerceivedComplexity: - Description: >- - A complexity metric geared towards measuring complexity for a - human reader. - Enabled: true - -#################### Lint ################################## -### Warnings - -Lint/AmbiguousBlockAssociation: - Description: >- - Checks for ambiguous block association with method when param passed without - parentheses. - StyleGuide: '#syntax' - Enabled: true - -Lint/AmbiguousOperator: - Description: >- - Checks for ambiguous operators in the first argument of a - method invocation without parentheses. - StyleGuide: '#method-invocation-parens' - Enabled: true - -Lint/AmbiguousRegexpLiteral: - Description: >- - Checks for ambiguous regexp literals in the first argument of - a method invocation without parentheses. - Enabled: true - -Lint/AssignmentInCondition: - Description: "Don't use assignment in conditions." - StyleGuide: '#safe-assignment-in-condition' - Enabled: true - -Lint/BooleanSymbol: - Description: 'Check for `:true` and `:false` symbols.' - Enabled: true - -Lint/CircularArgumentReference: - Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument." - Enabled: true - -Lint/ConditionPosition: - Description: >- - Checks for condition placed in a confusing position relative to - the keyword. - StyleGuide: '#same-line-condition' - Enabled: true - -Lint/Debugger: - Description: 'Check for debugger calls.' - Enabled: true - -Lint/DeprecatedClassMethods: - Description: 'Check for deprecated class method calls.' - Enabled: true - -Lint/DuplicateCaseCondition: - Description: 'Do not repeat values in case conditionals.' - Enabled: true - -Lint/DuplicateMethods: - Description: 'Check for duplicate method definitions.' - Enabled: true - -Lint/DuplicatedKey: - Description: 'Check for duplicate keys in hash literals.' - Enabled: true - -Lint/EachWithObjectArgument: - Description: 'Check for immutable argument given to each_with_object.' - Enabled: true - -Lint/ElseLayout: - Description: 'Check for odd code arrangement in an else block.' - Enabled: true - -Lint/EmptyEnsure: - Description: 'Checks for empty ensure block.' - Enabled: true - AutoCorrect: false - -Lint/EmptyExpression: - Description: 'Checks for empty expressions.' - Enabled: true - -Lint/EmptyInterpolation: - Description: 'Checks for empty string interpolation.' - Enabled: true - -Lint/EmptyWhen: - Description: 'Checks for `when` branches with empty bodies.' - Enabled: true - -Lint/EndInMethod: - Description: 'END blocks should not be placed inside method definitions.' - Enabled: true - -Lint/EnsureReturn: - Description: 'Do not use return in an ensure block.' - StyleGuide: '#no-return-ensure' - Enabled: true - -Lint/FloatOutOfRange: - Description: >- - Catches floating-point literals too large or small for Ruby to - represent. - Enabled: true - -Lint/FormatParameterMismatch: - Description: 'The number of parameters to format/sprint must match the fields.' - Enabled: true - -Lint/HandleExceptions: - Description: "Don't suppress exception." - StyleGuide: '#dont-hide-exceptions' - Enabled: true - -Lint/ImplicitStringConcatenation: - Description: >- - Checks for adjacent string literals on the same line, which - could better be represented as a single string literal. - Enabled: true - -Lint/IneffectiveAccessModifier: - Description: >- - Checks for attempts to use `private` or `protected` to set - the visibility of a class method, which does not work. - Enabled: true - -Lint/InheritException: - Description: 'Avoid inheriting from the `Exception` class.' - Enabled: true - -Lint/InterpolationCheck: - Description: 'Raise warning for interpolation in single q strs' - Enabled: true - -Lint/LiteralInCondition: - Description: 'Checks of literals used in conditions.' - Enabled: true - -Lint/LiteralInInterpolation: - Description: 'Checks for literals used in interpolation.' - Enabled: true - -Lint/Loop: - Description: >- - Use Kernel#loop with break rather than begin/end/until or - begin/end/while for post-loop tests. - StyleGuide: '#loop-with-break' - Enabled: true - -Lint/MultipleCompare: - Description: "Use `&&` operator to compare multiple value." - Enabled: true - -Lint/NestedMethodDefinition: - Description: 'Do not use nested method definitions.' - StyleGuide: '#no-nested-methods' - Enabled: true - -Lint/NextWithoutAccumulator: - Description: >- - Do not omit the accumulator when calling `next` - in a `reduce`/`inject` block. - Enabled: true - -Lint/NonLocalExitFromIterator: - Description: 'Do not use return in iterator to cause non-local exit.' - Enabled: true - -Lint/ParenthesesAsGroupedExpression: - Description: >- - Checks for method calls with a space before the opening - parenthesis. - StyleGuide: '#parens-no-spaces' - Enabled: true - -Lint/PercentStringArray: - Description: >- - Checks for unwanted commas and quotes in %w/%W literals. - Enabled: true - -Lint/PercentSymbolArray: - Description: >- - Checks for unwanted commas and colons in %i/%I literals. - Enabled: true - -Lint/RandOne: - Description: >- - Checks for `rand(1)` calls. Such calls always return `0` - and most likely a mistake. - Enabled: true - -Lint/RedundantWithIndex: - Description: 'Checks for redundant `with_index`.' - Enabled: true - -Lint/RedundantWithObject: - Description: 'Checks for redundant `with_object`.' - Enabled: true - -Lint/RequireParentheses: - Description: >- - Use parentheses in the method call to avoid confusion - about precedence. - Enabled: true - -Lint/RescueException: - Description: 'Avoid rescuing the Exception class.' - StyleGuide: '#no-blind-rescues' - Enabled: true - -Lint/RescueType: - Description: 'Avoid rescuing from non constants that could result in a `TypeError`.' - Enabled: true - -Lint/RescueWithoutErrorClass: - Description: 'Avoid rescuing without specifying an error class.' - StyleGuide: '#no-blind-rescues' - Enabled: true - -Lint/SafeNavigationChain: - Description: 'Do not chain ordinary method call after safe navigation operator.' - Enabled: true - -Lint/ScriptPermission: - Description: 'Grant script file execute permission.' - Enabled: true - -Lint/ShadowedException: - Description: >- - Avoid rescuing a higher level exception - before a lower level exception. - Enabled: true - -Lint/ShadowingOuterLocalVariable: - Description: >- - Do not use the same name as outer local variable - for block arguments or block local variables. - Enabled: true - -Lint/StringConversionInInterpolation: - Description: 'Checks for Object#to_s usage in string interpolation.' - StyleGuide: '#no-to-s' - Enabled: true - -Lint/Syntax: - Description: 'Checks syntax error' - Enabled: true - -Lint/UnderscorePrefixedVariableName: - Description: 'Do not use prefix `_` for a variable that is used.' - Enabled: true - -Lint/UnifiedInteger: - Description: 'Use Integer instead of Fixnum or Bignum' - Enabled: true - -Lint/UnneededDisable: - Description: >- - Checks for rubocop:disable comments that can be removed. - Note: this cop is not disabled when disabling all cops. - It must be explicitly disabled. - Enabled: true - -Lint/UnneededRequireStatement: - Description: 'Checks for unnecessary `require` statement.' - Enabled: true - -Lint/UnneededSplatExpansion: - Description: 'Checks for splat unnecessarily being called on literals' - Enabled: true - -Lint/UnusedBlockArgument: - Description: 'Checks for unused block arguments.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UnusedMethodArgument: - Description: 'Checks for unused method arguments.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UnreachableCode: - Description: 'Unreachable code.' - Enabled: true - -Lint/UriEscapeUnescape: - Description: >- - `URI.escape` method is obsolete and should not be used. Instead, use - `CGI.escape`, `URI.encode_www_form` or `URI.encode_www_form_component` - depending on your specific use case. - Also `URI.unescape` method is obsolete and should not be used. Instead, use - `CGI.unescape`, `URI.decode_www_form` or `URI.decode_www_form_component` - depending on your specific use case. - Enabled: true - -Lint/UriRegexp: - Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.' - Enabled: true - -Lint/UselessAccessModifier: - Description: 'Checks for useless access modifiers.' - Enabled: true - ContextCreatingMethods: [] - MethodCreatingMethods: [] - -Lint/UselessAssignment: - Description: 'Checks for useless assignment to a local variable.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UselessComparison: - Description: 'Checks for comparison of something with itself.' - Enabled: true - -Lint/UselessElseWithoutRescue: - Description: 'Checks for useless `else` in `begin..end` without `rescue`.' - Enabled: true - -Lint/ReturnInVoidContext: - Description: 'Checks for return in void context.' - Enabled: true - -Lint/UselessSetterCall: - Description: 'Checks for useless setter call to a local variable.' - Enabled: true - -Lint/Void: - Description: 'Possible use of operator/literal/variable in void context.' - Enabled: true - -#################### Performance ########################### - -Performance/Caller: - Description: >- - Use `caller(n..n)` instead of `caller`. - Enabled: true - -Performance/Casecmp: - Description: >- - Use `casecmp` rather than `downcase ==`, `upcase ==`, `== downcase`, or `== upcase`.. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code' - Enabled: true - -Performance/CaseWhenSplat: - Description: >- - Place `when` conditions that use splat at the end - of the list of `when` branches. - Enabled: true - -Performance/Count: - Description: >- - Use `count` instead of `select...size`, `reject...size`, - `select...count`, `reject...count`, `select...length`, - and `reject...length`. - # This cop has known compatibility issues with `ActiveRecord` and other - # frameworks. ActiveRecord's `count` ignores the block that is passed to it. - # For more information, see the documentation in the cop itself. - # If you understand the known risk, you can disable `SafeMode`. - SafeMode: true - Enabled: true - -Performance/Detect: - Description: >- - Use `detect` instead of `select.first`, `find_all.first`, - `select.last`, and `find_all.last`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' - # This cop has known compatibility issues with `ActiveRecord` and other - # frameworks. `ActiveRecord` does not implement a `detect` method and `find` - # has its own meaning. Correcting `ActiveRecord` methods with this cop - # should be considered unsafe. - SafeMode: true - Enabled: true - -Performance/DoubleStartEndWith: - Description: >- - Use `str.{start,end}_with?(x, ..., y, ...)` - instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`. - Enabled: true - -Performance/EndWith: - Description: 'Use `end_with?` instead of a regex match anchored to the end of a string.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' - # This will change to a new method call which isn't guaranteed to be on the - # object. Switching these methods has to be done with knowledge of the types - # of the variables which rubocop doesn't have. - AutoCorrect: false - Enabled: true - -Performance/FixedSize: - Description: 'Do not compute the size of statically sized objects except in constants' - Enabled: true - -Performance/FlatMap: - Description: >- - Use `Enumerable#flat_map` - instead of `Enumerable#map...Array#flatten(1)` - or `Enumberable#collect..Array#flatten(1)` - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code' - Enabled: true - EnabledForFlattenWithoutParams: false - # If enabled, this cop will warn about usages of - # `flatten` being called without any parameters. - # This can be dangerous since `flat_map` will only flatten 1 level, and - # `flatten` without any parameters can flatten multiple levels. - -Performance/HashEachMethods: - Description: >- - Use `Hash#each_key` and `Hash#each_value` instead of - `Hash#keys.each` and `Hash#values.each`. - StyleGuide: '#hash-each' - Enabled: true - AutoCorrect: false - -Performance/LstripRstrip: - Description: 'Use `strip` instead of `lstrip.rstrip`.' - Enabled: true - -Performance/RangeInclude: - Description: 'Use `Range#cover?` instead of `Range#include?`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#cover-vs-include-code' - Enabled: true - -Performance/RedundantBlockCall: - Description: 'Use `yield` instead of `block.call`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#proccall-vs-yield-code' - Enabled: true - -Performance/RedundantMatch: - Description: >- - Use `=~` instead of `String#match` or `Regexp#match` in a context where the - returned `MatchData` is not needed. - Enabled: true - -Performance/RedundantMerge: - Description: 'Use Hash#[]=, rather than Hash#merge! with a single key-value pair.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code' - Enabled: true - -Performance/RedundantSortBy: - Description: 'Use `sort` instead of `sort_by { |x| x }`.' - Enabled: true - -Performance/RegexpMatch: - Description: >- - Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`, - `Regexp#===`, or `=~` when `MatchData` is not used. - Enabled: true - -Performance/ReverseEach: - Description: 'Use `reverse_each` instead of `reverse.each`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code' - Enabled: true - -Performance/Sample: - Description: >- - Use `sample` instead of `shuffle.first`, - `shuffle.last`, and `shuffle[Integer]`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code' - Enabled: true - -Performance/Size: - Description: >- - Use `size` instead of `count` for counting - the number of elements in `Array` and `Hash`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code' - Enabled: true - -Performance/CompareWithBlock: - Description: 'Use `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.' - Enabled: true - -Performance/StartWith: - Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' - # This will change to a new method call which isn't guaranteed to be on the - # object. Switching these methods has to be done with knowledge of the types - # of the variables which rubocop doesn't have. - AutoCorrect: false - Enabled: true - -Performance/StringReplacement: - Description: >- - Use `tr` instead of `gsub` when you are replacing the same - number of characters. Use `delete` instead of `gsub` when - you are deleting characters. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code' - Enabled: true - -Performance/TimesMap: - Description: 'Checks for .times.map calls.' - AutoCorrect: false - Enabled: true - -Performance/UnfreezeString: - Description: 'Use unary plus to get an unfrozen string literal.' - Enabled: true - -Performance/UriDefaultParser: - Description: 'Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.' - Enabled: true - -#################### Rails ################################# - -Rails/ActionFilter: - Description: 'Enforces consistent use of action filter methods.' - Enabled: true - -Rails/ApplicationJob: - Description: 'Check that jobs subclass ApplicationJob.' - Enabled: true - -Rails/ApplicationRecord: - Description: 'Check that models subclass ApplicationRecord.' - Enabled: true - -Rails/ActiveSupportAliases: - Description: >- - Avoid ActiveSupport aliases of standard ruby methods: - `String#starts_with?`, `String#ends_with?`, - `Array#append`, `Array#prepend`. - Enabled: true - -Rails/Blank: - Description: 'Enforce using `blank?` and `present?`.' - Enabled: true - # Convert checks for `nil` or `empty?` to `blank?` - NilOrEmpty: true - # Convert usages of not `present?` to `blank?` - NotPresent: true - # Convert usages of `unless` `present?` to `if` `blank?` - UnlessPresent: true - -Rails/Date: - Description: >- - Checks the correct usage of date aware methods, - such as Date.today, Date.current etc. - Enabled: true - -Rails/Delegate: - Description: 'Prefer delegate method for delegations.' - Enabled: true - -Rails/DelegateAllowBlank: - Description: 'Do not use allow_blank as an option to delegate.' - Enabled: true - -Rails/DynamicFindBy: - Description: 'Use `find_by` instead of dynamic `find_by_*`.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' - Enabled: true - -Rails/EnumUniqueness: - Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.' - Enabled: true - -Rails/Exit: - Description: >- - Favor `fail`, `break`, `return`, etc. over `exit` in - application or library code outside of Rake files to avoid - exits during unit testing or running in production. - Enabled: true - -Rails/FilePath: - Description: 'Use `Rails.root.join` for file path joining.' - Enabled: true - -Rails/FindBy: - Description: 'Prefer find_by over where.first.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' - Enabled: true - -Rails/FindEach: - Description: 'Prefer all.find_each over all.find.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find-each' - Enabled: true - -Rails/HasAndBelongsToMany: - Description: 'Prefer has_many :through to has_and_belongs_to_many.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has-many-through' - Enabled: true - -Rails/HasManyOrHasOneDependent: - Description: 'Define the dependent option to the has_many and has_one associations.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has_many-has_one-dependent-option' - Enabled: true - -Rails/HttpPositionalArguments: - Description: 'Use keyword arguments instead of positional arguments in http method calls.' - Enabled: true - Include: - - 'spec/**/*' - - 'test/**/*' - -Rails/NotNullColumn: - Description: 'Do not add a NOT NULL column without a default value' - Enabled: true - -Rails/Output: - Description: 'Checks for calls to puts, print, etc.' - Enabled: true - -Rails/OutputSafety: - Description: 'The use of `html_safe` or `raw` may be a security risk.' - Enabled: true - -Rails/PluralizationGrammar: - Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.' - Enabled: true - -Rails/Present: - Description: 'Enforce using `blank?` and `present?`.' - Enabled: true - NotNilAndNotEmpty: true - # Convert checks for not `nil` and not `empty?` to `present?` - NotBlank: true - # Convert usages of not `blank?` to `present?` - UnlessBlank: true - # Convert usages of `unless` `blank?` to `if` `present?` - -Rails/ReadWriteAttribute: - Description: >- - Checks for read_attribute(:attr) and - write_attribute(:attr, val). - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#read-attribute' - Enabled: true - -Rails/RelativeDateConstant: - Description: 'Do not assign relative date to constants.' - Enabled: true - -Rails/RequestReferer: - Description: 'Use consistent syntax for request.referer.' - Enabled: true - -Rails/ReversibleMigration: - Description: 'Checks whether the change method of the migration file is reversible.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#reversible-migration' - Reference: 'http://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html' - Enabled: true - -Rails/SafeNavigation: - Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`" - Enabled: true - -Rails/ScopeArgs: - Description: 'Checks the arguments of ActiveRecord scopes.' - Enabled: true - -Rails/TimeZone: - Description: 'Checks the correct usage of time zone aware methods.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time' - Reference: 'http://danilenko.org/2012/7/6/rails_timezones' - Enabled: true - -Rails/UniqBeforePluck: - Description: 'Prefer the use of uniq or distinct before pluck.' - Enabled: true - -Rails/UnknownEnv: - Description: 'Use correct environment name.' - Enabled: true - -Rails/SkipsModelValidations: - Description: >- - Use methods that skips model validations with caution. - See reference for more information. - Reference: 'http://guides.rubyonrails.org/active_record_validations.html#skipping-validations' - Enabled: true - -Rails/Validation: - Description: 'Use validates :attribute, hash of validations.' - Enabled: true - -#################### Security ############################## - -Security/Eval: - Description: 'The use of eval represents a serious security risk.' - Enabled: true - -Security/JSONLoad: - Description: >- - Prefer usage of `JSON.parse` over `JSON.load` due to potential - security issues. See reference for more information. - Reference: 'http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method-i-load' - Enabled: true - # Autocorrect here will change to a method that may cause crashes depending - # on the value of the argument. - AutoCorrect: false - -Security/MarshalLoad: - Description: >- - Avoid using of `Marshal.load` or `Marshal.restore` due to potential - security issues. See reference for more information. - Reference: 'http://ruby-doc.org/core-2.3.3/Marshal.html#module-Marshal-label-Security+considerations' - Enabled: true - -Security/YAMLLoad: - Description: >- - Prefer usage of `YAML.safe_load` over `YAML.load` due to potential - security issues. See reference for more information. - Reference: 'https://ruby-doc.org/stdlib-2.3.3/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security' - Enabled: true - -#################### Bundler ############################### - -Bundler/DuplicatedGem: - Description: 'Checks for duplicate gem entries in Gemfile.' - Enabled: true - Include: - - '**/Gemfile' - - '**/gems.rb' - -Bundler/InsecureProtocolSource: - Description: >- - The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated - because HTTP requests are insecure. Please change your source to - 'https://rubygems.org' if possible, or 'http://rubygems.org' if not. - Enabled: true - Include: - - '**/Gemfile' - - '**/gems.rb' - -Bundler/OrderedGems: - Description: >- - Gems within groups in the Gemfile should be alphabetically sorted. - Enabled: true - Include: - - '**/Gemfile' - - '**/gems.rb' - diff --git a/rubocop/rubocop.yml b/rubocop/rubocop.yml deleted file mode 100644 index b3869937..00000000 --- a/rubocop/rubocop.yml +++ /dev/null @@ -1,1613 +0,0 @@ -inherit_from: - - enabled.yml - - disabled.yml - -# Common configuration. -AllCops: - # Include common Ruby source files. - Include: - - '**/*.builder' - - '**/*.fcgi' - - '**/*.gemspec' - - '**/*.god' - - '**/*.jb' - - '**/*.jbuilder' - - '**/*.mspec' - - '**/*.opal' - - '**/*.pluginspec' - - '**/*.podspec' - - '**/*.rabl' - - '**/*.rake' - - '**/*.rbuild' - - '**/*.rbw' - - '**/*.rbx' - - '**/*.ru' - - '**/*.ruby' - - '**/*.spec' - - '**/*.thor' - - '**/*.watchr' - - '**/.irbrc' - - '**/.pryrc' - - '**/buildfile' - - '**/config.ru' - - '**/Appraisals' - - '**/Berksfile' - - '**/Brewfile' - - '**/Buildfile' - - '**/Capfile' - - '**/Cheffile' - - '**/Dangerfile' - - '**/Deliverfile' - - '**/Fastfile' - - '**/*Fastfile' - - '**/Gemfile' - - '**/Guardfile' - - '**/Jarfile' - - '**/Mavenfile' - - '**/Podfile' - - '**/Puppetfile' - - '**/Rakefile' - - '**/Snapfile' - - '**/Thorfile' - - '**/Vagabondfile' - - '**/Vagrantfile' - Exclude: - - 'node_modules/**/*' - - 'vendor/**/*' - # Default formatter will be used if no `-f/--format` option is given. - DefaultFormatter: progress - # Cop names are not displayed in offense messages by default. Change behavior - # by overriding DisplayCopNames, or by giving the `-D/--display-cop-names` - # option. - DisplayCopNames: false - # Style guide URLs are not displayed in offense messages by default. Change - # behavior by overriding `DisplayStyleGuide`, or by giving the - # `-S/--display-style-guide` option. - DisplayStyleGuide: false - # When specifying style guide URLs, any paths and/or fragments will be - # evaluated relative to the base URL. - StyleGuideBaseURL: https://github.com/bbatsov/ruby-style-guide - # Extra details are not displayed in offense messages by default. Change - # behavior by overriding ExtraDetails, or by giving the - # `-E/--extra-details` option. - ExtraDetails: false - # Additional cops that do not reference a style guide rule may be enabled by - # default. Change behavior by overriding `StyleGuideCopsOnly`, or by giving - # the `--only-guide-cops` option. - StyleGuideCopsOnly: false - # All cops except the ones in disabled.yml are enabled by default. Change - # this behavior by overriding either `DisabledByDefault` or `EnabledByDefault`. - # When `DisabledByDefault` is `true`, all cops in the default configuration - # are disabled, and only cops in user configuration are enabled. This makes - # cops opt-in instead of opt-out. Note that when `DisabledByDefault` is `true`, - # cops in user configuration will be enabled even if they don't set the - # Enabled parameter. - # When `EnabledByDefault` is `true`, all cops, even those in disabled.yml, - # are enabled by default. Cops can still be disabled in user configuration. - # Note that it is invalid to set both EnabledByDefault and DisabledByDefault - # to true in the same configuration. - EnabledByDefault: false - DisabledByDefault: false - # Enables the result cache if `true`. Can be overridden by the `--cache` command - # line option. - UseCache: true - # Threshold for how many files can be stored in the result cache before some - # of the files are automatically removed. - MaxFilesInCache: 20000 - # The cache will be stored in "rubocop_cache" under this directory. If - # CacheRootDirectory is ~ (nil), which it is by default, the root will be - # taken from the environment variable `$XDG_CACHE_HOME` if it is set, or if - # `$XDG_CACHE_HOME` is not set, it will be `$HOME/.cache/`. - CacheRootDirectory: ~ - # It is possible for a malicious user to know the location of RuboCop's cache - # directory by looking at CacheRootDirectory, and create a symlink in its - # place that could cause RuboCop to overwrite unintended files, or read - # malicious input. If you are certain that your cache location is secure from - # this kind of attack, and wish to use a symlinked cache location, set this - # value to "true". - AllowSymlinksInCacheRootDirectory: false - # What MRI version of the Ruby interpreter is the inspected code intended to - # run on? (If there is more than one, set this to the lowest version.) - # If a value is specified for TargetRubyVersion then it is used. - # Else if .ruby-version exists and it contains an MRI version it is used. - # Otherwise we fallback to the oldest officially supported Ruby version (2.1). - TargetRubyVersion: ~ - TargetRailsVersion: 5.0 - -#################### Layout ########################### - -# Indent private/protected/public as deep as method definitions -Layout/AccessModifierIndentation: - EnforcedStyle: indent - SupportedStyles: - - outdent - - indent - # By default, the indentation width from Layout/IndentationWidth is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -# Align the elements of a hash literal if they span more than one line. -Layout/AlignHash: - # Alignment of entries using hash rocket as separator. Valid values are: - # - # key - left alignment of keys - # 'a' => 2 - # 'bb' => 3 - # separator - alignment of hash rockets, keys are right aligned - # 'a' => 2 - # 'bb' => 3 - # table - left alignment of keys, hash rockets, and values - # 'a' => 2 - # 'bb' => 3 - EnforcedHashRocketStyle: key - SupportedHashRocketStyles: - - key - - separator - - table - # Alignment of entries using colon as separator. Valid values are: - # - # key - left alignment of keys - # a: 0 - # bb: 1 - # separator - alignment of colons, keys are right aligned - # a: 0 - # bb: 1 - # table - left alignment of keys and values - # a: 0 - # bb: 1 - EnforcedColonStyle: key - SupportedColonStyles: - - key - - separator - - table - # Select whether hashes that are the last argument in a method call should be - # inspected? Valid values are: - # - # always_inspect - Inspect both implicit and explicit hashes. - # Registers an offense for: - # function(a: 1, - # b: 2) - # Registers an offense for: - # function({a: 1, - # b: 2}) - # always_ignore - Ignore both implicit and explicit hashes. - # Accepts: - # function(a: 1, - # b: 2) - # Accepts: - # function({a: 1, - # b: 2}) - # ignore_implicit - Ignore only implicit hashes. - # Accepts: - # function(a: 1, - # b: 2) - # Registers an offense for: - # function({a: 1, - # b: 2}) - # ignore_explicit - Ignore only explicit hashes. - # Accepts: - # function({a: 1, - # b: 2}) - # Registers an offense for: - # function(a: 1, - # b: 2) - EnforcedLastArgumentHashStyle: always_inspect - SupportedLastArgumentHashStyles: - - always_inspect - - always_ignore - - ignore_implicit - - ignore_explicit - -Layout/AlignParameters: - # Alignment of parameters in multi-line method calls. - # - # The `with_first_parameter` style aligns the following lines along the same - # column as the first parameter. - # - # method_call(a, - # b) - # - # The `with_fixed_indentation` style aligns the following lines with one - # level of indentation relative to the start of the line with the method call. - # - # method_call(a, - # b) - EnforcedStyle: with_first_parameter - SupportedStyles: - - with_first_parameter - - with_fixed_indentation - # By default, the indentation width from Layout/IndentationWidth is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -# Indentation of `when`. -Layout/CaseIndentation: - EnforcedStyle: case - SupportedStyles: - - case - - end - IndentOneStep: false - # By default, the indentation width from `Layout/IndentationWidth` is used. - # But it can be overridden by setting this parameter. - # This only matters if `IndentOneStep` is `true` - IndentationWidth: ~ - -# Multi-line method chaining should be done with leading dots. -Layout/DotPosition: - EnforcedStyle: leading - SupportedStyles: - - leading - - trailing - -# Use empty lines between defs. -Layout/EmptyLineBetweenDefs: - # If `true`, this parameter means that single line method definitions don't - # need an empty line between them. - AllowAdjacentOneLineDefs: false - # Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2] - NumberOfEmptyLines: 1 - -Layout/EmptyLinesAroundBlockBody: - EnforcedStyle: no_empty_lines - SupportedStyles: - - empty_lines - - no_empty_lines - -Layout/EmptyLinesAroundClassBody: - EnforcedStyle: no_empty_lines - SupportedStyles: - - empty_lines - - empty_lines_except_namespace - - empty_lines_special - - no_empty_lines - -Layout/EmptyLinesAroundModuleBody: - EnforcedStyle: no_empty_lines - SupportedStyles: - - empty_lines - - empty_lines_except_namespace - - empty_lines_special - - no_empty_lines - -Layout/EndOfLine: - # The `native` style means that CR+LF (Carriage Return + Line Feed) is - # enforced on Windows, and LF is enforced on other platforms. The other styles - # mean LF and CR+LF, respectively. - EnforcedStyle: native - SupportedStyles: - - native - - lf - - crlf - -Layout/ExtraSpacing: - # When true, allows most uses of extra spacing if the intent is to align - # things with the previous or next line, not counting empty lines or comment - # lines. - AllowForAlignment: true - # When true, forces the alignment of `=` in assignments on consecutive lines. - ForceEqualSignAlignment: false - -Layout/FirstParameterIndentation: - EnforcedStyle: special_for_inner_method_call_in_parentheses - SupportedStyles: - # The first parameter should always be indented one step more than the - # preceding line. - - consistent - # The first parameter should normally be indented one step more than the - # preceding line, but if it's a parameter for a method call that is itself - # a parameter in a method call, then the inner parameter should be indented - # relative to the inner method. - - special_for_inner_method_call - # Same as `special_for_inner_method_call` except that the special rule only - # applies if the outer method call encloses its arguments in parentheses. - - special_for_inner_method_call_in_parentheses - # By default, the indentation width from `Layout/IndentationWidth` is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -Layout/IndentationConsistency: - # The difference between `rails` and `normal` is that the `rails` style - # prescribes that in classes and modules the `protected` and `private` - # modifier keywords shall be indented the same as public methods and that - # protected and private members shall be indented one step more than the - # modifiers. Other than that, both styles mean that entities on the same - # logical depth shall have the same indentation. - EnforcedStyle: normal - SupportedStyles: - - normal - - rails - -Layout/IndentationWidth: - # Number of spaces for each indentation level. - Width: 2 - IgnoredPatterns: [] - -# Checks the indentation of the first element in an array literal. -Layout/IndentArray: - # The value `special_inside_parentheses` means that array literals with - # brackets that have their opening bracket on the same line as a surrounding - # opening round parenthesis, shall have their first element indented relative - # to the first position inside the parenthesis. - # - # The value `consistent` means that the indentation of the first element shall - # always be relative to the first position of the line where the opening - # bracket is. - # - # The value `align_brackets` means that the indentation of the first element - # shall always be relative to the position of the opening bracket. - EnforcedStyle: special_inside_parentheses - SupportedStyles: - - special_inside_parentheses - - consistent - - align_brackets - # By default, the indentation width from `Layout/IndentationWidth` is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -# Checks the indentation of assignment RHS, when on a different line from LHS -Layout/IndentAssignment: - # By default, the indentation width from `Layout/IndentationWidth` is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -# Checks the indentation of the first key in a hash literal. -Layout/IndentHash: - # The value `special_inside_parentheses` means that hash literals with braces - # that have their opening brace on the same line as a surrounding opening - # round parenthesis, shall have their first key indented relative to the - # first position inside the parenthesis. - # - # The value `consistent` means that the indentation of the first key shall - # always be relative to the first position of the line where the opening - # brace is. - # - # The value `align_braces` means that the indentation of the first key shall - # always be relative to the position of the opening brace. - EnforcedStyle: special_inside_parentheses - SupportedStyles: - - special_inside_parentheses - - consistent - - align_braces - # By default, the indentation width from `Layout/IndentationWidth` is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -Layout/IndentHeredoc: - EnforcedStyle: auto_detection - SupportedStyles: - - auto_detection - - squiggly - - active_support - - powerpack - - unindent - -Layout/SpaceInLambdaLiteral: - EnforcedStyle: require_no_space - SupportedStyles: - - require_no_space - - require_space - -Layout/MultilineArrayBraceLayout: - EnforcedStyle: symmetrical - SupportedStyles: - # symmetrical: closing brace is positioned in same way as opening brace - # new_line: closing brace is always on a new line - # same_line: closing brace is always on the same line as last element - - symmetrical - - new_line - - same_line - -Layout/MultilineAssignmentLayout: - # The types of assignments which are subject to this rule. - SupportedTypes: - - block - - case - - class - - if - - kwbegin - - module - EnforcedStyle: new_line - SupportedStyles: - # Ensures that the assignment operator and the rhs are on the same line for - # the set of supported types. - - same_line - # Ensures that the assignment operator and the rhs are on separate lines - # for the set of supported types. - - new_line - -Layout/MultilineHashBraceLayout: - EnforcedStyle: symmetrical - SupportedStyles: - # symmetrical: closing brace is positioned in same way as opening brace - # new_line: closing brace is always on a new line - # same_line: closing brace is always on same line as last element - - symmetrical - - new_line - - same_line - -Layout/MultilineMethodCallBraceLayout: - EnforcedStyle: symmetrical - SupportedStyles: - # symmetrical: closing brace is positioned in same way as opening brace - # new_line: closing brace is always on a new line - # same_line: closing brace is always on the same line as last argument - - symmetrical - - new_line - - same_line - -Layout/MultilineMethodCallIndentation: - EnforcedStyle: aligned - SupportedStyles: - - aligned - - indented - - indented_relative_to_receiver - # By default, the indentation width from Layout/IndentationWidth is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -Layout/MultilineMethodDefinitionBraceLayout: - EnforcedStyle: symmetrical - SupportedStyles: - # symmetrical: closing brace is positioned in same way as opening brace - # new_line: closing brace is always on a new line - # same_line: closing brace is always on the same line as last parameter - - symmetrical - - new_line - - same_line - -Layout/MultilineOperationIndentation: - EnforcedStyle: aligned - SupportedStyles: - - aligned - - indented - # By default, the indentation width from `Layout/IndentationWidth` is used - # But it can be overridden by setting this parameter - IndentationWidth: ~ - -Layout/SpaceAroundBlockParameters: - EnforcedStyleInsidePipes: no_space - SupportedStylesInsidePipes: - - space - - no_space - -Layout/SpaceAroundEqualsInParameterDefault: - EnforcedStyle: space - SupportedStyles: - - space - - no_space - -Layout/SpaceAroundOperators: - # When `true`, allows most uses of extra spacing if the intent is to align - # with an operator on the previous or next line, not counting empty lines - # or comment lines. - AllowForAlignment: true - -Layout/SpaceBeforeBlockBraces: - EnforcedStyle: space - SupportedStyles: - - space - - no_space - SupportedStylesForEmptyBraces: - - space - - no_space - -Layout/SpaceBeforeFirstArg: - # When `true`, allows most uses of extra spacing if the intent is to align - # things with the previous or next line, not counting empty lines or comment - # lines. - AllowForAlignment: true - -Layout/SpaceInsideBlockBraces: - EnforcedStyle: space - SupportedStyles: - - space - - no_space - EnforcedStyleForEmptyBraces: no_space - SupportedStylesForEmptyBraces: - - space - - no_space - # Space between `{` and `|`. Overrides `EnforcedStyle` if there is a conflict. - SpaceBeforeBlockParameters: true - -Layout/SpaceInsideHashLiteralBraces: - EnforcedStyle: space - SupportedStyles: - - space - - no_space - # 'compact' normally requires a space inside hash braces, with the exception - # that successive left braces or right braces are collapsed together - - compact - EnforcedStyleForEmptyBraces: no_space - SupportedStylesForEmptyBraces: - - space - - no_space - -Layout/SpaceInsideStringInterpolation: - EnforcedStyle: no_space - SupportedStyles: - - space - - no_space - -Layout/Tab: - # By default, the indentation width from Layout/IndentationWidth is used - # But it can be overridden by setting this parameter - # It is used during auto-correction to determine how many spaces should - # replace each tab. - IndentationWidth: ~ - -Layout/TrailingBlankLines: - EnforcedStyle: final_newline - SupportedStyles: - - final_newline - - final_blank_line - -#################### Naming ########################## - -Naming/FileName: - # File names listed in `AllCops:Include` are excluded by default. Add extra - # excludes here. - Exclude: [] - # When `true`, requires that each source file should define a class or module - # with a name which matches the file name (converted to ... case). - # It further expects it to be nested inside modules which match the names - # of subdirectories in its path. - ExpectMatchingDefinition: false - # If non-`nil`, expect all source file names to match the following regex. - # Only the file name itself is matched, not the entire file path. - # Use anchors as necessary if you want to match the entire name rather than - # just a part of it. - Regex: ~ - # With `IgnoreExecutableScripts` set to `true`, this cop does not - # report offending filenames for executable scripts (i.e. source - # files with a shebang in the first line). - IgnoreExecutableScripts: true - AllowedAcronyms: - - CLI - - DSL - - ACL - - API - - ASCII - - CPU - - CSS - - DNS - - EOF - - GUID - - HTML - - HTTP - - HTTPS - - ID - - IP - - JSON - - LHS - - QPS - - RAM - - RHS - - RPC - - SLA - - SMTP - - SQL - - SSH - - TCP - - TLS - - TTL - - UDP - - UI - - UID - - UUID - - URI - - URL - - UTF8 - - VM - - XML - - XMPP - - XSRF - - XSS - -Naming/HeredocDelimiterNaming: - Blacklist: - - END - - !ruby/regexp '/EO[A-Z]{1}/' - -Naming/HeredocDelimiterCase: - EnforcedStyle: uppercase - SupportedStyles: - - lowercase - - uppercase - -Naming/MethodName: - EnforcedStyle: snake_case - SupportedStyles: - - snake_case - - camelCase - -Naming/PredicateName: - # Predicate name prefixes. - NamePrefix: - - is_ - - has_ - - have_ - # Predicate name prefixes that should be removed. - NamePrefixBlacklist: - - is_ - - has_ - - have_ - # Predicate names which, despite having a blacklisted prefix, or no `?`, - # should still be accepted - NameWhitelist: - - is_a? - # Exclude Rspec specs because there is a strong convention to write spec - # helpers in the form of `have_something` or `be_something`. - Exclude: - - 'spec/**/*' - -Naming/VariableName: - EnforcedStyle: snake_case - SupportedStyles: - - snake_case - - camelCase - -Naming/VariableNumber: - EnforcedStyle: normalcase - SupportedStyles: - - snake_case - - normalcase - - non_integer - -#################### Style ########################### - -Style/Alias: - EnforcedStyle: prefer_alias - SupportedStyles: - - prefer_alias - - prefer_alias_method - -Style/AndOr: - # Whether `and` and `or` are banned only in conditionals (conditionals) - # or completely (always). - EnforcedStyle: always - SupportedStyles: - - always - - conditionals - -# Checks if usage of `%()` or `%Q()` matches configuration. -Style/BarePercentLiterals: - EnforcedStyle: bare_percent - SupportedStyles: - - percent_q - - bare_percent - -Style/BlockDelimiters: - EnforcedStyle: line_count_based - SupportedStyles: - # The `line_count_based` style enforces braces around single line blocks and - # do..end around multi-line blocks. - - line_count_based - # The `semantic` style enforces braces around functional blocks, where the - # primary purpose of the block is to return a value and do..end for - # procedural blocks, where the primary purpose of the block is its - # side-effects. - # - # This looks at the usage of a block's method to determine its type (e.g. is - # the result of a `map` assigned to a variable or passed to another - # method) but exceptions are permitted in the `ProceduralMethods`, - # `FunctionalMethods` and `IgnoredMethods` sections below. - - semantic - # The `braces_for_chaining` style enforces braces around single line blocks - # and do..end around multi-line blocks, except for multi-line blocks whose - # return value is being chained with another method (in which case braces - # are enforced). - - braces_for_chaining - ProceduralMethods: - # Methods that are known to be procedural in nature but look functional from - # their usage, e.g. - # - # time = Benchmark.realtime do - # foo.bar - # end - # - # Here, the return value of the block is discarded but the return value of - # `Benchmark.realtime` is used. - - benchmark - - bm - - bmbm - - create - - each_with_object - - measure - - new - - realtime - - tap - - with_object - FunctionalMethods: - # Methods that are known to be functional in nature but look procedural from - # their usage, e.g. - # - # let(:foo) { Foo.new } - # - # Here, the return value of `Foo.new` is used to define a `foo` helper but - # doesn't appear to be used from the return value of `let`. - - let - - let! - - subject - - watch - IgnoredMethods: - # Methods that can be either procedural or functional and cannot be - # categorised from their usage alone, e.g. - # - # foo = lambda do |x| - # puts "Hello, #{x}" - # end - # - # foo = lambda do |x| - # x * 100 - # end - # - # Here, it is impossible to tell from the return value of `lambda` whether - # the inner block's return value is significant. - - lambda - - proc - - it - -Style/BracesAroundHashParameters: - EnforcedStyle: no_braces - SupportedStyles: - # The `braces` style enforces braces around all method parameters that are - # hashes. - - braces - # The `no_braces` style checks that the last parameter doesn't have braces - # around it. - - no_braces - # The `context_dependent` style checks that the last parameter doesn't have - # braces around it, but requires braces if the second to last parameter is - # also a hash literal. - - context_dependent - -Style/ClassAndModuleChildren: - # Checks the style of children definitions at classes and modules. - # - # Basically there are two different styles: - # - # `nested` - have each child on a separate line - # class Foo - # class Bar - # end - # end - # - # `compact` - combine definitions as much as possible - # class Foo::Bar - # end - # - # The compact style is only forced, for classes or modules with one child. - EnforcedStyle: nested - SupportedStyles: - - nested - - compact - -Style/ClassCheck: - EnforcedStyle: is_a? - SupportedStyles: - - is_a? - - kind_of? - -# Align with the style guide. -Style/CollectionMethods: - # Mapping from undesired method to desired_method - # e.g. to use `detect` over `find`: - # - # CollectionMethods: - # PreferredMethods: - # find: detect - PreferredMethods: - collect: 'map' - collect!: 'map!' - inject: 'reduce' - detect: 'find' - find_all: 'select' - -# Use '`' or '%x' around command literals. -Style/CommandLiteral: - EnforcedStyle: backticks - # backticks: Always use backticks. - # percent_x: Always use `%x`. - # mixed: Use backticks on single-line commands, and `%x` on multi-line commands. - SupportedStyles: - - backticks - - percent_x - - mixed - # If `false`, the cop will always recommend using `%x` if one or more backticks - # are found in the command string. - AllowInnerBackticks: false - -# Checks formatting of special comments -Style/CommentAnnotation: - Keywords: - - TODO - - FIXME - - OPTIMIZE - - HACK - - REVIEW - -Style/ConditionalAssignment: - EnforcedStyle: assign_to_condition - SupportedStyles: - - assign_to_condition - - assign_inside_condition - # When configured to `assign_to_condition`, `SingleLineConditionsOnly` - # will only register an offense when all branches of a condition are - # a single line. - # When configured to `assign_inside_condition`, `SingleLineConditionsOnly` - # will only register an offense for assignment to a condition that has - # at least one multiline branch. - SingleLineConditionsOnly: true - IncludeTernaryExpressions: true - -# Checks that you have put a copyright in a comment before any code. -# -# You can override the default Notice in your .rubocop.yml file. -# -# In order to use autocorrect, you must supply a value for the -# `AutocorrectNotice` key that matches the regexp Notice. A blank -# `AutocorrectNotice` will cause an error during autocorrect. -# -# Autocorrect will add a copyright notice in a comment at the top -# of the file immediately after any shebang or encoding comments. -# -# Example rubocop.yml: -# -# Style/Copyright: -# Enabled: true -# Notice: 'Copyright (\(c\) )?2015 Yahoo! Inc' -# AutocorrectNotice: '# Copyright (c) 2015 Yahoo! Inc.' -# -Style/Copyright: - Notice: '^Copyright (\(c\) )?2[0-9]{3} .+' - AutocorrectNotice: '' - -Style/DocumentationMethod: - RequireForNonPublicMethods: false - -# Warn on empty else statements -# empty - warn only on empty `else` -# nil - warn on `else` with nil in it -# both - warn on empty `else` and `else` with `nil` in it -Style/EmptyElse: - EnforcedStyle: both - SupportedStyles: - - empty - - nil - - both - -Style/EmptyMethod: - EnforcedStyle: compact - SupportedStyles: - - compact - - expanded - -# Checks use of for or each in multiline loops. -Style/For: - EnforcedStyle: each - SupportedStyles: - - for - - each - -# Enforce the method used for string formatting. -Style/FormatString: - EnforcedStyle: format - SupportedStyles: - - format - - sprintf - - percent - -# Enforce using either `%s` or `%{token}` -Style/FormatStringToken: - EnforcedStyle: annotated - SupportedStyles: - # Prefer tokens which contain a sprintf like type annotation like - # `%s`, `%d`, `%f` - - annotated - # Prefer simple looking "template" style tokens like `%{name}`, `%{age}` - - template - -Style/FrozenStringLiteralComment: - EnforcedStyle: when_needed - SupportedStyles: - # `when_needed` will add the frozen string literal comment to files - # only when the `TargetRubyVersion` is set to 2.3+. - - when_needed - # `always` will always add the frozen string literal comment to a file - # regardless of the Ruby version or if `freeze` or `<<` are called on a - # string literal. If you run code against multiple versions of Ruby, it is - # possible that this will create errors in Ruby 2.3.0+. - - always - # `never` will enforce that the frozen string literal comment does not - # exist in a file. - - never - -# Built-in global variables are allowed by default. -Style/GlobalVars: - AllowedVariables: [] - -# `MinBodyLength` defines the number of lines of the a body of an `if` or `unless` -# needs to have to trigger this cop -Style/GuardClause: - MinBodyLength: 1 - -Style/HashSyntax: - EnforcedStyle: ruby19 - SupportedStyles: - # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys - - ruby19 - # checks for hash rocket syntax for all hashes - - hash_rockets - # forbids mixed key syntaxes (e.g. {a: 1, :b => 2}) - - no_mixed_keys - # enforces both ruby19 and no_mixed_keys styles - - ruby19_no_mixed_keys - # Force hashes that have a symbol value to use hash rockets - UseHashRocketsWithSymbolValues: false - # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style - PreferHashRocketsForNonAlnumEndingSymbols: false - -Style/InverseMethods: - Enabled: true - # `InverseMethods` are methods that can be inverted by a not (`not` or `!`) - # The relationship of inverse methods only needs to be defined in one direction. - # Keys and values both need to be defined as symbols. - InverseMethods: - :any?: :none? - :even?: :odd? - :==: :!= - :=~: :!~ - :<: :>= - :>: :<= - # `ActiveSupport` defines some common inverse methods. They are listed below, - # and not enabled by default. - #:present?: :blank?, - #:include?: :exclude? - # `InverseBlocks` are methods that are inverted by inverting the return - # of the block that is passed to the method - InverseBlocks: - :select: :reject - :select!: :reject! - -Style/Lambda: - EnforcedStyle: line_count_dependent - SupportedStyles: - - line_count_dependent - - lambda - - literal - -Style/LambdaCall: - EnforcedStyle: call - SupportedStyles: - - call - - braces - -Style/MethodCallWithArgsParentheses: - IgnoreMacros: true - IgnoredMethods: [] - -Style/MethodDefParentheses: - EnforcedStyle: require_parentheses - SupportedStyles: - - require_parentheses - - require_no_parentheses - - require_no_parentheses_except_multiline - -# Checks the grouping of mixins (`include`, `extend`, `prepend`) in `class` and -# `module` bodies. -Style/MixinGrouping: - EnforcedStyle: separated - SupportedStyles: - # separated: each mixed in module goes in a separate statement. - # grouped: mixed in modules are grouped into a single statement. - - separated - - grouped - -Style/ModuleFunction: - EnforcedStyle: module_function - SupportedStyles: - - module_function - - extend_self - -Style/MultilineMemoization: - EnforcedStyle: keyword - SupportedStyles: - - keyword - - braces - -Style/NegatedIf: - EnforcedStyle: both - SupportedStyles: - # both: prefix and postfix negated `if` should both use `unless` - # prefix: only use `unless` for negated `if` statements positioned before the body of the statement - # postfix: only use `unless` for negated `if` statements positioned after the body of the statement - - both - - prefix - - postfix - -Style/NestedParenthesizedCalls: - Whitelist: - - be - - be_a - - be_an - - be_between - - be_falsey - - be_kind_of - - be_instance_of - - be_truthy - - be_within - - eq - - eql - - end_with - - include - - match - - raise_error - - respond_to - - start_with - -Style/Next: - # With `always` all conditions at the end of an iteration needs to be - # replaced by next - with `skip_modifier_ifs` the modifier if like this one - # are ignored: [1, 2].each { |a| return 'yes' if a == 1 } - EnforcedStyle: skip_modifier_ifs - # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless` - # needs to have to trigger this cop - MinBodyLength: 3 - SupportedStyles: - - skip_modifier_ifs - - always - -Style/NonNilCheck: - # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for - # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is - # **usually** OK, but might change behavior. - # - # With `IncludeSemanticChanges` set to `false`, this cop does not report - # offenses for `!x.nil?` and does no changes that might change behavior. - IncludeSemanticChanges: false - -Style/NumericLiterals: - MinDigits: 5 - Strict: false - -Style/NumericLiteralPrefix: - EnforcedOctalStyle: zero_with_o - SupportedOctalStyles: - - zero_with_o - - zero_only - -Style/NumericPredicate: - EnforcedStyle: predicate - SupportedStyles: - - predicate - - comparison - # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause - # false positives. - Exclude: - - 'spec/**/*' - -Style/OptionHash: - # A list of parameter names that will be flagged by this cop. - SuspiciousParamNames: - - options - - opts - - args - - params - - parameters - -# Allow safe assignment in conditions. -Style/ParenthesesAroundCondition: - AllowSafeAssignment: true - -Style/PercentLiteralDelimiters: - # Specify the default preferred delimiter for all types with the 'default' key - # Override individual delimiters (even with default specified) by specifying - # an individual key - PreferredDelimiters: - default: () - '%i': '[]' - '%I': '[]' - '%r': '{}' - '%w': '[]' - '%W': '[]' - -Style/PercentQLiterals: - EnforcedStyle: lower_case_q - SupportedStyles: - - lower_case_q # Use `%q` when possible, `%Q` when necessary - - upper_case_q # Always use `%Q` - -Style/PreferredHashMethods: - EnforcedStyle: short - SupportedStyles: - - short - - verbose - -Style/RaiseArgs: - EnforcedStyle: exploded - SupportedStyles: - - compact # raise Exception.new(msg) - - exploded # raise Exception, msg - -Style/RedundantReturn: - # When `true` allows code like `return x, y`. - AllowMultipleReturnValues: false - -# Use `/` or `%r` around regular expressions. -Style/RegexpLiteral: - EnforcedStyle: slashes - # slashes: Always use slashes. - # percent_r: Always use `%r`. - # mixed: Use slashes on single-line regexes, and `%r` on multi-line regexes. - SupportedStyles: - - slashes - - percent_r - - mixed - # If `false`, the cop will always recommend using `%r` if one or more slashes - # are found in the regexp string. - AllowInnerSlashes: false - -Style/ReturnNil: - EnforcedStyle: return - SupportedStyles: - - return - - return_nil - -Style/SafeNavigation: - # Safe navigation may cause a statement to start returning `nil` in addition - # to whatever it used to return. - ConvertCodeThatCanStartToReturnNil: false - -Style/Semicolon: - # Allow `;` to separate several expressions on the same line. - AllowAsExpressionSeparator: false - -Style/SignalException: - EnforcedStyle: only_raise - SupportedStyles: - - only_raise - - only_fail - - semantic - -Style/SingleLineBlockParams: - Methods: - - reduce: - - acc - - elem - - inject: - - acc - - elem - -Style/SingleLineMethods: - AllowIfMethodIsEmpty: true - -Style/SpecialGlobalVars: - EnforcedStyle: use_english_names - SupportedStyles: - - use_perl_names - - use_english_names - -Style/StabbyLambdaParentheses: - EnforcedStyle: require_parentheses - SupportedStyles: - - require_parentheses - - require_no_parentheses - -Style/StringLiterals: - EnforcedStyle: single_quotes - SupportedStyles: - - single_quotes - - double_quotes - # If `true`, strings which span multiple lines using `\` for continuation must - # use the same type of quotes on each line. - ConsistentQuotesInMultiline: false - -Style/StringLiteralsInInterpolation: - EnforcedStyle: single_quotes - SupportedStyles: - - single_quotes - - double_quotes - -Style/StringMethods: - # Mapping from undesired method to desired_method - # e.g. to use `to_sym` over `intern`: - # - # StringMethods: - # PreferredMethods: - # intern: to_sym - PreferredMethods: - intern: to_sym - -Style/SymbolArray: - EnforcedStyle: percent - MinSize: 0 - SupportedStyles: - - percent - - brackets - -Style/SymbolProc: - # A list of method names to be ignored by the check. - # The names should be fairly unique, otherwise you'll end up ignoring lots of code. - IgnoredMethods: - - respond_to - - define_method - -Style/TernaryParentheses: - EnforcedStyle: require_no_parentheses - SupportedStyles: - - require_parentheses - - require_no_parentheses - - require_parentheses_when_complex - AllowSafeAssignment: true - -Style/TrailingCommaInArguments: - # If `comma`, the cop requires a comma after the last argument, but only for - # parenthesized method calls where each argument is on its own line. - # If `consistent_comma`, the cop requires a comma after the last argument, - # for all parenthesized method calls with arguments. - EnforcedStyleForMultiline: no_comma - SupportedStylesForMultiline: - - comma - - consistent_comma - - no_comma - -Style/TrailingCommaInArrayLiteral: - # If `comma`, the cop requires a comma after the last item in an array or - # hash, but only when each item is on its own line. - # If `consistent_comma`, the cop requires a comma after the last item of all - # non-empty array and hash literals. - EnforcedStyleForMultiline: no_comma - SupportedStylesForMultiline: - - comma - - consistent_comma - - no_comma - -Style/TrailingCommaInHashLiteral: - # If `comma`, the cop requires a comma after the last item in an array or - # hash, but only when each item is on its own line. - # If `consistent_comma`, the cop requires a comma after the last item of all - # non-empty array and hash literals. - EnforcedStyleForMultiline: no_comma - SupportedStylesForMultiline: - - comma - - consistent_comma - - no_comma - -# `TrivialAccessors` requires exact name matches and doesn't allow -# predicated methods by default. -Style/TrivialAccessors: - # When set to `false` the cop will suggest the use of accessor methods - # in situations like: - # - # def name - # @other_name - # end - # - # This way you can uncover "hidden" attributes in your code. - ExactNameMatch: true - AllowPredicates: true - # Allows trivial writers that don't end in an equal sign. e.g. - # - # def on_exception(action) - # @on_exception=action - # end - # on_exception :restart - # - # Commonly used in DSLs - AllowDSLWriters: false - IgnoreClassMethods: false - Whitelist: - - to_ary - - to_a - - to_c - - to_enum - - to_h - - to_hash - - to_i - - to_int - - to_io - - to_open - - to_path - - to_proc - - to_r - - to_regexp - - to_str - - to_s - - to_sym - -# `WordArray` enforces how array literals of word-like strings should be expressed. -Style/WordArray: - EnforcedStyle: percent - SupportedStyles: - # percent style: %w(word1 word2) - - percent - # bracket style: ['word1', 'word2'] - - brackets - # The `MinSize` option causes the `WordArray` rule to be ignored for arrays - # smaller than a certain size. The rule is only applied to arrays - # whose element count is greater than or equal to `MinSize`. - MinSize: 0 - # The regular expression `WordRegex` decides what is considered a word. - WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/' - -Style/YodaCondition: - EnforcedStyle: all_comparison_operators - SupportedStyles: - # check all comparison operators - - all_comparison_operators - # check only equality operators: `!=` and `==` - - equality_operators_only - -#################### Metrics ############################### - -Metrics/AbcSize: - # The ABC size is a calculated magnitude, so this number can be an Integer or - # a Float. - Max: 15 - -Metrics/BlockLength: - CountComments: false # count full line comments? - Max: 25 - ExcludedMethods: [] - -Metrics/BlockNesting: - CountBlocks: false - Max: 3 - -Metrics/ClassLength: - CountComments: false # count full line comments? - Max: 100 - -# Avoid complex methods. -Metrics/CyclomaticComplexity: - Max: 6 - -Metrics/LineLength: - Max: 80 - # To make it possible to copy or click on URIs in the code, we allow lines - # containing a URI to be longer than Max. - AllowHeredoc: true - AllowURI: true - URISchemes: - - http - - https - # The IgnoreCopDirectives option causes the LineLength rule to ignore cop - # directives like '# rubocop: enable ...' when calculating a line's length. - IgnoreCopDirectives: false - # The IgnoredPatterns option is a list of !ruby/regexp and/or string - # elements. Strings will be converted to Regexp objects. A line that matches - # any regular expression listed in this option will be ignored by LineLength. - IgnoredPatterns: [] - -Metrics/MethodLength: - CountComments: false # count full line comments? - Max: 10 - -Metrics/ModuleLength: - CountComments: false # count full line comments? - Max: 100 - -Metrics/ParameterLists: - Max: 5 - CountKeywordArgs: true - -Metrics/PerceivedComplexity: - Max: 7 - -#################### Lint ################################## - -# Allow safe assignment in conditions. -Lint/AssignmentInCondition: - AllowSafeAssignment: true - -# checks whether the end keywords are aligned properly for `do` `end` blocks. -Layout/BlockAlignment: - # The value `start_of_block` means that the `end` should be aligned with line - # where the `do` keyword appears. - # The value `start_of_line` means it should be aligned with the whole - # expression's starting line. - # The value `either` means both are allowed. - EnforcedStyleAlignWith: either - SupportedStylesAlignWith: - - either - - start_of_block - - start_of_line - -Layout/DefEndAlignment: - # The value `def` means that `end` should be aligned with the def keyword. - # The value `start_of_line` means that `end` should be aligned with method - # calls like `private`, `public`, etc, if present in front of the `def` - # keyword on the same line. - EnforcedStyleAlignWith: start_of_line - SupportedStylesAlignWith: - - start_of_line - - def - AutoCorrect: false - -# Align ends correctly. -Layout/EndAlignment: - # The value `keyword` means that `end` should be aligned with the matching - # keyword (`if`, `while`, etc.). - # The value `variable` means that in assignments, `end` should be aligned - # with the start of the variable on the left hand side of `=`. In all other - # situations, `end` should still be aligned with the keyword. - # The value `start_of_line` means that `end` should be aligned with the start - # of the line which the matching keyword appears on. - EnforcedStyleAlignWith: keyword - SupportedStylesAlignWith: - - keyword - - variable - - start_of_line - AutoCorrect: false - -Lint/InheritException: - # The default base class in favour of `Exception`. - EnforcedStyle: runtime_error - SupportedStyles: - - runtime_error - - standard_error - -Lint/SafeNavigationChain: - Whitelist: - - present? - - blank? - - presence - - try - -# Checks for unused block arguments -Lint/UnusedBlockArgument: - IgnoreEmptyBlocks: true - AllowUnusedKeywordArguments: false - -# Checks for unused method arguments. -Lint/UnusedMethodArgument: - AllowUnusedKeywordArguments: false - IgnoreEmptyMethods: true - -#################### Performance ########################### - -Performance/DoubleStartEndWith: - # Used to check for `starts_with?` and `ends_with?`. - # These methods are defined by `ActiveSupport`. - IncludeActiveSupportAliases: false - -Performance/RedundantMerge: - # Max number of key-value pairs to consider an offense - MaxKeyValuePairs: 2 - -#################### Rails ################################# - -Rails/ActionFilter: - EnforcedStyle: action - SupportedStyles: - - action - - filter - Include: - - app/controllers/**/*.rb - -Rails/Date: - # The value `strict` disallows usage of `Date.today`, `Date.current`, - # `Date#to_time` etc. - # The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc - # (but not `Date.today`) which are overridden by ActiveSupport to handle current - # time zone. - EnforcedStyle: flexible - SupportedStyles: - - strict - - flexible - -Rails/Delegate: - # When set to true, using the target object as a prefix of the - # method name without using the `delegate` method will be a - # violation. When set to false, this case is legal. - EnforceForPrefixed: true - -Rails/DynamicFindBy: - Whitelist: - - find_by_sql - -Rails/EnumUniqueness: - Include: - - app/models/**/*.rb - -Rails/Exit: - Include: - - app/**/*.rb - - config/**/*.rb - - lib/**/*.rb - Exclude: - - lib/**/*.rake - -Rails/FindBy: - Include: - - app/models/**/*.rb - -Rails/FindEach: - Include: - - app/models/**/*.rb - -Rails/HasAndBelongsToMany: - Include: - - app/models/**/*.rb - -Rails/HasManyOrHasOneDependent: - Include: - - app/models/**/*.rb - -Rails/NotNullColumn: - Include: - - db/migrate/*.rb - -Rails/Output: - Include: - - app/**/*.rb - - config/**/*.rb - - db/**/*.rb - - lib/**/*.rb - -Rails/ReadWriteAttribute: - Include: - - app/models/**/*.rb - -Rails/RequestReferer: - EnforcedStyle: referer - SupportedStyles: - - referer - - referrer - -Rails/ReversibleMigration: - Include: - - db/migrate/*.rb - -Rails/SafeNavigation: - # This will convert usages of `try` to use safe navigation as well as `try!`. - # `try` and `try!` work slighly differently. `try!` and safe navigation will - # both raise a `NoMethodError` if the receiver of the method call does not - # implement the intended method. `try` will not raise an exception for this. - ConvertTry: false - -Rails/ScopeArgs: - Include: - - app/models/**/*.rb - -Rails/TimeZone: - # The value `strict` means that `Time` should be used with `zone`. - # The value `flexible` allows usage of `in_time_zone` instead of `zone`. - EnforcedStyle: flexible - SupportedStyles: - - strict - - flexible - -Rails/UniqBeforePluck: - EnforcedStyle: conservative - SupportedStyles: - - conservative - - aggressive - AutoCorrect: false - -Rails/UnknownEnv: - Environments: - - development - - test - - production - -Rails/SkipsModelValidations: - Blacklist: - - decrement! - - decrement_counter - - increment! - - increment_counter - - toggle! - - touch - - update_all - - update_attribute - - update_column - - update_columns - - update_counters - -Rails/Validation: - Include: - - app/models/**/*.rb - -Bundler/OrderedGems: - TreatCommentsAsGroupSeparators: true