jgraichen/rbzmq

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
# 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: true

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: ignore
  SupportedStyles:
    - nested
    - compact

ClassLength:
  CountComments: false  # count full line comments?
  Max: 100

# Align with the style guide.
CollectionMethods:
  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

# 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:
  EnforcedStyle: ruby19
  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: compact
  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: only_raise
  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
    - no_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: false

SpaceInsideHashLiteralBraces:
  EnforcedStyle: no_space
  EnforcedStyleForEmptyBraces: no_space
  SupportedStyles:
    - space
    - no_space

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: true
  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

ReadAttribute:
  Include:
    - app/models/*.rb

ScopeArgs:
  Include:
    - app/models/*.rb

Validation:
  Include:
    - app/models/*.rb