Skip to content

Instantly share code, notes, and snippets.

@blahah
Created April 24, 2014 12:15
Show Gist options
  • Save blahah/11252563 to your computer and use it in GitHub Desktop.
Save blahah/11252563 to your computer and use it in GitHub Desktop.
HibberdLab RuboCop styleguide enforcement config
# This is the default configuration file. Enabling and disabling is configured
# in separate files. This file adds all other parameters apart from Enabled.
inherit_from:
- enabled.yml
- disabled.yml
# Common configuration.
AllCops:
# Include gemspec and Rakefile
Include:
- '**/*.gemspec'
- '**/Rakefile'
Exclude:
- 'vendor/**'
# By default, the rails cops are not run. Override in project or home
# directory .rubocop.yml files, or by giving the -R/--rails option.
RunRailsCops: false
# Indent private/protected/public as deep as method definitions
AccessModifierIndentation:
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
# Align the elements of a hash literal if they span more than one line.
AlignHash:
# Alignment of entries using hash rocket as separator. Valid values are:
#
# key - left alignment of keys
# 'a' => 2
# 'bb' => 3
# separator - alignment of hash rockets, keys are right aligned
# 'a' => 2
# 'bb' => 3
# table - left alignment of keys, hash rockets, and values
# 'a' => 2
# 'bb' => 3
EnforcedHashRocketStyle: key
# Alignment of entries using colon as separator. Valid values are:
#
# key - left alignment of keys
# a: 0
# bb: 1
# separator - alignment of colons, keys are right aligned
# a: 0
# bb: 1
# table - left alignment of keys and values
# a: 0
# bb: 1
EnforcedColonStyle: key
# 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 and offence for:
# function(a: 1,
# b: 2)
# Registers an offence 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 - Ingore only implicit hashes.
# Accepts:
# function(a: 1,
# b: 2)
# Registers an offence for:
# function({a: 1,
# b: 2})
# ignore_explicit - Ingore only explicit hashes.
# Accepts:
# function({a: 1,
# b: 2})
# Registers an offence for:
# function(a: 1,
# b: 2)
EnforcedLastArgumentHashStyle: always_inspect
SupportedLastArgumentHashStyles:
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
AlignParameters:
# Alignment of parameters in multi-line method calls.
#
# The `with_first_parameter` style aligns the following lines along the same column
# as the first parameter.
#
# method_call(a,
# b)
#
# The `with_fixed_indentation` style alignes the following lines with one
# level of indenation relative to the start of the line with the method call.
#
# method_call(a,
# b)
EnforcedStyle: with_first_parameter
SupportedStyles:
- with_first_parameter
- with_fixed_indentation
# Allow safe assignment in conditions.
AssignmentInCondition:
AllowSafeAssignment: true
BlockNesting:
Max: 3
BracesAroundHashParameters:
EnforcedStyle: no_braces
SupportedStyles:
- braces
- no_braces
# Indentation of `when`.
CaseIndentation:
IndentWhenRelativeTo: case
SupportedStyles:
- case
- end
IndentOneStep: false
ClassAndModuleChildren:
# Checks the style of children definitions at classes and modules.
#
# Basically there are two different styles:
#
# `nested` - have each child on a separat 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.
EnforcedStyle: nested
SupportedStyles:
- nested
- compact
ClassLength:
CountComments: false # count full line comments?
Max: 100
# Align with the style guide.
CollectionMethods:
# Mapping from undesired method to desired_method
# e.g. to use `detect` over `find`:
#
# CollectionMethods:
# PreferredMethods:
# find: detect
PreferredMethods:
collect: 'map'
collect!: 'map!'
inject: 'reduce'
detect: 'find'
find_all: 'select'
# Checks formatting of special comments
CommentAnnotation:
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
# Avoid complex methods.
CyclomaticComplexity:
Max: 6
# Multi-line method chaining should be done with leading dots.
DotPosition:
EnforcedStyle: leading
SupportedStyles:
- leading
- trailing
# Use empty lines between defs.
EmptyLineBetweenDefs:
# If true, this parameter means that single line method definitions don't
# need an empty line between them.
AllowAdjacentOneLineDefs: false
# Checks whether the source file has a utf-8 encoding comment or not
Encoding:
EnforcedStyle: always
SupportedStyles:
- when_needed
- always
# Align ends correctly.
EndAlignment:
# The value `keyword` means that `end` should be aligned with the matching
# keyword (if, while, etc.).
# The value `variable` means that in assignments, `end` should be aligned
# with the start of the variable on the left hand side of `=`. In all other
# situations, `end` should still be aligned with the keyword.
AlignWith: keyword
SupportedStyles:
- keyword
- variable
FileName:
Exclude:
- '**/Rakefile'
- '**/Gemfile'
- '**/Capfile'
# Checks use of for or each in multiline loops.
For:
EnforcedStyle: each
SupportedStyles:
- for
- each
# Enforce the method used for string formatting.
FormatString:
EnforcedStyle: format
SupportedStyles:
- format
- sprintf
- percent
# Built-in global variables are allowed by default.
GlobalVars:
AllowedVariables: []
HashSyntax:
SupportedStyles:
- ruby19
- hash_rockets
IfUnlessModifier:
MaxLineLength: 79
# Checks the indentation of the first key in a hash literal.
IndentHash:
# The value `special_inside_parentheses` means that hash literals with braces
# that have their opening brace on the same line as a surrounding opening
# round parenthesis, shall have their first key indented relative to the
# first position inside the parenthesis.
# The value `consistent` means that the indentation of the first key shall
# always be relative to the first position of the line where the opening
# brace is.
EnforcedStyle: special_inside_parentheses
SupportedStyles:
- special_inside_parentheses
- consistent
LambdaCall:
EnforcedStyle: call
SupportedStyles:
- call
- braces
LineLength:
Max: 79
MethodDefParentheses:
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
MethodLength:
CountComments: false # count full line comments?
Max: 10
MethodName:
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
NumericLiterals:
MinDigits: 5
ParameterLists:
Max: 5
CountKeywordArgs: true
# Allow safe assignment in conditions.
ParenthesesAroundCondition:
AllowSafeAssignment: true
PercentLiteralDelimiters:
PreferredDelimiters:
'%': ()
'%i': ()
'%q': ()
'%Q': ()
'%r': '{}'
'%s': ()
'%w': ()
'%W': ()
'%x': ()
PredicateName:
NamePrefixBlacklist:
- is_
- has_
- have_
RaiseArgs:
EnforcedStyle: exploded
SupportedStyles:
- compact # raise Exception.new(msg)
- exploded # raise Exception, msg
RedundantReturn:
# When true allows code like `return x, y`.
AllowMultipleReturnValues: false
RegexpLiteral:
# The maximum number of (escaped) slashes that a slash-delimited regexp is
# allowed to have. If there are more slashes, a %r regexp shall be used.
MaxSlashes: 1
Semicolon:
# Allow ; to separate several expressions on the same line.
AllowAsExpressionSeparator: false
SignalException:
EnforcedStyle: semantic
SupportedStyles:
- only_raise
- only_fail
- semantic
SingleLineBlockParams:
Methods:
- reduce:
- a
- e
- inject:
- a
- e
SingleLineMethods:
AllowIfMethodIsEmpty: true
StringLiterals:
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
SpaceAroundEqualsInParameterDefault:
EnforcedStyle: space
SupportedStyles:
- space
- no_space
SpaceBeforeBlockBraces:
EnforcedStyle: space
SupportedStyles:
- space
- no_space
SpaceInsideBlockBraces:
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
SpaceInsideHashLiteralBraces:
EnforcedStyle: space
EnforcedStyleForEmptyBraces: no_space
SupportedStyles:
- space
- no_space
TrailingBlankLines:
EnforcedStyle: final_newline
SupportedStyles:
- final_newline
- final_blank_line
TrailingComma:
EnforcedStyleForMultiline: no_comma
SupportedStyles:
- comma
- no_comma
# TrivialAccessors doesn't require exact name matches and doesn't allow
# predicated methods by default.
TrivialAccessors:
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
VariableName:
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
WhileUntilModifier:
MaxLineLength: 79
WordArray:
MinSize: 0
##################### Rails ##################################
ActionFilter:
EnforcedStyle: action
SupportedStyles:
- action
- filter
Include:
- app/controllers/**/*.rb
DefaultScope:
Include:
- app/models/**/*.rb
HasAndBelongsToMany:
Include:
- app/models/**/*.rb
ReadWriteAttribute:
Include:
- app/models/**/*.rb
ScopeArgs:
Include:
- app/models/**/*.rb
Validation:
Include:
- app/models/**/*.rb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment