-
-
Save samzhab/28dedda2b9e8888913fc2c09b96f7e19 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Common configuration. | |
AllCops: | |
# Include common Ruby source files. | |
Include: | |
- '**/*.gemspec' | |
- '**/*.podspec' | |
- '**/*.jbuilder' | |
- '**/*.rake' | |
- '**/*.opal' | |
- '**/config.ru' | |
- '**/Gemfile' | |
- '**/Rakefile' | |
- '**/Capfile' | |
- '**/Guardfile' | |
- '**/Podfile' | |
- '**/Thorfile' | |
- '**/Vagrantfile' | |
- '**/Berksfile' | |
- '**/Cheffile' | |
- '**/Vagabondfile' | |
Exclude: | |
- '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: true | |
# 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: true | |
# Extra details are not displayed in offense messages by default. Change | |
# behavior by overriding ExtraDetails, or by giving the | |
# -E/--extra-details option. | |
ExtraDetails: true | |
# 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 DisabledByDefault. When DisabledByDefault is | |
# true, all cops in the default configuration are disabled, and 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. | |
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. The name | |
# "/tmp" is special and will be converted to the system temporary directory, | |
# which is "/tmp" on Unix-like systems, but could be something else on other | |
# systems. | |
CacheRootDirectory: /tmp | |
# What 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.) | |
TargetRubyVersion: 2.3 | |
Layout/AccessModifierIndentation: | |
Description: Check indentation of private/protected visibility modifiers. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#indent-public-private-protected' | |
SupportedStyles: | |
- outdent | |
- indent | |
# By default, the indentation width from Layout/IndentationWidth is used | |
# But it can be overridden by setting this parameter | |
IndentationWidth: ~ | |
Enabled: true | |
Naming/AccessorMethodName: | |
Description: Check the naming of accessor methods for get_/set_. | |
Enabled: true | |
Style/Alias: | |
Description: 'Use alias_method instead of alias.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#alias-method' | |
Enabled: true | |
SupportedStyles: | |
- prefer_alias | |
- prefer_alias_method | |
Layout/AlignArray: | |
Description: >- | |
Align the elements of an array literal if they span more than | |
one line. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#align-multiline-arrays' | |
Enabled: true | |
Layout/AlignHash: | |
Description: >- | |
Align the elements of a hash literal if they span more than | |
one line. | |
Enabled: true | |
# 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: 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: 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: | |
Description: >- | |
Align the parameters of a method call if they span more | |
than one line. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-double-indent' | |
Enabled: true | |
# 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) | |
SupportedStyles: | |
- with_first_parameter | |
- with_fixed_indentation | |
Style/AndOr: | |
Description: 'Use &&/|| instead of and/or.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-and-or-or' | |
Enabled: true | |
# Whether `and` and `or` are banned only in conditionals (conditionals) | |
# or completely (always). | |
SupportedStyles: | |
- always | |
- conditionals | |
Style/ArrayJoin: | |
Description: 'Use Array#join instead of Array#*.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#array-join' | |
Enabled: true | |
Style/AsciiComments: | |
Description: 'Use only ascii symbols in comments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#english-comments' | |
Enabled: true | |
Naming/AsciiIdentifiers: | |
Description: 'Use only ascii symbols in identifiers.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#english-identifiers' | |
Enabled: true | |
Style/Attr: | |
Description: 'Checks for uses of Module#attr.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#attr' | |
Enabled: true | |
Style/AutoResourceCleanup: | |
Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).' | |
Enabled: true | |
Style/BarePercentLiterals: | |
Description: 'Checks if usage of %() or %Q() matches configuration.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-q-shorthand' | |
Enabled: true | |
SupportedStyles: | |
- percent_q | |
- bare_percent | |
Style/BeginBlock: | |
Description: 'Avoid the use of BEGIN blocks.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-BEGIN-blocks' | |
Enabled: true | |
Style/BlockComments: | |
Description: 'Do not use block comments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#single-line-blocks' | |
Enabled: true | |
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 | |
Layout/BlockEndNewline: | |
Description: 'Put end statement of multiline block on its own line.' | |
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: 'https://github.com/samzhab/ruby-style-guide#no-case-equality' | |
Enabled: true | |
Layout/CaseIndentation: | |
Description: 'Indentation of when in a case/when/[else/]end.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#indent-when-to-case' | |
Enabled: true | |
EnforcedStyle: case | |
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: ~ | |
Style/CharacterLiteral: | |
Description: 'Checks for uses of character literals.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-character-literals' | |
Enabled: true | |
Naming/ClassAndModuleCamelCase: | |
Description: 'Use CamelCase for classes and modules.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#camelcase-classes' | |
Enabled: true | |
Style/ClassAndModuleChildren: | |
Description: 'Checks style of children classes and modules.' | |
Enabled: true | |
# 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 / modules with one child. | |
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: 'https://github.com/samzhab/ruby-style-guide#def-self-class-methods' | |
Enabled: true | |
Style/ClassVars: | |
Description: 'Avoid the use of class variables.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-class-vars' | |
Enabled: true | |
Layout/ClosingParenthesisIndentation: | |
Description: 'Checks the indentation of hanging closing parentheses.' | |
Enabled: true | |
Style/CollectionMethods: | |
Description: 'Preferred collection methods.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#map-find-select-reduce-size' | |
Enabled: true | |
# Mapping from undesired method to desired_method | |
# e.g. to use `detect` over `find`: | |
# | |
# CollectionMethods: | |
# PreferredMethods: | |
# find: detect | |
PreferredMethods: | |
collect: 'map' | |
collect!: 'map!' | |
detect: 'find' | |
find_all: 'select' | |
inject: 'reduce' | |
length: 'size' | |
Style/ColonMethodCall: | |
Description: 'Do not use :: for method call.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#double-colons' | |
Enabled: true | |
Style/CommandLiteral: | |
Description: 'Use `` or %x around command literals.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-x' | |
Enabled: true | |
# backticks: Always use backticks. | |
# percent_x: Always use %x. | |
# mixed: Use backticks on single-line commands, and %x on multi-line commands. | |
AllowInnerBackticks: false | |
Style/CommentAnnotation: | |
Description: >- | |
Checks formatting of special comments | |
(TODO, FIXME, OPTIMIZE, HACK, REVIEW). | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#annotate-keywords' | |
Enabled: true | |
Keywords: | |
- TODO | |
- FIXME | |
- OPTIMIZE | |
- HACK | |
- REVIEW | |
Layout/CommentIndentation: | |
Description: 'Indentation of comments.' | |
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 | |
SingleLineConditionsOnly: true | |
# Whether the cop should register offenses for conditionals whose branches | |
# contain more than one statement a piece | |
Naming/ConstantName: | |
Description: 'Constants should use SCREAMING_SNAKE_CASE.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#screaming-snake-case' | |
Enabled: 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: | |
Description: 'Include a copyright notice in each file before any code.' | |
Enabled: true | |
Notice: '(Copyright \(c\) 20\d\d .+|Unknown Copyright)' | |
AutocorrectNotice: '# Copyright (c) 2016 Pete Hanson' | |
Style/DefWithParentheses: | |
Description: 'Use def with parentheses when there are arguments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#method-parens' | |
Enabled: false | |
Style/Documentation: | |
Description: 'Document classes and non-namespace modules.' | |
Enabled: false | |
Exclude: | |
- 'spec/**/*' | |
- 'test/**/*' | |
- 'test_*' | |
Style/DocumentationMethod: | |
Enabled: false | |
RequireForNonPublicMethods: false | |
Layout/DotPosition: | |
Description: 'Checks the position of the dot in multi-line method calls.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#consistent-multi-line-chains' | |
Enabled: true | |
Style/DoubleNegation: | |
Description: 'Checks for uses of double negation (!!).' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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 | |
Layout/ElseAlignment: | |
Description: 'Align elses and elsifs correctly.' | |
Enabled: true | |
Style/EmptyElse: | |
Description: 'Avoid empty else-clauses.' | |
Enabled: true | |
# 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 | |
Layout/EmptyLineBetweenDefs: | |
Enabled: true | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#empty-lines-between-methods' | |
# If true, this parameter means that single line method definitions don't | |
# need an empty line between them. | |
AllowAdjacentOneLineDefs: true | |
Layout/EmptyLines: | |
Description: "Don't use several empty lines in a row." | |
Enabled: true | |
Layout/EmptyLinesAroundAccessModifier: | |
Description: "Keep blank lines around access modifiers." | |
Enabled: true | |
Layout/EmptyLinesAroundBlockBody: | |
Description: "Keeps track of empty lines around block bodies." | |
Enabled: true | |
Layout/EmptyLinesAroundClassBody: | |
Description: "Keeps track of empty lines around class bodies." | |
Enabled: true | |
Layout/EmptyLinesAroundModuleBody: | |
Description: "Keeps track of empty lines around module bodies." | |
Enabled: true | |
Layout/EmptyLinesAroundMethodBody: | |
Description: "Keeps track of empty lines around method bodies." | |
Enabled: true | |
Style/EmptyLiteral: | |
Description: 'Prefer literals to Array.new/Hash.new/String.new.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#literal-array-hash' | |
Enabled: true | |
# Checks whether the source file has a utf-8 encoding comment or not | |
Style/Encoding: | |
Description: 'Use UTF-8 as the source file encoding.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#utf-8' | |
Enabled: true | |
Style/EndBlock: | |
Description: 'Avoid the use of END blocks.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-END-blocks' | |
Enabled: true | |
Layout/EndOfLine: | |
Description: 'Use Unix-style line endings.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#crlf' | |
Enabled: true | |
Style/EvenOdd: | |
Description: 'Favor the use of Integer#even? && Integer#odd?' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#predicate-methods' | |
Enabled: true | |
Layout/ExtraSpacing: | |
Description: 'Do not use unnecessary spacing.' | |
Enabled: true | |
# 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 | |
# Disables checks for snake_case file names. This is needed within Sublime Text | |
# thanks to the use of temporary files. | |
Naming/FileName: | |
Description: 'Use snake_case for source file names.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#snake-case-files' | |
Enabled: true | |
# 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 | |
Layout/FirstArrayElementLineBreak: | |
Description: >- | |
Checks for a line break before the first element in a | |
multi-line array. | |
Enabled: false | |
Layout/FirstHashElementLineBreak: | |
Description: >- | |
Checks for a line break before the first element in a | |
multi-line hash. | |
Enabled: false | |
Layout/FirstMethodArgumentLineBreak: | |
Description: >- | |
Checks for a line break before the first argument in a | |
multi-line method call. | |
Enabled: false | |
Layout/FirstMethodParameterLineBreak: | |
Description: >- | |
Checks for a line break before the first parameter in a | |
multi-line method parameter definition. | |
Enabled: false | |
Layout/FirstParameterIndentation: | |
Description: 'Checks the indentation of the first parameter in a method call.' | |
Enabled: true | |
IndentationWidth: ~ | |
Style/FlipFlop: | |
Description: 'Checks for flip flops' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-flip-flops' | |
Enabled: true | |
Style/For: | |
Description: 'Checks use of for or each in multiline loops.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-for-loops' | |
Enabled: true | |
Style/FormatString: | |
Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#sprintf' | |
Enabled: true | |
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: true | |
Style/GlobalVars: | |
Description: 'Do not introduce global variables.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#instance-vars' | |
Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html' | |
Enabled: true | |
AllowedVariables: [] | |
Style/GuardClause: | |
Description: 'Check for conditionals that can be replaced with guard clauses' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-nested-conditionals' | |
Enabled: true | |
# `MinBodyLength` defines the number of lines of the a body of an if / unless | |
# needs to have to trigger this cop | |
MinBodyLength: 1 | |
Style/HashSyntax: | |
Description: >- | |
Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax | |
{ :a => 1, :b => 2 }. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#hash-literals' | |
Enabled: true | |
UseHashRocketsWithSymbolValues: false | |
# Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style | |
PreferHashRocketsForNonAlnumEndingSymbols: false | |
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: 'https://github.com/samzhab/ruby-style-guide#if-as-a-modifier' | |
Enabled: true | |
MaxLineLength: 80 | |
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: 'https://github.com/samzhab/ruby-style-guide#no-semicolon-ifs' | |
Enabled: true | |
Layout/IndentationConsistency: | |
Description: 'Keep indentation straight.' | |
Enabled: true | |
# 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. | |
Layout/IndentationWidth: | |
Description: 'Use 2 spaces for indentation.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-indentation' | |
Enabled: true | |
# Number of spaces for each indentation level. | |
Width: 2 | |
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/ImplicitRuntimeError: | |
Description: >- | |
Use `raise` or `fail` with an explicit exception class and | |
message, rather than just a message. | |
Enabled: true | |
Layout/IndentArray: | |
Description: >- | |
Checks the indentation of the first element in an array | |
literal. | |
Enabled: true | |
# 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. | |
# By default, the indentation width from Layout/IndentationWidth is used | |
# But it can be overridden by setting this parameter | |
IndentationWidth: ~ | |
Layout/IndentAssignment: | |
Description: >- | |
Checks the indentation of the first line of the | |
right-hand-side of a multi-line assignment. | |
Enabled: true | |
# By default, the indentation width from Layout/IndentationWidth is used | |
# But it can be overridden by setting this parameter | |
IndentationWidth: ~ | |
Layout/IndentHash: | |
Description: 'Checks the indentation of the first key in a hash literal.' | |
Enabled: true | |
# 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. | |
# By default, the indentation width from Layout/IndentationWidth is used | |
# But it can be overridden by setting this parameter | |
IndentationWidth: ~ | |
Style/InfiniteLoop: | |
Description: 'Use Kernel#loop for infinite loops.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#infinite-loop' | |
Enabled: true | |
Layout/InitialIndentation: | |
Description: >- | |
Checks the indentation of the first non-blank non-comment line in a file. | |
Enabled: true | |
Style/InlineComment: | |
Description: 'Avoid trailing inline comments.' | |
Enabled: false | |
Style/Lambda: | |
Description: 'Use the new lambda literal syntax for single-line blocks.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#lambda-multi-line' | |
Enabled: true | |
Style/LambdaCall: | |
Description: 'Use lambda.call(...) instead of lambda.(...).' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#proc-call' | |
Enabled: true | |
Layout/LeadingCommentSpace: | |
Description: 'Comments should start with a space.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#hash-space' | |
Enabled: true | |
Style/LineEndConcatenation: | |
Description: >- | |
Use \ instead of + or << to concatenate two string literals at | |
line end. | |
Enabled: true | |
Style/MethodCalledOnDoEndBlock: | |
Description: 'Avoid chaining a method call on a do...end block.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#single-line-blocks' | |
Enabled: true | |
Style/MethodCallWithoutArgsParentheses: | |
Description: 'Do not use parentheses for method calls with no arguments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#method-invocation-parens' | |
Enabled: true | |
Style/MethodDefParentheses: | |
Description: >- | |
Checks if the method definitions have or don't have | |
parentheses. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#method-parens' | |
Enabled: true | |
SupportedStyles: | |
- require_parentheses | |
- require_no_parentheses | |
- require_no_parentheses_except_multiline | |
Style/MethodMissing: | |
Description: 'Avoid using `method_missing`.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-method-missing' | |
Enabled: true | |
Naming/MethodName: | |
Description: 'Use the configured style when naming methods.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#snake-case-symbols-methods-vars' | |
Enabled: true | |
SupportedStyles: | |
- snake_case | |
- camelCase | |
Style/ModuleFunction: | |
SupportedStyles: | |
- module_function | |
- extend_self | |
Style/MissingElse: | |
Description: >- | |
Require if/case expressions to have an else branches. | |
If enabled, it is recommended that | |
Style/UnlessElse and Style/EmptyElse be enabled. | |
This will conflict with Style/EmptyElse if | |
Style/EmptyElse is configured to style "both" | |
Enabled: false | |
SupportedStyles: | |
# if - warn when an if expression is missing an else branch | |
# case - warn when a case expression is misisng an else branch | |
# both - warn when an if or case expression is missing an else branch | |
- if | |
- case | |
- both | |
Style/ModuleFunction: | |
Description: 'Checks for usage of `extend self` in modules.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#module-function' | |
Enabled: true | |
Layout/MultilineArrayBraceLayout: | |
Description: >- | |
Checks that the closing brace in an array literal is | |
symmetrical with respect to the opening brace and the | |
array elements. | |
Enabled: true | |
Layout/MultilineAssignmentLayout: | |
Description: 'Check for a newline after the assignment operator in multi-line assignments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#indent-conditional-assignment' | |
Enabled: true | |
# The types of assignments which are subject to this rule. | |
SupportedTypes: | |
- case | |
- class | |
- if | |
- kwbegin | |
- module | |
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 | |
Style/MultilineBlockChain: | |
Description: 'Avoid multi-line chains of blocks.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#single-line-blocks' | |
Enabled: true | |
Layout/MultilineBlockLayout: | |
Description: 'Ensures newlines after multiline block do statements.' | |
Enabled: true | |
Style/MultilineIfThen: | |
Description: 'Do not use then for multi-line if/unless.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-then' | |
Enabled: true | |
Layout/MultilineMethodCallIndentation: | |
Description: >- | |
Checks indentation of method calls with the dot operator | |
that span more than one line. | |
Enabled: true | |
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/MultilineOperationIndentation: | |
Description: >- | |
Checks indentation of binary operations that span more than | |
one line. | |
Enabled: true | |
SupportedStyles: | |
- aligned | |
- indented | |
# By default, the indentation width from Layout/IndentationWidth is used | |
# But it can be overridden by setting this parameter | |
IndentationWidth: ~ | |
Style/MultilineTernaryOperator: | |
Description: >- | |
Avoid multi-line ?: (the ternary operator); | |
use if/unless instead. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-multiline-ternary' | |
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: 'https://github.com/samzhab/ruby-style-guide#unless-for-negatives' | |
Enabled: true | |
Style/NegatedWhile: | |
Description: 'Favor until over while for negative conditions.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#until-for-negatives' | |
Enabled: true | |
Style/NestedModifier: | |
Description: 'Avoid using nested modifiers.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#no-nested-ternary' | |
Enabled: true | |
Style/Next: | |
Description: 'Use `next` to skip iteration instead of a condition at the end.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-nested-conditionals' | |
Enabled: true | |
# 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 } | |
# `MinBodyLength` defines the number of lines of the a body of an if / unless | |
# needs to have to trigger this cop | |
MinBodyLength: 3 | |
SupportedStyles: | |
- skip_modifier_ifs | |
- always | |
Style/NilComparison: | |
Description: 'Prefer x.nil? to x == nil.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#predicate-methods' | |
Enabled: true | |
Style/NonNilCheck: | |
Enabled: true | |
Description: 'Checks for redundant nil checks.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-non-nil-checks' | |
# 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: true | |
Style/Not: | |
Description: 'Use ! instead of not.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#bang-not-not' | |
Enabled: true | |
Style/NumericLiterals: | |
Description: >- | |
Add underscores to large numeric literals to improve their | |
readability. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#underscores-in-numerics' | |
Enabled: true | |
MinDigits: 5 | |
Style/NumericLiteralPrefix: | |
Enabled: true | |
EnforcedOctalStyle: zero_with_o | |
SupportedOctalStyles: | |
- zero_with_o | |
- zero_only | |
Style/NumericPredicate: | |
Description: >- | |
Checks for the use of predicate- or comparison methods for | |
numeric comparisons. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#predicate-methods' | |
Enabled: true | |
SupportedStyles: | |
- predicate | |
- comparison | |
# Exclude RSpec specs because assertions like `expect(1).to be > 0` cause | |
# false positives. | |
Exclude: | |
- 'spec/**/*' | |
Style/OneLineConditional: | |
Description: >- | |
Favor the ternary operator(?:) over | |
if/then/else/end constructs. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#ternary-operator' | |
Enabled: true | |
Naming/BinaryOperatorParameterName: | |
Description: 'When defining binary operators, name the argument other.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#other-arg' | |
Enabled: true | |
Style/OptionalArguments: | |
Description: >- | |
Checks for optional arguments that do not appear at the end | |
of the argument list | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#optional-arguments' | |
Enabled: true | |
Style/OptionHash: | |
Description: "Don't use option hashes when you can use keyword arguments." | |
Enabled: true | |
# A list of parameter names that will be flagged by this cop. | |
SuspiciousParamNames: | |
- options | |
- opts | |
- args | |
- params | |
- parameters | |
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: 'https://github.com/samzhab/ruby-style-guide#parallel-assignment' | |
Enabled: true | |
Style/ParenthesesAroundCondition: | |
Description: >- | |
Don't use parentheses around the condition of an | |
if/unless/while. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-parens-if' | |
Enabled: true | |
AllowSafeAssignment: false | |
Style/PercentLiteralDelimiters: | |
Description: 'Use `%`-literal delimiters consistently' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-literal-braces' | |
Enabled: true | |
PreferredDelimiters: | |
'%': () | |
'%i': () | |
'%q': () | |
'%Q': () | |
'%r': '{}' | |
'%s': () | |
'%w': () | |
'%W': () | |
'%x': () | |
Style/PercentQLiterals: | |
Description: 'Checks if uses of %Q/%q match the configured preference.' | |
Enabled: true | |
SupportedStyles: | |
- lower_case_q # Use %q when possible, %Q when necessary | |
- upper_case_q # Always use %Q | |
Style/PerlBackrefs: | |
Description: 'Avoid Perl-style regex back references.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-perl-regexp-last-matchers' | |
Enabled: true | |
Naming/PredicateName: | |
Description: 'Check the names of predicate methods.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#bool-methods-qmark' | |
Enabled: true | |
# 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? | |
Style/Proc: | |
Description: 'Use proc instead of Proc.new.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#proc' | |
Enabled: true | |
Style/RaiseArgs: | |
Description: 'Checks the arguments passed to raise/fail.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#exception-class-messages' | |
Enabled: true | |
SupportedStyles: | |
- compact # raise Exception.new(msg) | |
- exploded # raise Exception, msg | |
Style/RedundantBegin: | |
Description: "Don't use begin blocks when they are not needed." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#begin-implicit' | |
Enabled: true | |
Style/RedundantException: | |
Description: "Checks for an obsolete RuntimeException argument in raise/fail." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#no-explicit-return' | |
Enabled: true | |
# When true allows code like `return x, y`. | |
AllowMultipleReturnValues: false | |
Style/RedundantSelf: | |
Description: "Don't use self where it's not needed." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-self-unless-required' | |
Enabled: true | |
Style/RegexpLiteral: | |
Description: 'Use / or %r around regular expressions.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-r' | |
Enabled: true | |
# 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 | |
Layout/RescueEnsureAlignment: | |
Description: 'Align rescues and ensures correctly.' | |
Enabled: true | |
Style/RescueModifier: | |
Description: 'Avoid using rescue in its modifier form.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#self-assignment' | |
Enabled: true | |
Style/Semicolon: | |
Description: "Don't use semicolons to terminate expressions." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-semicolon' | |
Enabled: true | |
# Allow ; to separate several expressions on the same line. | |
AllowAsExpressionSeparator: false | |
Style/Send: | |
Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#prefer-public-send' | |
Enabled: true | |
Style/SignalException: | |
Description: 'Checks for proper usage of fail and raise.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#fail-method' | |
Enabled: true | |
SupportedStyles: | |
- only_raise | |
- only_fail | |
- semantic | |
Style/SingleLineBlockParams: | |
Description: Enforces the names of some block params. | |
StyleGuide: https://github.com/samzhab/ruby-style-guide#reduce-blocks | |
Enabled: false | |
Methods: | |
- reduce: | |
- a | |
- e | |
- inject: | |
- a | |
- e | |
Style/SingleLineMethods: | |
Description: 'Avoid single-line methods.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-single-line-methods' | |
Enabled: true | |
AllowIfMethodIsEmpty: true | |
Layout/SpaceAfterColon: | |
Description: 'Use spaces after colons.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-operators' | |
Enabled: true | |
Layout/SpaceAfterComma: | |
Description: 'Use spaces after commas.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#parens-no-spaces' | |
Enabled: true | |
Layout/SpaceAfterNot: | |
Description: Tracks redundant space after the ! operator. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-space-bang' | |
Enabled: true | |
Layout/SpaceAfterSemicolon: | |
Description: 'Use spaces after semicolons.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-operators' | |
Enabled: true | |
Layout/SpaceAroundBlockParameters: | |
Description: 'Checks the spacing inside and after block parameters pipes.' | |
Enabled: true | |
EnforcedStyleInsidePipes: no_space | |
Layout/SpaceAroundEqualsInParameterDefault: | |
Description: >- | |
Checks that the equals signs in parameter default assignments | |
have or don't have surrounding space depending on | |
configuration. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-around-equals' | |
Enabled: true | |
Layout/SpaceAroundKeyword: | |
Description: 'Use spaces around keywords.' | |
Enabled: true | |
Layout/SpaceAroundOperators: | |
Description: 'Use a single space around operators.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-operators' | |
Enabled: true | |
# 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/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/SpaceBeforeBlockBraces: | |
Description: >- | |
Checks that the left block brace has or doesn't have space | |
before it. | |
Enabled: true | |
SupportedStyles: | |
- space | |
- no_space | |
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/SpaceBeforeFirstArg: | |
Description: >- | |
Checks that exactly one space is used between a method name | |
and the first argument for method calls without parentheses. | |
Enabled: true | |
# 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/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 | |
SupportedStyles: | |
- space | |
- no_space | |
# Valid values are: space, no_space | |
EnforcedStyleForEmptyBraces: no_space | |
# Space between { and |. Overrides EnforcedStyle if there is a conflict. | |
SpaceBeforeBlockParameters: true | |
Layout/SpaceInsideBrackets: | |
Description: 'No spaces after [ or before ].' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-spaces-braces' | |
Enabled: true | |
Layout/SpaceInsideHashLiteralBraces: | |
Description: "Use spaces inside hash literal braces - or don't." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-operators' | |
Enabled: true | |
EnforcedStyleForEmptyBraces: no_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 | |
Layout/SpaceInsideParens: | |
Description: 'No spaces after ( or before ).' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-spaces-braces' | |
Enabled: true | |
Layout/SpaceInsideRangeLiteral: | |
Description: 'No spaces inside range literals.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-space-inside-range-literals' | |
Enabled: true | |
Layout/SpaceInsideStringInterpolation: | |
Description: 'Checks for padding/surrounding spaces inside string interpolation.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#string-interpolation' | |
Enabled: true | |
SupportedStyles: | |
- space | |
- no_space | |
Style/SpecialGlobalVars: | |
Description: 'Avoid Perl-style global variables.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-cryptic-perlisms' | |
Enabled: true | |
SupportedStyles: | |
- use_perl_names | |
- use_english_names | |
Style/StabbyLambdaParentheses: | |
Description: 'Check for the usage of parentheses around stabby lambda arguments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#stabby-lambda-with-args' | |
Enabled: true | |
SupportedStyles: | |
- require_parentheses | |
- require_no_parentheses | |
Style/StringLiterals: | |
Description: 'Checks if uses of quotes match the configured preference.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#consistent-string-literals' | |
Enabled: true | |
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: | |
Description: >- | |
Checks if uses of quotes inside expressions in interpolated | |
strings match the configured preference. | |
Enabled: true | |
SupportedStyles: | |
- single_quotes | |
- double_quotes | |
Style/StringMethods: | |
Description: 'Checks if configured preferred methods are used over non-preferred.' | |
Enabled: true | |
# 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/StructInheritance: | |
Description: 'Checks for inheritance from Struct.new.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-extend-struct-new' | |
Enabled: true | |
Style/SymbolArray: | |
Description: 'Use %i or %I for arrays of symbols.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-i' | |
Enabled: true | |
SupportedStyles: | |
- percent | |
- brackets | |
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 | |
# 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 | |
Layout/Tab: | |
Description: 'No hard tabs.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#spaces-indentation' | |
Enabled: true | |
Style/TernaryParentheses: | |
Description: 'Checks for use of parentheses around ternary conditions.' | |
Enabled: false | |
SupportedStyles: | |
- require_parentheses | |
- require_no_parentheses | |
AllowSafeAssignment: false | |
Layout/TrailingBlankLines: | |
Description: 'Checks trailing blank lines and final newline.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#newline-eof' | |
Enabled: true | |
SupportedStyles: | |
- final_newline | |
- final_blank_line | |
Layout/TrailingWhitespace: | |
Description: 'Avoid trailing whitespace.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-trailing-whitespace' | |
Enabled: true | |
# TrivialAccessors requires exact name matches and doesn't allow | |
# predicated methods by default. | |
Style/TrivialAccessors: | |
Description: 'Prefer attr_* methods to trivial readers/writers.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#attr_family' | |
Enabled: true | |
# 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: false | |
AllowPredicates: false | |
# 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 | |
Style/UnlessElse: | |
Description: >- | |
Do not use unless with else. Rewrite these with the positive | |
case first. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#curlies-interpolate' | |
Enabled: true | |
Naming/VariableName: | |
Description: 'Use the configured style when naming variables.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#snake-case-symbols-methods-vars' | |
Enabled: true | |
SupportedStyles: | |
- snake_case | |
- camelCase | |
Naming/VariableNumber: | |
Description: 'Use the configured style when numbering variables.' | |
Enabled: true | |
SupportedStyles: | |
- snake_case | |
- normalcase | |
- non_integer | |
Style/WhenThen: | |
Description: 'Use when x then ... for one-line cases.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#one-line-cases' | |
Enabled: true | |
Style/WhileUntilDo: | |
Description: 'Checks for redundant do after while or until.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-multiline-while-do' | |
Enabled: true | |
Style/WhileUntilModifier: | |
Description: >- | |
Favor modifier while/until usage when you have a | |
single-line body. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#while-as-a-modifier' | |
Enabled: true | |
MaxLineLength: 80 | |
Style/WordArray: | |
Description: 'Use %w or %W for arrays of words.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#percent-w' | |
Enabled: true | |
SupportedStyles: | |
- percent | |
- brackets | |
MinSize: 0 | |
# The regular expression WordRegex decides what is considered a word. | |
WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/' | |
##################### Metrics ################################## | |
Metrics/AbcSize: | |
# The ABC size is a calculated magnitude, so this number can be an Integer or | |
# a Float. | |
Description: >- | |
A calculated magnitude based on number of assignments, | |
branches, and conditions. | |
Reference: 'http://c2.com/cgi/wiki?AbcMetric' | |
Enabled: true | |
Max: 18 | |
Metrics/BlockNesting: | |
Description: 'Avoid excessive block nesting' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#three-is-the-number-thou-shalt-count' | |
Enabled: true | |
Max: 3 | |
Metrics/ClassLength: | |
Description: 'Avoid classes longer than 100 lines of code.' | |
Enabled: true | |
CountComments: false # count full line comments? | |
Max: 130 | |
Metrics/ModuleLength: | |
Description: 'Avoid modules longer than 100 lines of code.' | |
Enabled: true | |
CountComments: false # count full line comments? | |
Max: 100 | |
Metrics/CyclomaticComplexity: | |
Description: >- | |
A complexity metric that is strongly correlated to the number | |
of test cases needed to validate a method. | |
Enabled: true | |
Max: 6 | |
Metrics/LineLength: | |
Description: 'Limit lines to 100 characters.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#80-character-limits' | |
Enabled: true | |
Max: 100 | |
# To make it possible to copy or click on URIs in the code, we allow lines | |
# contaning a URI to be longer than Max. | |
AllowURI: true | |
URISchemes: | |
- http | |
- https | |
Metrics/MethodLength: | |
Description: 'Avoid methods longer than 10 lines of code.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#short-methods' | |
Enabled: true | |
CountComments: false # count full line comments? | |
Max: 20 | |
Metrics/ParameterLists: | |
Description: 'Avoid parameter lists longer than three or four parameters.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#too-many-params' | |
Enabled: true | |
Max: 5 | |
CountKeywordArgs: true | |
Metrics/PerceivedComplexity: | |
Description: >- | |
A complexity metric geared towards measuring complexity for a | |
human reader. | |
Enabled: true | |
Max: 7 | |
##################### Lint ################################## | |
Lint/AmbiguousOperator: | |
Description: >- | |
Checks for ambiguous operators in the first argument of a | |
method invocation without parentheses. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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 | |
# Allow safe assignment in conditions. | |
Lint/AssignmentInCondition: | |
Description: "Don't use assignment in conditions." | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#safe-assignment-in-condition' | |
AllowSafeAssignment: false | |
Lint/BlockAlignment: | |
Description: 'Align block ends correctly.' | |
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: 'https://github.com/samzhab/ruby-style-guide#same-line-condition' | |
Enabled: true | |
Lint/Debugger: | |
Description: 'Check for debugger calls.' | |
Enabled: true | |
Lint/InheritException: | |
# The default base class in favour of `Exception`. | |
Enabled: true | |
SupportedStyles: | |
- runtime_error | |
- standard_error | |
Lint/DeprecatedClassMethods: | |
Description: 'Check for deprecated class method calls.' | |
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 | |
Lint/EmptyInterpolation: | |
Description: 'Checks for empty string interpolation.' | |
Enabled: true | |
Lint/EnsureReturn: | |
Description: 'Do not use return in an ensure block.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-return-ensure' | |
Enabled: true | |
Security/Eval: | |
Description: 'The use of eval represents a serious security risk.' | |
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: 'https://github.com/samzhab/ruby-style-guide#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/LiteralInInterpolation: | |
Description: 'Avoid interpolating literals in strings' | |
AutoCorrect: false | |
Lint/Loop: | |
Description: >- | |
Use Kernel#loop with break rather than begin/end/until or | |
begin/end/while for post-loop tests. | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#loop-with-break' | |
Enabled: true | |
Lint/NestedMethodDefinition: | |
Description: 'Do not use nested method definitions.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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: 'https://github.com/samzhab/ruby-style-guide#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/RequireParentheses: | |
Description: >- | |
Use parentheses in the method call to avoid confusion | |
about precedence. | |
Enabled: true | |
Lint/RescueException: | |
Description: 'Avoid rescuing the Exception class.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#no-blind-rescues' | |
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: 'https://github.com/samzhab/ruby-style-guide#no-to-s' | |
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/UnneededSplatExpansion: | |
Description: 'Checks for splat unnecessarily being called on literals' | |
Enabled: true | |
Lint/UnusedBlockArgument: | |
Description: 'Checks for unused block arguments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#underscore-unused-vars' | |
Enabled: true | |
AllowUnusedKeywordArguments: false | |
Lint/UnusedMethodArgument: | |
Description: 'Checks for unused method arguments.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#underscore-unused-vars' | |
AllowUnusedKeywordArguments: false | |
IgnoreEmptyMethods: true | |
Enabled: true | |
Lint/UnreachableCode: | |
Description: 'Unreachable code.' | |
Enabled: true | |
Lint/UselessAccessModifier: | |
Description: 'Checks for useless access modifiers.' | |
Enabled: true | |
ContextCreatingMethods: [] | |
Lint/UselessAssignment: | |
Description: 'Checks for useless assignment to a local variable.' | |
StyleGuide: 'https://github.com/samzhab/ruby-style-guide#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/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/Casecmp: | |
Description: 'Use `casecmp` rather than `downcase ==`.' | |
Reference: 'https://github.com/samzhab/fast-ruby#stringcasecmp-vs-stringdowncase---code' | |
Enabled: false | |
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/samzhab/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' | |
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/samzhab/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' | |
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/samzhab/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: 'https://github.com/samzhab/ruby-style-guide#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/samzhab/fast-ruby#cover-vs-include-code' | |
Enabled: true | |
Performance/RedundantBlockCall: | |
Description: 'Use `yield` instead of `block.call`.' | |
Reference: 'https://github.com/samzhab/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/samzhab/fast-ruby#hashmerge-vs-hash-code' | |
Enabled: true | |
Performance/RedundantSortBy: | |
Description: 'Use `sort` instead of `sort_by { |x| x }`.' | |
Enabled: true | |
Performance/ReverseEach: | |
Description: 'Use `reverse_each` instead of `reverse.each`.' | |
Reference: 'https://github.com/samzhab/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/samzhab/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/samzhab/fast-ruby#arraycount-vs-arraysize-code' | |
Enabled: true | |
Performance/StartWith: | |
Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.' | |
Reference: 'https://github.com/samzhab/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' | |
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/samzhab/fast-ruby#stringgsub-vs-stringtr-code' | |
Enabled: true | |
Performance/TimesMap: | |
Description: 'Checks for .times.map calls.' | |
Enabled: true | |
##################### Rails ################################## | |
# By default, the rails cops are not run. Override in project or home | |
# directory .rubocop.yml files, or by giving the -R/--rails option. | |
Rails: | |
Enabled: false | |
Rails/ActionFilter: | |
Description: 'Enforces consistent use of action filter methods.' | |
Enabled: true | |
SupportedStyles: | |
- action | |
- filter | |
Include: | |
- app/controllers/**/*.rb | |
Rails/Date: | |
Description: >- | |
Checks the correct usage of date aware methods, | |
such as Date.today, Date.current etc. | |
Enabled: true | |
# 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 overriden by ActiveSupport to handle current | |
# time zone. | |
SupportedStyles: | |
- strict | |
- flexible | |
Rails/Delegate: | |
Description: 'Prefer delegate method for delegations.' | |
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 | |
Include: | |
- app/**/*.rb | |
- config/**/*.rb | |
- lib/**/*.rb | |
Exclude: | |
- lib/**/*.rake | |
Rails/FindBy: | |
Description: 'Prefer find_by over where.first.' | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#find_by' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Rails/FindEach: | |
Description: 'Prefer all.find_each over all.find.' | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#find-each' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Rails/HasAndBelongsToMany: | |
Description: 'Prefer has_many :through to has_and_belongs_to_many.' | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#has-many-through' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Rails/NotNullColumn: | |
Description: 'Do not add a NOT NULL column without a default value' | |
Enabled: true | |
Include: | |
- db/migrate/*.rb | |
Rails/Output: | |
Description: 'Checks for calls to puts, print, etc.' | |
Enabled: true | |
Include: | |
- app/**/*.rb | |
- config/**/*.rb | |
- db/**/*.rb | |
- lib/**/*.rb | |
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/ReadWriteAttribute: | |
Description: >- | |
Checks for read_attribute(:attr) and | |
write_attribute(:attr, val). | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#read-attribute' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Rails/RequestReferer: | |
SupportedStyles: | |
- referer | |
- referrer | |
Description: 'Use consistent syntax for request.referer.' | |
Enabled: true | |
Rails/SafeNavigation: | |
Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`" | |
Enabled: true | |
# 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/SaveBang: | |
Description: 'Identifies possible cases where Active Record save! or related should be used.' | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#save-bang' | |
Enabled: true | |
Rails/ScopeArgs: | |
Description: 'Checks the arguments of ActiveRecord scopes.' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Rails/TimeZone: | |
Description: 'Checks the correct usage of time zone aware methods.' | |
StyleGuide: 'https://github.com/samzhab/rails-style-guide#time' | |
Reference: 'http://danilenko.org/2012/7/6/rails_timezones' | |
Enabled: true | |
# The value `strict` means that `Time` should be used with `zone`. | |
# The value `flexible` allows usage of `in_time_zone` instead of `zone`. | |
SupportedStyles: | |
- strict | |
- flexible | |
Rails/Validation: | |
Description: 'Use validates :attribute, hash of validations.' | |
Enabled: true | |
Include: | |
- app/models/**/*.rb | |
Security/JSONLoad: | |
Description : 'Prefer usage of JSON.parse' | |
Enabled: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
update to ruby 3.0.0 and used params fitting project needs