Comments (16)
Should we enforce on example solutions? Not sure how to set up travis at the moment. My suggestion is to ignore example.rb on purpose, for purposes of discussion when they submit the exercise into the exercism site, for discussion (if they choose to discuss it). This is why I did not aggressively pursue style in the example.rb files.
from ruby.
I would be in favour of strictly enforcing non-strict rules (this means: not the rubocop defaults)
from ruby.
Here are the current cops that are still pending in the code.
Which ones would be considered 'strict' as opposed to 'non-strict'?
# This configuration was generated by `rubocop --auto-gen-config`
# on 2014-12-18 08:50:38 -0500 using RuboCop version 0.27.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 3
Lint/AmbiguousRegexpLiteral:
Enabled: false
# Offense count: 3
Lint/Loop:
Enabled: false
# Offense count: 4
Lint/ParenthesesAsGroupedExpression:
Enabled: false
# Offense count: 1
Lint/UselessAccessModifier:
Enabled: false
# Offense count: 1
Lint/UselessAssignment:
Enabled: false
# Offense count: 1
Lint/UselessComparison:
Enabled: false
# Offense count: 17
Metrics/AbcSize:
Max: 33
# Offense count: 7
# Configuration parameters: CountComments.
Metrics/ClassLength:
Max: 454
# Offense count: 4
Metrics/CyclomaticComplexity:
Max: 13
# Offense count: 61
# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength:
Max: 826
# Offense count: 36
# Configuration parameters: CountComments.
Metrics/MethodLength:
Max: 81
# Offense count: 91
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/AlignParameters:
Enabled: false
# Offense count: 146
Style/Documentation:
Enabled: false
# Offense count: 2
Style/DoubleNegation:
Enabled: false
# Offense count: 1
Style/EvenOdd:
Enabled: false
# Offense count: 7
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/FormatString:
Enabled: false
# Offense count: 2
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Enabled: false
# Offense count: 7
# Configuration parameters: MaxLineLength.
Style/IfUnlessModifier:
Enabled: false
# Offense count: 9
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/MethodName:
Enabled: false
# Offense count: 1
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
Style/Next:
Enabled: false
# Offense count: 2
Style/OpMethod:
Enabled: false
# Offense count: 9
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/RaiseArgs:
Enabled: false
# Offense count: 1
# Configuration parameters: Methods.
Style/SingleLineBlockParams:
Enabled: false
111
from ruby.
I would be in favour of strictly enforcing non-strict rules (this means: not the rubocop defaults)
Agreed.
I've only ever used rubocop once ( in the problems API for exercism - x-api), and am unfamiliar with what all the rules mean. I'd welcome suggestions on which ones should be included/excluded.
The example.rb
is currently never shown to users, it's only used to sanity-check the solution. As such, I'm in favor of applying the same (non-strict) rules to it as to the test suites.
from ruby.
Having the example.rb potentially fail the CI is what I am opposed to at the moment. It should not be a candidate for that kind of reporting, I think. In other words, if the author of the exercise chose to submit working implementation, it should not matter, as long as it passes itself, technically, not style-wise.
from ruby.
Yeah, I'm fine with that.
from ruby.
Actually, now that I think about it, I'm way more than fine with it. A working example should not fail CI. It's just there to sanity check the tests.
from ruby.
The best way to get to know the cop names is to start using it in your day to day workflow, really. I use VIM, and have a three key sequence (ruc
) for showing what styles Rubocop finds deficient in my code, and I use the -D
flag to expose the names. This allows me to decide to ignore them or not in the code, and provides the name by which to disable it by.
The file showing above though, once we decide which ones are 'strongly suggested' for style, we can work on incrementally.
I will see if I can whittle down the list to only those things we don't care about to enforce (lightly) by reporting in CI.
from ruby.
I don't write Ruby most days, but that does seem like a sensible approach for when I do.
from ruby.
I'd say metrics/* is too strict for these purposes, so I'd disable them.
And both from the numbers and teh names, I think these aren't desirable either:
Style/AlignParameters:
Style/Documentation:
from ruby.
When you say metrics/* I will assume you mean all of the metrics that Rubocop accounts for, not just the ones listed in this conversation nor in the current config file?
I agree about the documentation. Hopefully the tests are well enough documented on their own, by nature of being tests. Rubocop complaining about class level documentation is not helpful in the least.
from ruby.
Documentation is turned off, currently: https://github.com/exercism/xruby/blob/master/.rubocop.yml#L4-L5
I've suggested removing Metrics/AbcSize and the one about method length (#69). I didn't even think about class length, but think that you're right that it is not a useful rule in this context.
from ruby.
Here is the full list of cops and explanations.
Perhaps a branch to work collectively on creating an exhaustive rule-set? It will at least make sure that everything is known...
# Available cops (199) + config for /home/vgoff/projects/xruby:
# Type 'Lint' (36):
Lint/AmbiguousOperator:
Description: Checks for ambiguous operators in the first argument of a method invocation
without parentheses.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-as-args
Enabled: true
Lint/AmbiguousRegexpLiteral:
Description: Checks for ambiguous regexp literals in the first argument of a method
invocation without parenthesis.
Enabled: true
Lint/AssignmentInCondition:
Description: Don't use assignment in conditions.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
Enabled: true
AllowSafeAssignment: true
# Supports --auto-correct
Lint/BlockAlignment:
Description: Align block ends correctly.
Enabled: true
Lint/ConditionPosition:
Description: Checks for condition placed in a confusing position relative to the keyword.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#same-line-condition
Enabled: true
Lint/Debugger:
Description: Check for debugger calls.
Enabled: true
Lint/DefEndAlignment:
Description: Align ends corresponding to defs correctly.
Enabled: true
AlignWith: start_of_line
SupportedStyles:
- start_of_line
- def
# Supports --auto-correct
Lint/DeprecatedClassMethods:
Description: Check for deprecated class method calls.
Enabled: true
Lint/ElseLayout:
Description: Check for odd code arrangement in an else block.
Enabled: true
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: Do not use return in an ensure block.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-return-ensure
Enabled: true
Lint/Eval:
Description: The use of eval represents a serious security risk.
Enabled: true
Lint/HandleExceptions:
Description: Don't suppress exception.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
Enabled: true
Lint/InvalidCharacterLiteral:
Description: Checks for invalid character literals with a non-escaped whitespace character.
Enabled: true
Lint/LiteralInCondition:
Description: Checks of literals used in conditions.
Enabled: true
Lint/LiteralInInterpolation:
Description: Checks for literals used in interpolation.
Enabled: true
Lint/Loop:
Description: Use Kernel#loop with break rather than begin/end/until or begin/end/while
for post-loop tests.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#loop-with-break
Enabled: true
Lint/ParenthesesAsGroupedExpression:
Description: Checks for method calls with a space before the opening parenthesis.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces
Enabled: true
Lint/RequireParentheses:
Description: Use parentheses in the method call to avoid confusion about precedence.
Enabled: true
Lint/RescueException:
Description: Avoid rescuing the Exception class.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-blind-rescues
Enabled: true
Lint/ShadowingOuterLocalVariable:
Description: Do not use the same name as outer local variable for block arguments
or block local variables.
Enabled: true
# Supports --auto-correct
Lint/SpaceBeforeFirstArg:
Description: Put a space between a method name and the first argument in a method
call without parentheses.
Enabled: true
# Supports --auto-correct
Lint/StringConversionInInterpolation:
Description: Checks for Object#to_s usage in string interpolation.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-to-s
Enabled: true
Lint/UnderscorePrefixedVariableName:
Description: Do not use prefix `_` for a variable that is used.
Enabled: true
Lint/UnreachableCode:
Description: Unreachable code.
Enabled: true
# Supports --auto-correct
Lint/UnusedBlockArgument:
Description: Checks for unused block arguments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
Enabled: true
# Supports --auto-correct
Lint/UnusedMethodArgument:
Description: Checks for unused method arguments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
Enabled: true
Lint/UselessAccessModifier:
Description: Checks for useless access modifiers.
Enabled: true
Lint/UselessAssignment:
Description: Checks for useless assignment to a local variable.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
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: true
# Type 'Metrics' (8):
Metrics/AbcSize:
Description: A calculated magnitude based on number of assignments, branches, and
conditions.
Enabled: true
Max: 15
Metrics/BlockNesting:
Description: Avoid excessive block nesting
StyleGuide: https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count
Enabled: true
Max: 3
Metrics/ClassLength:
Description: Avoid classes longer than 100 lines of code.
Enabled: true
CountComments: false
Max: 100
Metrics/CyclomaticComplexity:
Description: A complexity metric that is strongly correlated to the number of test
cases needed to validate a method.
Enabled: true
Max: 6
Metrics/LineLength:
Description: Limit lines to 80 characters.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits
Enabled: true
Max: 80
AllowURI: true
URISchemes:
- http
- https
Metrics/MethodLength:
Description: Avoid methods longer than 10 lines of code.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
Enabled: true
CountComments: false
Max: 10
Metrics/ParameterLists:
Description: Avoid parameter lists longer than three or four parameters.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
Enabled: true
Max: 5
CountKeywordArgs: true
Metrics/PerceivedComplexity:
Description: A complexity metric geared towards measuring complexity for a human reader.
Enabled: true
Max: 7
# Type 'Rails' (8):
# Supports --auto-correct
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
# Supports --auto-correct
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
Include:
- app/**/*.rb
- config/**/*.rb
- db/**/*.rb
- lib/**/*.rb
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 validates :attribute, hash of validations.
Enabled: true
Include:
- app/models/**/*.rb
# Type 'Style' (147):
# Supports --auto-correct
Style/AccessModifierIndentation:
Description: Check indentation of private/protected visibility modifiers.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected
Enabled: true
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
Style/AccessorMethodName:
Description: Check the naming of accessor methods for get_/set_.
Enabled: true
# Supports --auto-correct
Style/Alias:
Description: Use alias_method instead of alias.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
Enabled: true
# Supports --auto-correct
Style/AlignArray:
Description: Align the elements of an array literal if they span more than one line.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#align-multiline-arrays
Enabled: true
# Supports --auto-correct
Style/AlignHash:
Description: Align the elements of a hash literal if they span more than one line.
Enabled: true
EnforcedHashRocketStyle: key
EnforcedColonStyle: key
EnforcedLastArgumentHashStyle: always_inspect
SupportedLastArgumentHashStyles:
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
# Supports --auto-correct
Style/AlignParameters:
Description: Align the parameters of a method call if they span more than one line.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-double-indent
Enabled: true
EnforcedStyle: with_first_parameter
SupportedStyles:
- with_first_parameter
- with_fixed_indentation
# Supports --auto-correct
Style/AndOr:
Description: Use &&/|| instead of and/or.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-and-or-or
Enabled: true
EnforcedStyle: always
SupportedStyles:
- always
- conditionals
Style/ArrayJoin:
Description: Use Array#join instead of Array#*.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#array-join
Enabled: true
Style/AsciiComments:
Description: Use only ascii symbols in comments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-comments
Enabled: true
Style/AsciiIdentifiers:
Description: Use only ascii symbols in identifiers.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-identifiers
Enabled: true
# Supports --auto-correct
Style/Attr:
Description: Checks for uses of Module#attr.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr
Enabled: true
# Supports --auto-correct
Style/BarePercentLiterals:
Description: Checks if usage of %() or %Q() matches configuration.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q-shorthand
Enabled: true
EnforcedStyle: bare_percent
SupportedStyles:
- percent_q
- bare_percent
Style/BeginBlock:
Description: Avoid the use of BEGIN blocks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-BEGIN-blocks
Enabled: true
# Supports --auto-correct
Style/BlockComments:
Description: Do not use block comments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-block-comments
Enabled: true
# Supports --auto-correct
Style/BlockEndNewline:
Description: Put end statement of multiline block on its own line.
Enabled: true
# Supports --auto-correct
Style/BlockDelimiters:
Description: Avoid using {...} for multi-line blocks (multiline chaining is always
ugly). Prefer {...} over do...end for single-line blocks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
Enabled: true
# Supports --auto-correct
Style/BracesAroundHashParameters:
Description: Enforce braces style around hash parameters.
Enabled: true
EnforcedStyle: no_braces
SupportedStyles:
- braces
- no_braces
- context_dependent
Style/CaseEquality:
Description: Avoid explicit use of the case equality operator(===).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-case-equality
Enabled: true
Style/CaseIndentation:
Description: Indentation of when in a case/when/[else/]end.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-when-to-case
Enabled: true
IndentWhenRelativeTo: case
SupportedStyles:
- case
- end
IndentOneStep: false
# Supports --auto-correct
Style/CharacterLiteral:
Description: Checks for uses of character literals.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-character-literals
Enabled: true
Style/ClassAndModuleCamelCase:
Description: Use CamelCase for classes and modules.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#camelcase-classes
Enabled: true
Style/ClassAndModuleChildren:
Description: Checks style of children classes and modules.
Enabled: true
EnforcedStyle: nested
SupportedStyles:
- nested
- compact
# Supports --auto-correct
Style/ClassCheck:
Description: Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.
Enabled: true
EnforcedStyle: is_a?
SupportedStyles:
- is_a?
- kind_of?
# Supports --auto-correct
Style/ClassMethods:
Description: Use self when defining module/class methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#def-self-singletons
Enabled: true
Style/ClassVars:
Description: Avoid the use of class variables.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-class-vars
Enabled: true
# Supports --auto-correct
Style/CollectionMethods:
Description: Preferred collection methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-fine-select-reduce-size
Enabled: false
PreferredMethods:
collect: map
collect!: map!
inject: reduce
detect: find
find_all: select
# Supports --auto-correct
Style/ColonMethodCall:
Description: 'Do not use :: for method call.'
StyleGuide: https://github.com/bbatsov/ruby-style-guide#double-colons
Enabled: true
Style/CommentAnnotation:
Description: Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#annotate-keywords
Enabled: true
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
# Supports --auto-correct
Style/CommentIndentation:
Description: Indentation of comments.
Enabled: true
Style/ConstantName:
Description: Constants should use SCREAMING_SNAKE_CASE.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#screaming-snake-case
Enabled: true
# Supports --auto-correct
Style/DefWithParentheses:
Description: Use def with parentheses when there are arguments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
Enabled: true
# Supports --auto-correct
Style/DeprecatedHashMethods:
Description: Checks for use of deprecated Hash methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-key
Enabled: true
Style/Documentation:
Description: Document classes and non-namespace modules.
Enabled: true
# Supports --auto-correct
Style/DotPosition:
Description: Checks the position of the dot in multi-line method calls.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
Enabled: true
EnforcedStyle: leading
SupportedStyles:
- leading
- trailing
Style/DoubleNegation:
Description: Checks for uses of double negation (!!).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
Enabled: true
Style/EachWithObject:
Description: Prefer `each_with_object` over `inject` or `reduce`.
Enabled: true
# Supports --auto-correct
Style/ElseAlignment:
Description: Align elses and elsifs correctly.
Enabled: true
Style/EmptyElse:
Description: Avoid empty else-clauses.
Enabled: true
# Supports --auto-correct
Style/EmptyLineBetweenDefs:
Description: Use empty lines between defs.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods
Enabled: true
AllowAdjacentOneLineDefs: false
# Supports --auto-correct
Style/EmptyLines:
Description: Don't use several empty lines in a row.
Enabled: true
# Supports --auto-correct
Style/EmptyLinesAroundAccessModifier:
Description: Keep blank lines around access modifiers.
Enabled: true
# Supports --auto-correct
Style/EmptyLinesAroundBlockBody:
Description: Keeps track of empty lines around block bodies.
Enabled: true
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- no_empty_lines
# Supports --auto-correct
Style/EmptyLinesAroundClassBody:
Description: Keeps track of empty lines around class bodies.
Enabled: true
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- no_empty_lines
# Supports --auto-correct
Style/EmptyLinesAroundMethodBody:
Description: Keeps track of empty lines around method bodies.
Enabled: true
# Supports --auto-correct
Style/EmptyLinesAroundModuleBody:
Description: Keeps track of empty lines around module bodies.
Enabled: true
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- no_empty_lines
# Supports --auto-correct
Style/EmptyLiteral:
Description: Prefer literals to Array.new/Hash.new/String.new.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
Enabled: true
Style/Encoding:
Description: Use UTF-8 as the source file encoding.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#utf-8
Enabled: false
EnforcedStyle: always
SupportedStyles:
- when_needed
- always
Style/EndBlock:
Description: Avoid the use of END blocks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-END-blocks
Enabled: true
Style/EndOfLine:
Description: Use Unix-style line endings.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#crlf
Enabled: true
Style/EvenOdd:
Description: Favor the use of Fixnum#even? && Fixnum#odd?
StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
Enabled: true
# Supports --auto-correct
Style/ExtraSpacing:
Description: Do not use unnecessary spacing.
Enabled: false
Style/FileName:
Description: Use snake_case for source file names.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
Enabled: true
Exclude: []
Style/FlipFlop:
Description: Checks for flip flops
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-flip-flops
Enabled: true
Style/For:
Description: Checks use of for or each in multiline loops.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-for-loops
Enabled: true
EnforcedStyle: each
SupportedStyles:
- for
- each
Style/FormatString:
Description: Enforce the use of Kernel#sprintf, Kernel#format or String#%.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#sprintf
Enabled: true
EnforcedStyle: format
SupportedStyles:
- format
- sprintf
- percent
Style/GlobalVars:
Description: Do not introduce global variables.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#instance-vars
Enabled: true
AllowedVariables: []
Style/GuardClause:
Description: Check for conditionals that can be replaced with guard clauses
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
Enabled: true
MinBodyLength: 1
# Supports --auto-correct
Style/HashSyntax:
Description: 'Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax { :a => 1,
:b => 2 }.'
StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-literals
Enabled: true
EnforcedStyle: ruby19
SupportedStyles:
- ruby19
- hash_rockets
Style/IfUnlessModifier:
Description: Favor modifier if/unless usage when you have a single-line body.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
Enabled: true
MaxLineLength: 80
Style/IfWithSemicolon:
Description: Do not use if x; .... Use the ternary operator instead.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs
Enabled: true
# Supports --auto-correct
Style/IndentArray:
Description: Checks the indentation of the first element in an array literal.
Enabled: true
# Supports --auto-correct
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
# Supports --auto-correct
Style/IndentationConsistency:
Description: Keep indentation straight.
Enabled: true
# Supports --auto-correct
Style/IndentationWidth:
Description: Use 2 spaces for indentation.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
Enabled: true
Width: 2
# Supports --auto-correct
Style/InfiniteLoop:
Description: Use Kernel#loop for infinite loops.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#infinite-loop
Enabled: true
Style/InlineComment:
Description: Avoid inline comments.
Enabled: false
Style/Lambda:
Description: Use the new lambda literal syntax for single-line blocks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#lambda-multi-line
Enabled: true
# Supports --auto-correct
Style/LambdaCall:
Description: Use lambda.call(...) instead of lambda.(...).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc-call
Enabled: true
EnforcedStyle: call
SupportedStyles:
- call
- braces
# Supports --auto-correct
Style/LeadingCommentSpace:
Description: Comments should start with a space.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-space
Enabled: true
# Supports --auto-correct
Style/LineEndConcatenation:
Description: Use \ instead of + or << to concatenate two string literals at line end.
Enabled: true
# Supports --auto-correct
Style/MethodCallParentheses:
Description: Do not use parentheses for method calls with no arguments.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-args-no-parens
Enabled: true
Style/MethodCalledOnDoEndBlock:
Description: Avoid chaining a method call on a do...end block.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
Enabled: false
# Supports --auto-correct
Style/MethodDefParentheses:
Description: Checks if the method definitions have or don't have parentheses.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
Enabled: true
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
Style/MethodName:
Description: Use the configured style when naming methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
Enabled: true
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
Style/ModuleFunction:
Description: Checks for usage of `extend self` in modules.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
Enabled: true
Style/MultilineBlockChain:
Description: Avoid multi-line chains of blocks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
Enabled: true
# Supports --auto-correct
Style/MultilineBlockLayout:
Description: Ensures newlines after multiline block do statements.
Enabled: true
# Supports --auto-correct
Style/MultilineIfThen:
Description: Do not use then for multi-line if/unless.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-then
Enabled: true
# Supports --auto-correct
Style/MultilineOperationIndentation:
Description: Checks indentation of binary operations that span more than one line.
Enabled: true
EnforcedStyle: aligned
SupportedStyles:
- aligned
- indented
Style/MultilineTernaryOperator:
Description: 'Avoid multi-line ?: (the ternary operator); use if/unless instead.'
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-ternary
Enabled: true
# Supports --auto-correct
Style/NegatedIf:
Description: Favor unless over if for negative conditions (or control flow or).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#unless-for-negatives
Enabled: true
# Supports --auto-correct
Style/NegatedWhile:
Description: Favor until over while for negative conditions.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#until-for-negatives
Enabled: true
Style/NestedTernaryOperator:
Description: Use one expression per branch in a ternary operator.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-ternary
Enabled: true
Style/Next:
Description: Use `next` to skip iteration instead of a condition at the end.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
Enabled: true
EnforcedStyle: skip_modifier_ifs
MinBodyLength: 3
SupportedStyles:
- skip_modifier_ifs
- always
# Supports --auto-correct
Style/NilComparison:
Description: Prefer x.nil? to x == nil.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
Enabled: true
# Supports --auto-correct
Style/NonNilCheck:
Description: Checks for redundant nil checks.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-non-nil-checks
Enabled: true
IncludeSemanticChanges: false
# Supports --auto-correct
Style/Not:
Description: Use ! instead of not.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#bang-not-not
Enabled: true
# Supports --auto-correct
Style/NumericLiterals:
Description: Add underscores to large numeric literals to improve their readability.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics
Enabled: true
MinDigits: 5
Style/OneLineConditional:
Description: Favor the ternary operator(?:) over if/then/else/end constructs.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
Enabled: true
Style/OpMethod:
Description: When defining binary operators, name the argument other.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#other-arg
Enabled: true
# Supports --auto-correct
Style/ParenthesesAroundCondition:
Description: Don't use parentheses around the condition of an if/unless/while.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-parens-if
Enabled: true
AllowSafeAssignment: true
# Supports --auto-correct
Style/PercentLiteralDelimiters:
Description: Use `%`-literal delimiters consistently
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
Enabled: true
PreferredDelimiters:
"%": "()"
"%i": "()"
"%q": "()"
"%Q": "()"
"%r": "{}"
"%s": "()"
"%w": "()"
"%W": "()"
"%x": "()"
# Supports --auto-correct
Style/PercentQLiterals:
Description: Checks if uses of %Q/%q match the configured preference.
Enabled: true
EnforcedStyle: lower_case_q
SupportedStyles:
- lower_case_q
- upper_case_q
# Supports --auto-correct
Style/PerlBackrefs:
Description: Avoid Perl-style regex back references.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
Enabled: true
Style/PredicateName:
Description: Check the names of predicate methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
Enabled: true
NamePrefix:
- is_
- has_
- have_
NamePrefixBlacklist:
- is_
- has_
- have_
# Supports --auto-correct
Style/Proc:
Description: Use proc instead of Proc.new.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc
Enabled: true
Style/RaiseArgs:
Description: Checks the arguments passed to raise/fail.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
Enabled: true
EnforcedStyle: exploded
SupportedStyles:
- compact
- exploded
# Supports --auto-correct
Style/RedundantBegin:
Description: Don't use begin blocks when they are not needed.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#begin-implicit
Enabled: true
Style/RedundantException:
Description: Checks for an obsolete RuntimeException argument in raise/fail.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-runtimeerror
Enabled: true
# Supports --auto-correct
Style/RedundantReturn:
Description: Don't use return where it's not required.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-return
Enabled: true
AllowMultipleReturnValues: false
# Supports --auto-correct
Style/RedundantSelf:
Description: Don't use self where it's not needed.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-self-unless-required
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.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-r
Enabled: true
MaxSlashes: 1
Style/RescueModifier:
Description: Avoid using rescue in its modifier form.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-rescue-modifiers
Enabled: true
Style/SelfAssignment:
Description: Checks for places where self-assignment shorthand should have been used.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#self-assignment
Enabled: true
# Supports --auto-correct
Style/Semicolon:
Description: Don't use semicolons to terminate expressions.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon
Enabled: true
AllowAsExpressionSeparator: false
# Supports --auto-correct
Style/SignalException:
Description: Checks for proper usage of fail and raise.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
Enabled: true
EnforcedStyle: semantic
SupportedStyles:
- only_raise
- only_fail
- semantic
Style/SingleLineBlockParams:
Description: Enforces the names of some block params.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
Enabled: true
Methods:
- reduce:
- a
- e
- inject:
- a
- e
# Supports --auto-correct
Style/SingleLineMethods:
Description: Avoid single-line methods.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
Enabled: true
AllowIfMethodIsEmpty: true
# Supports --auto-correct
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
# Supports --auto-correct
Style/SpaceAfterColon:
Description: Use spaces after colons.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
Enabled: true
# Supports --auto-correct
Style/SpaceAfterComma:
Description: Use spaces after commas.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
Enabled: true
# Supports --auto-correct
Style/SpaceAfterControlKeyword:
Description: Use spaces after if/elsif/unless/while/until/case/when.
Enabled: true
# Supports --auto-correct
Style/SpaceAfterMethodName:
Description: Do not put a space between a method name and the opening parenthesis
in a method definition.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces
Enabled: true
# Supports --auto-correct
Style/SpaceAfterNot:
Description: Tracks redundant space after the ! operator.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-bang
Enabled: true
# Supports --auto-correct
Style/SpaceAfterSemicolon:
Description: Use spaces after semicolons.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
Enabled: true
# Supports --auto-correct
Style/SpaceAroundEqualsInParameterDefault:
Description: Checks that the equals signs in parameter default assignments have or
don't have surrounding space depending on configuration.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-around-equals
Enabled: true
EnforcedStyle: space
SupportedStyles:
- space
- no_space
# Supports --auto-correct
Style/SpaceAroundOperators:
Description: Use spaces around operators.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
Enabled: true
# Supports --auto-correct
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
# Supports --auto-correct
Style/SpaceBeforeComma:
Description: No spaces before commas.
Enabled: true
# Supports --auto-correct
Style/SpaceBeforeComment:
Description: Checks for missing space between code and a comment on the same line.
Enabled: true
# Supports --auto-correct
Style/SpaceBeforeModifierKeyword:
Description: Put a space before the modifier keyword.
Enabled: true
# Supports --auto-correct
Style/SpaceBeforeSemicolon:
Description: No spaces before semicolons.
Enabled: true
# Supports --auto-correct
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
EnforcedStyleForEmptyBraces: no_space
SpaceBeforeBlockParameters: true
# Supports --auto-correct
Style/SpaceInsideBrackets:
Description: No spaces after [ or before ].
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces
Enabled: true
# Supports --auto-correct
Style/SpaceInsideHashLiteralBraces:
Description: Use spaces inside hash literal braces - or don't.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
Enabled: true
EnforcedStyle: space
EnforcedStyleForEmptyBraces: no_space
SupportedStyles:
- space
- no_space
# Supports --auto-correct
Style/SpaceInsideParens:
Description: No spaces after ( or before ).
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces
Enabled: true
# Supports --auto-correct
Style/SpaceInsideRangeLiteral:
Description: No spaces inside range literals.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals
Enabled: true
# Supports --auto-correct
Style/SpecialGlobalVars:
Description: Avoid Perl-style global variables.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
Enabled: true
# Supports --auto-correct
Style/StringLiterals:
Description: Checks if uses of quotes match the configured preference.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
Enabled: true
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
# Supports --auto-correct
Style/StringLiteralsInInterpolation:
Description: Checks if uses of quotes inside expressions in interpolated strings match
the configured preference.
Enabled: true
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
Style/SymbolArray:
Description: Use %i or %I for arrays of symbols.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-i
Enabled: false
# Supports --auto-correct
Style/SymbolProc:
Description: Use symbols as procs instead of blocks when possible.
Enabled: true
IgnoredMethods:
- respond_to
# Supports --auto-correct
Style/Tab:
Description: No hard tabs.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
Enabled: true
# Supports --auto-correct
Style/TrailingBlankLines:
Description: Checks trailing blank lines and final newline.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#newline-eof
Enabled: true
EnforcedStyle: final_newline
SupportedStyles:
- final_newline
- final_blank_line
# Supports --auto-correct
Style/TrailingComma:
Description: Checks for trailing comma in parameter lists and literals.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas
Enabled: true
EnforcedStyleForMultiline: no_comma
SupportedStyles:
- comma
- no_comma
# Supports --auto-correct
Style/TrailingWhitespace:
Description: Avoid trailing whitespace.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace
Enabled: true
# Supports --auto-correct
Style/TrivialAccessors:
Description: Prefer attr_* methods to trivial readers/writers.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr_family
Enabled: true
ExactNameMatch: false
AllowPredicates: false
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: Do not use unless with else. Rewrite these with the positive case first.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-else-with-unless
Enabled: true
# Supports --auto-correct
Style/UnneededCapitalW:
Description: Checks for %W when interpolation is not needed.
Enabled: true
# Supports --auto-correct
Style/UnneededPercentQ:
Description: Checks for %q/%Q when single quotes or double quotes would do.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q
Enabled: true
# Supports --auto-correct
Style/UnneededPercentX:
Description: Checks for %x when `` would do.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-x
Enabled: true
# Supports --auto-correct
Style/VariableInterpolation:
Description: Don't interpolate global, instance and class variables directly in strings.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
Enabled: true
Style/VariableName:
Description: Use the configured style when naming variables.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
Enabled: true
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
# Supports --auto-correct
Style/WhenThen:
Description: Use when x then ... for one-line cases.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
Enabled: true
# Supports --auto-correct
Style/WhileUntilDo:
Description: Checks for redundant do after while or until.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-while-do
Enabled: true
Style/WhileUntilModifier:
Description: Favor modifier while/until usage when you have a single-line body.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier
Enabled: true
MaxLineLength: 80
# Supports --auto-correct
Style/WordArray:
Description: Use %w or %W for arrays of words.
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-w
Enabled: true
MinSize: 0
WordRegex: !ruby/regexp /\A[\p{Word}]+\z/
20150526 Updated Style/Blocks
: They are now known as Style/BlockDeimiters
from ruby.
#153 closes this issue?
from ruby.
Working and looking good.
from ruby.
Nice, this was a long time coming.
from ruby.
Related Issues (20)
- stock_for_item method in boutique Inventory challenge HOT 4
- `item_names` in Boutique Inventory challenge HOT 1
- Kindergarten Garden may be harder than defined HOT 4
- [SavingAccounts]: Suggestion: change negative interest rate tests to return positive value HOT 5
- Hacktoberfest 2022 HOT 2
- Binary Search Ruby HOT 3
- TwoBucket - possible error in test suite HOT 4
- Question about function name in "Moviegoer" exercism HOT 2
- Typo in final bird_count test where "whith" should be "with" HOT 2
- Typo in locomotive_engineer instrucions HOT 2
- Locomotive Engineer exercise relies on implicit Ruby behavior HOT 1
- the pythagorean triplet exercise has something wrong with it HOT 1
- Add analyzer for leap HOT 2
- Armstrong exercise tests confusion HOT 7
- 🤖 Sync error for commit 3312f6 HOT 1
- The Symbols document contains a factual error. HOT 2
- Building a training set of tags for ruby HOT 22
- Should the Attendee query methods end in a question mark? HOT 2
- Issue with savings_account interest_rate test HOT 2
- Parallel Letter Frequency times out in the web interface HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ruby.