Giter Site home page Giter Site logo

Add rubocop to travis build about ruby HOT 16 CLOSED

exercism avatar exercism commented on July 24, 2024
Add rubocop to travis build

from ruby.

Comments (16)

kotp avatar kotp commented on July 24, 2024

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.

markijbema avatar markijbema commented on July 24, 2024

I would be in favour of strictly enforcing non-strict rules (this means: not the rubocop defaults)

from ruby.

kotp avatar kotp commented on July 24, 2024

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.

kytrinyx avatar kytrinyx commented on July 24, 2024

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.

kotp avatar kotp commented on July 24, 2024

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.

kytrinyx avatar kytrinyx commented on July 24, 2024

Yeah, I'm fine with that.

from ruby.

kytrinyx avatar kytrinyx commented on July 24, 2024

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.

kotp avatar kotp commented on July 24, 2024

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.

kytrinyx avatar kytrinyx commented on July 24, 2024

I don't write Ruby most days, but that does seem like a sensible approach for when I do.

from ruby.

markijbema avatar markijbema commented on July 24, 2024

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.

kotp avatar kotp commented on July 24, 2024

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.

kytrinyx avatar kytrinyx commented on July 24, 2024

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.

kotp avatar kotp commented on July 24, 2024

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.

kotp avatar kotp commented on July 24, 2024

#153 closes this issue?

from ruby.

kotp avatar kotp commented on July 24, 2024

Working and looking good.

from ruby.

kytrinyx avatar kytrinyx commented on July 24, 2024

Nice, this was a long time coming.

from ruby.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.