Skip to content

Instantly share code, notes, and snippets.

@nbermudezs
Last active August 29, 2015 14:14
Show Gist options
  • Save nbermudezs/723b4a8e55eb8e978620 to your computer and use it in GitHub Desktop.
Save nbermudezs/723b4a8e55eb8e978620 to your computer and use it in GitHub Desktop.
# These are all the cops that are enabled in the default configuration.
# Indent private/protected/public as deep as method definitions
Style/AccessModifierIndentation:
Description: Check indentation of private/protected visibility modifiers.
Enabled: true
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
Style/AccessorMethodName:
Description: Check the naming of accessor methods for get_/set_.
Enabled: false
Style/Alias:
Description: 'Use alias_method instead of alias.'
Enabled: false
Style/AlignArray:
Description: >-
Align the elements of an array literal if they span more than
one line.
Enabled: false
Style/AlignHash:
Description: >-
Align the elements of a hash literal if they span more than
one line.
Enabled: false
EnforcedHashRocketStyle: key
EnforcedLastArgumentHashStyle: always_inspect
SupportedLastArgumentHashStyles:
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
Style/AlignParameters:
Description: >-
Align the parameters of a method call if they span more
than one line.
Enabled: false
EnforcedStyle: with_first_parameter
SupportedStyles:
- with_first_parameter
- with_fixed_indentation
Style/AndOr:
Description: 'Use &&/|| instead of and/or.'
Enabled: false
Style/ArrayJoin:
Description: 'Use Array#join instead of Array#*.'
Enabled: false
Style/AsciiComments:
Description: 'Use only ascii symbols in comments.'
Enabled: false
Style/AsciiIdentifiers:
Description: 'Use only ascii symbols in identifiers.'
Enabled: true
Style/Attr:
Description: 'Checks for uses of Module#attr.'
Enabled: false
Style/BeginBlock:
Description: 'Avoid the use of BEGIN blocks.'
Enabled: false
Style/BlockComments:
Description: 'Do not use block comments.'
Enabled: true
Style/BlockNesting:
Description: 'Avoid excessive block nesting'
Enabled: false
Max: 3
Style/Blocks:
Description: >-
Avoid using {...} for multi-line blocks (multiline chaining is
always ugly).
Prefer {...} over do...end for single-line blocks.
Enabled: false
Style/BracesAroundHashParameters:
Description: 'Enforce braces style inside hash parameters.'
Enabled: false
EnforcedStyle: no_braces
SupportedStyles:
- braces
- no_braces
Style/CaseEquality:
Description: 'Avoid explicit use of the case equality operator(===).'
Enabled: false
Style/CaseIndentation:
Description: 'Indentation of when in a case/when/[else/]end.'
Enabled: false
IndentWhenRelativeTo: case
SupportedStyles:
- case
- end
IndentOneStep: false
Style/CharacterLiteral:
Description: 'Checks for uses of character literals.'
Enabled: true
Style/ClassAndModuleCamelCase:
Description: 'Use CamelCase for classes and modules.'
Enabled: true
Style/ClassAndModuleChildren:
Description: 'Checks style of children classes and modules.'
Enabled: true
EnforcedStyle: nested
SupportedStyles:
- nested
- compact
Style/ClassLength:
Description: 'Avoid classes longer than 100 lines of code.'
CountComments: false
Enabled: false
Style/ClassMethods:
Description: 'Use self when defining module/class methods.'
Enabled: true
Style/ClassVars:
Description: 'Avoid the use of class variables.'
Enabled: true
Style/CollectionMethods:
Description: 'Preferred collection methods.'
Enabled: false
PreferredMethods:
find: detect
reduce: inject
collect: map
collect!: 'map!'
find_all: select
Style/ColonMethodCall:
Description: 'Do not use :: for method call.'
Enabled: false
Style/CommentAnnotation:
Description: >-
Checks formatting of special comments
(TODO, FIXME, OPTIMIZE, HACK, REVIEW).
Enabled: false
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
Style/CommentIndentation:
Description: 'Indentation of comments.'
Enabled: true
Style/ConstantName:
Description: 'Constants should use SCREAMING_SNAKE_CASE.'
Enabled: true
Style/CyclomaticComplexity:
Description: 'Avoid complex methods.'
Enabled: false
Max: 6
Style/DefWithParentheses:
Description: 'Use def with parentheses when there are arguments.'
Enabled: true
Style/DeprecatedHashMethods:
Description: 'Checks for use of deprecated Hash methods.'
Enabled: false
Style/Documentation:
Description: 'Document classes and non-namespace modules.'
Enabled: false
Style/DotPosition:
Description: 'Checks the position of the dot in multi-line method calls.'
Enabled: true
EnforcedStyle: leading
SupportedStyles:
- leading
- trailing
Style/DoubleNegation:
Description: 'Checks for uses of double negation (!!).'
Enabled: false
Style/EachWithObject:
Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
Enabled: true
Style/EmptyLineBetweenDefs:
Description: 'Use empty lines between defs.'
Enabled: true
AllowAdjacentOneLineDefs: true
Style/EmptyLines:
Description: "Don't use several empty lines in a row."
Enabled: true
Style/EmptyLinesAroundAccessModifier:
Description: "Keep blank lines around access modifiers."
Enabled: true
Style/EmptyLinesAroundBody:
Description: "Keeps track of empty lines around expression bodies."
Enabled: true
Style/EmptyLiteral:
Description: 'Prefer literals to Array.new/Hash.new/String.new.'
Enabled: false
Style/Encoding:
Description: 'Use UTF-8 as the source file encoding.'
Enabled: false
EnforcedStyle: always
SupportedStyles:
- when_needed
- always
Style/EndBlock:
Description: 'Avoid the use of END blocks.'
Enabled: false
Style/EndOfLine:
Description: 'Use Unix-style line endings.'
Enabled: true
Style/EvenOdd:
Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
Enabled: false
Style/FileName:
Description: 'Use snake_case for source file names.'
Enabled: true
Exclude:
- '**/Rakefile'
- '**/Gemfile'
- '**/Guardfile'
Style/FlipFlop:
Description: 'Checks for flip flops'
Enabled: false
Style/For:
Description: 'Checks use of for or each in multiline loops.'
Enabled: true
EnforcedStyle: each
SupportedStyles:
- for
- each
Style/FormatString:
Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
Enabled: false
EnforcedStyle: format
SupportedStyles:
- format
- sprintf
- percent
Style/GlobalVars:
Description: 'Do not introduce global variables.'
Enabled: false
AllowedVariables: []
Style/GuardClause:
Description: 'Check for conditionals that can be replaced with guard clauses'
Enabled: true
MinBodyLength: 1
Style/HashSyntax:
Description: >-
Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
{ :a => 1, :b => 2 }.
Enabled: true
EnforcedStyle: hash_rockets
SupportedStyles:
- ruby19
- hash_rockets
Style/IfUnlessModifier:
Description: >-
Favor modifier if/unless usage when you have a
single-line body.
Enabled: false
MaxLineLength: 80
Style/IfWithSemicolon:
Description: 'Never use if x; .... Use the ternary operator instead.'
Enabled: false
Style/IndentationConsistency:
Description: 'Keep indentation straight.'
Enabled: true
Style/IndentationWidth:
Description: 'Use 2 spaces for indentation.'
Enabled: true
Style/IndentArray:
Description: >-
Checks the indentation of the first element in an array
literal.
Enabled: true
Style/IndentHash:
Description: 'Checks the indentation of the first key in a hash literal.'
Enabled: true
EnforcedStyle: special_inside_parentheses
SupportedStyles:
- special_inside_parentheses
- consistent
Style/Lambda:
Description: 'Use the new lambda literal syntax for single-line blocks.'
Enabled: true
Style/LambdaCall:
Description: 'Use lambda.call(...) instead of lambda.(...).'
Enabled: false
EnforcedStyle: call
SupportedStyles:
- call
- braces
Style/LeadingCommentSpace:
Description: 'Comments should start with a space.'
Enabled: true
Style/LineEndConcatenation:
Description: >-
Use \ instead of + or << to concatenate two string literals at
line end.
Enabled: false
Style/LineLength:
Description: 'Limit lines to 100 characters.'
Enabled: true
Max: 100
Style/MethodCallParentheses:
Description: 'Do not use parentheses for method calls with no arguments.'
Enabled: true
Style/MethodDefParentheses:
Description: >-
Checks if the method definitions have or don't have
parentheses.
Enabled: true
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
Style/MethodLength:
Description: 'Avoid methods longer than 10 lines of code.'
CountComments: false # count full line comments?
Enabled: false
Style/MethodName:
Description: 'Use the configured style when naming methods.'
Enabled: true
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
Style/ModuleFunction:
Description: 'Checks for usage of `extend self` in modules.'
Enabled: false
Style/MultilineBlockChain:
Description: 'Avoid multi-line chains of blocks.'
Enabled: true
Style/MultilineIfThen:
Description: 'Never use then for multi-line if/unless.'
Enabled: false
Style/MultilineTernaryOperator:
Description: >-
Avoid multi-line ?: (the ternary operator);
use if/unless instead.
Enabled: true
Style/NegatedIf:
Description: >-
Favor unless over if for negative conditions
(or control flow or).
Enabled: true
Style/NegatedWhile:
Description: 'Favor until over while for negative conditions.'
Enabled: true
Style/NestedTernaryOperator:
Description: 'Use one expression per branch in a ternary operator.'
Enabled: true
Style/Next:
Description: 'Use `next` to skip iteration instead of a condition at the end.'
Enabled: true
EnforcedStyle: skip_modifier_ifs
SupportedStyles:
- skip_modifier_ifs
- always
Style/NilComparison:
Description: 'Prefer x.nil? to x == nil.'
Enabled: true
Style/NonNilCheck:
Description: 'Checks for redundant nil checks.'
Enabled: true
IncludeSemanticChanges: false
Style/Not:
Description: 'Use ! instead of not.'
Enabled: true
Style/NumericLiterals:
Description: >-
Add underscores to large numeric literals to improve their
readability.
Enabled: true
MinDigits: 5
Style/OneLineConditional:
Description: >-
Favor the ternary operator(?:) over
if/then/else/end constructs.
Enabled: false
Style/OpMethod:
Description: 'When defining binary operators, name the argument other.'
Enabled: false
Style/ParameterLists:
Description: 'Avoid parameter lists longer than three or four parameters.'
Enabled: false
Max: 5
CountKeywordArgs: true
Style/ParenthesesAroundCondition:
Description: >-
Don't use parentheses around the condition of an
if/unless/while.
Enabled: true
AllowSafeAssignment: true
Style/PercentLiteralDelimiters:
Description: 'Use `%`-literal delimiters consistently'
Enabled: true
PreferredDelimiters:
'%': '{}'
# '%i': ()
# '%q': ()
# '%Q': ()
# '%r': '{}'
# '%s': ()
# '%w': ()
# '%W': ()
# '%x': ()
Style/PerlBackrefs:
Description: 'Avoid Perl-style regex back references.'
Enabled: false
Style/PredicateName:
Description: 'Check the names of predicate methods.'
Enabled: true
NamePrefixBlacklist:
- is_
Style/Proc:
Description: 'Use proc instead of Proc.new.'
Enabled: false
Style/RaiseArgs:
Description: 'Checks the arguments passed to raise/fail.'
Enabled: false
EnforcedStyle: exploded
SupportedStyles:
- compact # raise Exception.new(msg)
- exploded # raise Exception, msg
Style/RedundantBegin:
Description: "Don't use begin blocks when they are not needed."
Enabled: false
Style/RedundantException:
Description: "Checks for an obsolete RuntimeException argument in raise/fail."
Enabled: true
Style/RedundantReturn:
Description: "Don't use return where it's not required."
Enabled: true
# When true allows code like `return x, y`.
AllowMultipleReturnValues: false
Style/RedundantSelf:
Description: "Don't use self where it's not needed."
Enabled: true
Style/RegexpLiteral:
Description: >-
Use %r for regular expressions matching more than
`MaxSlashes` '/' characters.
Use %r only for regular expressions matching more than
`MaxSlashes` '/' character.
Enabled: false
MaxSlashes: 1
Style/RescueModifier:
Description: 'Avoid using rescue in its modifier form.'
Enabled: true
Style/SelfAssignment:
Description: 'Checks for places where self-assignment shorthand should have been used.'
Enabled: false
Style/Semicolon:
Description: "Don't use semicolons to terminate expressions."
Enabled: true
# Allow ; to separate several expressions on the same line.
AllowAsExpressionSeparator: true
Style/SignalException:
Description: 'Checks for proper usage of fail and raise.'
Enabled: false
EnforcedStyle: semantic
SupportedStyles:
- only_raise
- only_fail
- semantic
Style/SingleLineBlockParams:
Description: 'Enforces the names of some block params.'
Enabled: false
Methods:
- reduce:
- a
- e
- inject:
- a
- e
Style/SingleLineMethods:
Description: 'Avoid single-line methods.'
Enabled: false
AllowIfMethodIsEmpty: true
Style/SingleSpaceBeforeFirstArg:
Description: >-
Checks that exactly one space is used between a method name
and the first argument for method calls without parentheses.
Enabled: true
Style/SpaceAfterColon:
Description: 'Use spaces after colons.'
Enabled: true
Style/SpaceAfterComma:
Description: 'Use spaces after commas.'
Enabled: true
Style/SpaceAfterControlKeyword:
Description: 'Use spaces after if/elsif/unless/while/until/case/when.'
Enabled: true
Style/SpaceAfterMethodName:
Description: >-
Never put a space between a method name and the opening
parenthesis in a method definition.
Enabled: true
Style/SpaceAfterNot:
Description: Tracks redundant space after the ! operator.
Enabled: true
Style/SpaceAfterSemicolon:
Description: 'Use spaces after semicolons.'
Enabled: true
Style/SpaceBeforeBlockBraces:
Description: >-
Checks that the left block brace has or doesn't have space
before it.
Enabled: true
EnforcedStyle: space
SupportedStyles:
- space
- no_space
Style/SpaceBeforeComment:
Description: >-
Checks for missing space between code and a comment on the
same line.
Enabled: true
Style/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
EnforcedStyle: space
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
Style/SpaceAroundEqualsInParameterDefault:
Description: >-
Checks that the equals signs in parameter default assignments
have or don't have surrounding space depending on
configuration.
Enabled: true
EnforcedStyle: space
SupportedStyles:
- space
- no_space
Style/SpaceAroundOperators:
Description: 'Use spaces around operators.'
Enabled: true
Style/SpaceBeforeModifierKeyword:
Description: 'Put a space before the modifier keyword.'
Enabled: true
Style/SpaceInsideBrackets:
Description: 'No spaces after [ or before ].'
Enabled: true
Style/SpaceInsideHashLiteralBraces:
Description: "Use spaces inside hash literal braces - or don't."
Enabled: true
EnforcedStyle: space
EnforcedStyleForEmptyBraces: no_space
SupportedStyles:
- space
- no_space
Style/SpaceInsideParens:
Description: 'No spaces after ( or before ).'
Enabled: true
Style/SpecialGlobalVars:
Description: 'Avoid Perl-style global variables.'
Enabled: false
Style/StringLiterals:
Description: 'Checks if uses of quotes match the configured preference.'
Enabled: false
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
Style/Tab:
Description: 'No hard tabs.'
Enabled: true
Style/TrailingBlankLines:
Description: 'Checks trailing blank lines and final newline.'
Enabled: false
EnforcedStyle: final_newline
SupportedStyles:
- final_newline
- final_blank_line
Style/TrailingComma:
Description: 'Checks for trailing comma in parameter lists and literals.'
Enabled: false
EnforcedStyleForMultiline: no_comma
SupportedStyles:
- comma
- no_comma
Style/TrailingWhitespace:
Description: 'Avoid trailing whitespace.'
Enabled: true
Style/TrivialAccessors:
Description: 'Prefer attr_* methods to trivial readers/writers.'
Enabled: false
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
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: >-
Never use unless with else. Rewrite these with the positive
case first.
Enabled: true
Style/UnneededCapitalW:
Description: 'Checks for %W when interpolation is not needed.'
Enabled: true
Style/UnneededPercentX:
Description: 'Checks for %x when `` would do.'
Enabled: true
Style/VariableInterpolation:
Description: >-
Don't interpolate global, instance and class variables
directly in strings.
Enabled: false
Style/VariableName:
Description: 'Use the configured style when naming variables.'
Enabled: true
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
Style/WhenThen:
Description: 'Use when x then ... for one-line cases.'
Enabled: false
Style/WhileUntilDo:
Description: 'Checks for redundant do after while or until.'
Enabled: true
Style/WhileUntilModifier:
Description: >-
Favor modifier while/until usage when you have a
single-line body.
Enabled: false
MaxLineLength: 80
Style/WordArray:
Description: 'Use %w or %W for arrays of words.'
Enabled: false
MinSize: 0
Style/InlineComment:
Description: 'Avoid inline comments.'
Enabled: false
Style/MethodCalledOnDoEndBlock:
Description: 'Avoid chaining a method call on a do...end block.'
Enabled: false
Style/SymbolArray:
Description: 'Use %i or %I for arrays of symbols.'
Enabled: false
#################### Lint ################################
### Warnings
Lint/AmbiguousOperator:
Description: >-
Checks for ambiguous operators in the first argument of a
method invocation without parentheses.
Enabled: false
Lint/AmbiguousRegexpLiteral:
Description: >-
Checks for ambiguous regexp literals in the first argument of
a method invocation without parenthesis.
Enabled: false
Lint/AssignmentInCondition:
Description: "Don't use assignment in conditions."
Enabled: false
AllowSafeAssignment: true
Lint/BlockAlignment:
Description: 'Align block ends correctly.'
Enabled: true
Lint/ConditionPosition:
Description: 'Checks for condition placed in a confusing position relative to the keyword.'
Enabled: false
Lint/Debugger:
Description: 'Check for debugger calls.'
Enabled: true
Lint/DeprecatedClassMethods:
Description: 'Check for deprecated class method calls.'
Enabled: false
Lint/ElseLayout:
Description: 'Check for odd code arrangement in an else block.'
Enabled: false
Lint/EmptyEnsure:
Description: 'Checks for empty ensure block.'
Enabled: true
Lint/EmptyInterpolation:
Description: 'Checks for empty string interpolation.'
Enabled: true
Lint/EndAlignment:
Description: 'Align ends correctly.'
Enabled: true
AlignWith: keyword
SupportedStyles:
- keyword
- variable
Lint/EndInMethod:
Description: 'END blocks should not be placed inside method definitions.'
Enabled: true
Lint/EnsureReturn:
Description: 'Never use return in an ensure block.'
Enabled: true
Lint/Eval:
Description: 'The use of eval represents a serious security risk.'
Enabled: true
Lint/HandleExceptions:
Description: "Don't suppress exception."
Enabled: false
Lint/InvalidCharacterLiteral:
Description: >-
Checks for invalid character literals with a non-escaped
whitespace character.
Enabled: false
Lint/LiteralInCondition:
Description: 'Checks of literals used in conditions.'
Enabled: false
Lint/LiteralInInterpolation:
Description: 'Checks for literals used in interpolation.'
Enabled: false
Lint/Loop:
Description: >-
Use Kernel#loop with break rather than begin/end/until or
begin/end/while for post-loop tests.
Enabled: false
Lint/ParenthesesAsGroupedExpression:
Description: >-
Checks for method calls with a space before the opening
parenthesis.
Enabled: false
Lint/RequireParentheses:
Description: >-
Use parentheses in the method call to avoid confusion
about precedence.
Enabled: false
Lint/RescueException:
Description: 'Avoid rescuing the Exception class.'
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/SpaceBeforeFirstArg:
Description: >-
Put a space between a method name and the first argument
in a method call without parentheses.
Enabled: true
Lint/StringConversionInInterpolation:
Description: 'Checks for Object#to_s usage in string interpolation.'
Enabled: true
Lint/UnderscorePrefixedVariableName:
Description: 'Do not use prefix `_` for a variable that is used.'
Enabled: false
Lint/UnusedBlockArgument:
Description: 'Checks for unused block arguments.'
Enabled: true
Lint/UnusedMethodArgument:
Description: 'Checks for unused method arguments.'
Enabled: true
Lint/UnreachableCode:
Description: 'Unreachable code.'
Enabled: true
Lint/UselessAccessModifier:
Description: 'Checks for useless access modifiers.'
Enabled: true
Lint/UselessAssignment:
Description: 'Checks for useless assignment to a local variable.'
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: false
##################### Rails ##################################
Rails/ActionFilter:
Description: 'Enforces consistent use of action filter methods.'
Enabled: true
EnforcedStyle: action
SupportedStyles:
- action
- filter
Include:
- app/controllers/**/*.rb
Rails/DefaultScope:
Description: 'Checks if the argument passed to default_scope is a block.'
Enabled: true
Include:
- app/models/**/*.rb
Rails/Delegate:
Description: 'Prefer delegate method for delegations.'
Enabled: true
Rails/HasAndBelongsToMany:
Description: 'Prefer has_many :through to has_and_belongs_to_many.'
Enabled: true
Include:
- app/models/**/*.rb
Rails/Output:
Description: 'Checks for calls to puts, print, etc.'
Enabled: true
Rails/ReadWriteAttribute:
Description: 'Checks for read_attribute(:attr) and write_attribute(:attr, val).'
Enabled: true
Include:
- app/models/**/*.rb
Rails/ScopeArgs:
Description: 'Checks the arguments of ActiveRecord scopes.'
Enabled: true
Include:
- app/models/**/*.rb
Rails/Validation:
Description: 'Use sexy validations.'
Enabled: true
Include:
- app/models/**/*.rb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment