kamen-hursev/media-blog

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
  Includes:
    - '**/*.gemspec'
    - '**/Rakefile'
  Excludes:
    - '**/initializers/*'
    - 'config/*'
    - 'db/*'
  # 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: true

# 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

# 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

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

# Checks use of for or each in multiline loops.
For:
  EnforcedStyle: each
  SupportedStyles:
    - for
    - each

# Built-in global variables are allowed by default.
GlobalVars:
  AllowedVariables: []

HashSyntax:
  EnforcedStyle: ruby19
  SupportedStyles:
    - ruby19
    - hash_rockets

LambdaCall:
  EnforcedStyle: call
  SupportedStyles:
    - call
    - braces

LineLength:
  Max: 99

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

Output:
  Ignore:
    - '^.*\.rake$'
    - '^.*/script/.*$'
    - '^.*/tasks/.*$'
    - 'Rakefile$'

ParameterLists:
  Max: 5
  CountKeywordArgs: true

# Allow safe assignment in conditions.
ParenthesesAroundCondition:
  AllowSafeAssignment: true

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

SpaceAroundBlockBraces:
  EnforcedStyle: space_inside_braces
  SupportedStyles:
    - space_inside_braces
    - no_space_inside_braces
  # 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

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

WordArray:
  MinSize: 0

##################### Rails ##################################

DefaultScope:
  IncludePaths:
    - app/models

HasAndBelongsToMany:
  IncludePaths:
    - app/models

ReadAttribute:
  IncludePaths:
    - app/models

Validation:
  IncludePaths:
    - app/models