Last active
December 3, 2018 11:06
-
-
Save leemour/14694199efecab86e9af7679cd27b58c to your computer and use it in GitHub Desktop.
Rubocop config
This file contains hidden or 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
# inherit_from: .rubocop_todo.yml | |
AllCops: | |
# Default formatter will be used if no `-f/--format` option is given. | |
DefaultFormatter: fuubar | |
# Cop names are displayed in offense messages by default. Change behavior | |
# by overriding DisplayCopNames, or by giving the `--no-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 | |
# When specifying style guide URLs, any paths and/or fragments will be | |
# evaluated relative to the base URL. | |
StyleGuideBaseURL: https://github.com/rubocop-hq/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 configured `Enabled: false` in this file 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 configured `Enabled: false` | |
# in this file 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. Acceptable | |
# values are specificed as a float (i.e. 2.5); the teeny version of Ruby | |
# should not be included. If the project specifies a Ruby version in the | |
# .ruby-version file, Gemfile or gems.rb file, RuboCop will try to determine | |
# the desired version of Ruby by inspecting the .ruby-version file first, | |
# followed by the Gemfile.lock or gems.locked file. (Although the Ruby version | |
# is specified in the Gemfile or gems.rb file, RuboCop reads the final value | |
# from the lock file.) If the Ruby version is still unresolved, RuboCop will | |
# use the oldest officially supported Ruby version (currently Ruby 2.2). | |
TargetRubyVersion: ~ | |
# What version of Rails is the inspected code using? If a value is specified | |
# for TargetRailsVersion then it is used. Acceptable values are specificed | |
# as a float (i.e. 5.1); the patch version of Rails should not be included. | |
# If TargetRailsVersion is not set, RuboCop will parse the Gemfile.lock or | |
# gems.locked file to find the version of Rails that has been bound to the | |
# application. If neither of those files exist, RuboCop will use Rails 5.0 | |
# as the default. | |
TargetRailsVersion: ~ | |
#################### Layout ########################### | |
Layout/AlignArray: | |
Description: >- | |
Align the elements of an array literal if they span more than | |
one line. | |
StyleGuide: '#align-multiline-arrays' | |
Enabled: false | |
VersionAdded: '0.49' | |
Layout/AlignHash: | |
Description: >- | |
Align the elements of a hash literal if they span more than | |
one line. | |
Enabled: true | |
VersionAdded: '0.49' | |
# 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 | |
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: table | |
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: ignore_implicit | |
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: '#no-double-indent' | |
Enabled: true | |
VersionAdded: '0.49' | |
# 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_fixed_indentation | |
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: ~ | |
Layout/BlockAlignment: | |
Description: 'Align block ends correctly.' | |
Enabled: true | |
VersionAdded: '0.53' | |
# 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: start_of_line | |
SupportedStylesAlignWith: | |
- either | |
- start_of_block | |
- start_of_line | |
Layout/CaseIndentation: | |
Description: 'Indentation of when in a case/when/[else/]end.' | |
StyleGuide: '#indent-when-to-case' | |
Enabled: true | |
VersionAdded: '0.49' | |
EnforcedStyle: end | |
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: ~ | |
Layout/ClassStructure: | |
Description: 'Enforces a configured order of definitions within a class body.' | |
StyleGuide: 'https://github.com/rubocop-hq/ruby-style-guide#consistent-classes' | |
Enabled: true | |
VersionAdded: '0.52' | |
Categories: | |
module_inclusion: | |
- include | |
- prepend | |
- extend | |
attribute: | |
- attr_accessor | |
- attr_reader | |
- attr_writer | |
association: | |
- belongs_to | |
- has_many | |
- has_one | |
ExpectedOrder: | |
- module_inclusion | |
- constants | |
- public_class_methods | |
- initializer | |
- public_methods | |
- protected_methods | |
- private_methods | |
Layout/EndAlignment: | |
Description: 'Align ends correctly.' | |
Enabled: true | |
VersionAdded: '0.53' | |
# 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: start_of_line | |
SupportedStylesAlignWith: | |
- keyword | |
- variable | |
- start_of_line | |
AutoCorrect: false | |
Severity: warning | |
Layout/EndOfLine: | |
Description: 'Use Unix-style line endings.' | |
StyleGuide: '#crlf' | |
Enabled: true | |
VersionAdded: '0.49' | |
# 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: lf | |
SupportedStyles: | |
- native | |
- lf | |
- crlf | |
Layout/FirstMethodArgumentLineBreak: | |
Description: >- | |
Checks for a line break before the first argument in a | |
multi-line method call. | |
Enabled: true | |
VersionAdded: '0.49' | |
Layout/FirstMethodParameterLineBreak: | |
Description: >- | |
Checks for a line break before the first parameter in a | |
multi-line method parameter definition. | |
Enabled: true | |
VersionAdded: '0.49' | |
Layout/FirstParameterIndentation: | |
Description: 'Checks the indentation of the first parameter in a method call.' | |
Enabled: true | |
VersionAdded: '0.49' | |
VersionChanged: '0.56' | |
EnforcedStyle: consistent | |
SupportedStyles: | |
# The first parameter should always be indented one step more than the | |
# preceding line. | |
- consistent | |
# The first parameter should always be indented one level relative to the | |
# parent that is receiving the parameter | |
- consistent_relative_to_receiver | |
# 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/IndentArray: | |
Description: >- | |
Checks the indentation of the first element in an array | |
literal. | |
Enabled: true | |
VersionAdded: '0.49' | |
# 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: consistent | |
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: ~ | |
Layout/IndentAssignment: | |
Description: >- | |
Checks the indentation of the first line of the | |
right-hand-side of a multi-line assignment. | |
Enabled: false | |
VersionAdded: '0.49' | |
# 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 | |
VersionAdded: '0.49' | |
# 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: consistent | |
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: | |
Description: 'This cop checks the indentation of the here document bodies.' | |
StyleGuide: '#squiggly-heredocs' | |
Enabled: true | |
VersionAdded: '0.49' | |
EnforcedStyle: squiggly | |
SupportedStyles: | |
- auto_detection | |
- squiggly | |
- active_support | |
- powerpack | |
- unindent | |
Layout/IndentationConsistency: | |
Description: 'Keep indentation straight.' | |
StyleGuide: '#spaces-indentation' | |
Enabled: true | |
VersionAdded: '0.49' | |
# 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/MultilineAssignmentLayout: | |
Description: 'Check for a newline after the assignment operator in multi-line assignments.' | |
StyleGuide: '#indent-conditional-assignment' | |
Enabled: false | |
VersionAdded: '0.49' | |
# The types of assignments which are subject to this rule. | |
SupportedTypes: | |
- block | |
- case | |
- class | |
- if | |
- kwbegin | |
- module | |
EnforcedStyle: same_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/MultilineMethodCallIndentation: | |
Description: >- | |
Checks indentation of method calls with the dot operator | |
that span more than one line. | |
Enabled: true | |
VersionAdded: '0.49' | |
EnforcedStyle: indented | |
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: | |
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 | |
VersionAdded: '0.49' | |
EnforcedStyle: new_line | |
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/SpaceInsideHashLiteralBraces: | |
Description: "Use spaces inside hash literal braces - or don't." | |
StyleGuide: '#spaces-operators' | |
Enabled: true | |
VersionAdded: '0.49' | |
EnforcedStyle: 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 | |
EnforcedStyleForEmptyBraces: no_space | |
SupportedStylesForEmptyBraces: | |
- space | |
- no_space | |
#################### Metrics ############################### | |
Metrics/AbcSize: | |
Description: >- | |
A calculated magnitude based on number of assignments, | |
branches, and conditions. | |
Reference: 'http://c2.com/cgi/wiki?AbcMetric' | |
Enabled: true | |
VersionAdded: '0.27' | |
# The ABC size is a calculated magnitude, so this number can be an Integer or | |
# a Float. | |
Max: 15 | |
Metrics/BlockLength: | |
Description: 'Avoid long blocks with many lines.' | |
Enabled: true | |
VersionAdded: '0.44' | |
VersionChanged: '0.58' | |
CountComments: false # count full line comments? | |
Max: 25 | |
ExcludedMethods: | |
# By default, exclude the `#refine` method, as it tends to have larger | |
# associated blocks. | |
- refine | |
Metrics/BlockNesting: | |
Description: 'Avoid excessive block nesting' | |
StyleGuide: '#three-is-the-number-thou-shalt-count' | |
Enabled: true | |
VersionAdded: '0.25' | |
VersionChanged: '0.47' | |
CountBlocks: false | |
Max: 3 | |
Metrics/ClassLength: | |
Description: 'Avoid classes longer than 100 lines of code.' | |
Enabled: true | |
VersionAdded: '0.25' | |
CountComments: false # count full line comments? | |
Max: 100 | |
# Avoid complex methods. | |
Metrics/CyclomaticComplexity: | |
Description: >- | |
A complexity metric that is strongly correlated to the number | |
of test cases needed to validate a method. | |
Enabled: true | |
VersionAdded: '0.25' | |
Max: 6 | |
Metrics/LineLength: | |
Description: 'Limit lines to 80 characters.' | |
StyleGuide: '#80-character-limits' | |
Enabled: true | |
VersionAdded: '0.25' | |
VersionChanged: '0.46' | |
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: | |
Description: 'Avoid methods longer than 10 lines of code.' | |
StyleGuide: '#short-methods' | |
Enabled: true | |
VersionAdded: '0.25' | |
VersionChanged: '0.59.2' | |
CountComments: false # count full line comments? | |
Max: 20 | |
ExcludedMethods: [] | |
Metrics/ModuleLength: | |
Description: 'Avoid modules longer than 100 lines of code.' | |
Enabled: true | |
VersionAdded: '0.31' | |
CountComments: false # count full line comments? | |
Max: 120 | |
Metrics/ParameterLists: | |
Description: 'Avoid parameter lists longer than four parameters.' | |
StyleGuide: '#too-many-params' | |
Enabled: true | |
VersionAdded: '0.25' | |
Max: 4 | |
CountKeywordArgs: false | |
Metrics/PerceivedComplexity: | |
Description: >- | |
A complexity metric geared towards measuring complexity for a | |
human reader. | |
Enabled: true | |
VersionAdded: '0.25' | |
Max: 7 | |
#################### 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: true | |
Rails/ActiveSupportAliases: | |
Description: >- | |
Avoid ActiveSupport aliases of standard ruby methods: | |
`String#starts_with?`, `String#ends_with?`, | |
`Array#append`, `Array#prepend`. | |
Enabled: false | |
VersionAdded: '0.48' | |
Rails/CreateTableWithTimestamps: | |
Description: >- | |
Checks the migration for which timestamps are not included | |
when creating a new table. | |
Enabled: false | |
VersionAdded: '0.52' | |
Include: | |
- db/migrate/*.rb | |
Rails/NotNullColumn: | |
Description: 'Do not add a NOT NULL column without a default value' | |
Enabled: false | |
VersionAdded: '0.43' | |
Include: | |
- db/migrate/*.rb | |
#################### Style ############################### | |
Style/Alias: | |
Description: 'Use alias instead of alias_method.' | |
StyleGuide: '#alias-method' | |
Enabled: true | |
VersionAdded: '0.9' | |
VersionChanged: '0.36' | |
EnforcedStyle: prefer_alias_method | |
SupportedStyles: | |
- prefer_alias | |
- prefer_alias_method | |
Style/Documentation: | |
Description: 'Document classes and non-namespace modules.' | |
Enabled: false | |
VersionAdded: '0.9' | |
Exclude: | |
- 'spec/**/*' | |
- 'test/**/*' | |
Style/DoubleNegation: | |
Description: 'Checks for uses of double negation (!!).' | |
StyleGuide: '#no-bang-bang' | |
Enabled: false | |
VersionAdded: '0.19' | |
Style/StringLiterals: | |
Description: 'Checks if uses of quotes match the configured preference.' | |
StyleGuide: '#consistent-string-literals' | |
Enabled: true | |
VersionAdded: '0.9' | |
VersionChanged: '0.36' | |
EnforcedStyle: double_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/SymbolArray: | |
Description: 'Use %i or %I for arrays of symbols.' | |
StyleGuide: '#percent-i' | |
Enabled: true | |
VersionAdded: '0.9' | |
VersionChanged: '0.49' | |
EnforcedStyle: percent | |
MinSize: 4 | |
SupportedStyles: | |
- percent | |
- brackets |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment