# 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: - '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: 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 # 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: 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 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 WhileUntilModifier: MaxLineLength: 79 WordArray: MinSize: 0 ##################### Rails ################################## ActionFilter: EnforcedStyle: action SupportedStyles: - action - filter IncludePaths: -app/controllers DefaultScope: IncludePaths: - app/models HasAndBelongsToMany: IncludePaths: - app/models ReadAttribute: IncludePaths: - app/models ScopeArgs: IncludePaths: - app/models Validation: IncludePaths: - app/models