Skip to content
Extraits de code Groupes Projets
.rubocop.yml 5,09 ko
Newer Older
  • Learn to ignore specific revisions
  • Jonne Haß's avatar
    Jonne Haß a validé
    AllCops:
    
      Exclude:
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
        - "bin/**/*"
        - "db/schema.rb"
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Dennis Schubert's avatar
    Dennis Schubert a validé
    Rails:
      Enabled: true
    
    
    # Disable for rails 4
    Rails/HttpPositionalArguments:
      Enabled: false
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
    # Commonly used screens these days easily fit more than 80 characters.
    Metrics/LineLength:
      Max: 120
    
    # Too short methods lead to extraction of single-use methods, which can make
    # the code easier to read (by naming things), but can also clutter the class
    Metrics/MethodLength: 
      Max: 20
    
    # The guiding principle of classes is SRP, SRP can't be accurately measured by LoC
    Metrics/ClassLength:
      Max: 1500
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
    Metrics/ModuleLength:
      Max: 1500
    
      
    # Raise AbcSize from 15 to 20
    Metrics/AbcSize:
      Max: 20
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
    # Some blocks are longer.
    Metrics/BlockLength:
      ExcludedMethods:
        - "namespace"
        - "create_table"
      Exclude:
        - "config/**/*.rb"
        - "spec/**/*.rb"
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
    # No space makes the method definition shorter and differentiates
    # from a regular assignment.
    Style/SpaceAroundEqualsInParameterDefault:
      EnforcedStyle: no_space
    
    # Single quotes being faster is hardly measurable and only affects parse time.
    # Enforcing double quotes reduces the times where you need to change them
    # when introducing an interpolation. Use single quotes only if their semantics
    # are needed.
    Style/StringLiterals:
      EnforcedStyle: double_quotes
    
    # We do not need to support Ruby 1.9, so this is good to use.
    Style/SymbolArray:
      Enabled: true
    
    # Most readable form.
    Style/AlignHash:
      EnforcedHashRocketStyle: table
      EnforcedColonStyle: table
    
    # Mixing the styles looks just silly.
    
    Jonne Haß's avatar
    Jonne Haß a validé
    Style/HashSyntax:
     EnforcedStyle: ruby19_no_mixed_keys
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    # has_key? and has_value? are far more readable than key? and value?
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
    Style/PreferredHashMethods:
    
    Jonne Haß's avatar
    Jonne Haß a validé
      Enabled: false
    
    # String#% is by far the least verbose and only object oriented variant.
    Style/FormatString:
      EnforcedStyle: percent
    
    Style/CollectionMethods:
      Enabled: true
      PreferredMethods:
        # inject seems more common in the community.
        reduce: "inject"
    
    
    # Either allow this style or don't. Marking it as safe with parenthesis
    # is silly. Let's try to live without them for now.
    Style/ParenthesesAroundCondition:
      AllowSafeAssignment: false
    Lint/AssignmentInCondition:
      AllowSafeAssignment: false
    
    # A specialized exception class will take one or more arguments and construct the message from it.
    # So both variants make sense. 
    Style/RaiseArgs:
      Enabled: false
    
    
    # Indenting the chained dots beneath each other is not supported by this cop,
    # see https://github.com/bbatsov/rubocop/issues/1633
    Style/MultilineOperationIndentation:
      Enabled: false
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
    # Fail is an alias of raise. Avoid aliases, it's more cognitive load for no gain.
    # The argument that fail should be used to abort the program is wrong too,
    # there's Kernel#abort for that.
    Style/SignalException:
      EnforcedStyle: only_raise
    
    # Suppressing exceptions can be perfectly fine, and be it to avoid to
    # explicitly type nil into the rescue since that's what you want to return,
    # or suppressing LoadError for optional dependencies
    Lint/HandleExceptions:
      Enabled: false
    
    Style/SpaceInsideBlockBraces:
      # The space here provides no real gain in readability while consuming
      # horizontal space that could be used for a better parameter name.
      # Also {| differentiates better from a hash than { | does.
      SpaceBeforeBlockParameters: false
    
    # No trailing space differentiates better from the block:
    # foo} means hash, foo } means block.
    Style/SpaceInsideHashLiteralBraces:
      EnforcedStyle: no_space
    
    # { ... } for multi-line blocks is okay, follow Weirichs rule instead:
    # https://web.archive.org/web/20140221124509/http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc
    
    Jonne Haß's avatar
    Jonne Haß a validé
    Style/BlockDelimiters:
    
    Jonne Haß's avatar
    Jonne Haß a validé
      Enabled: false
    
    
    # Enforcing -> would be nice, but not at the cost of enforcing lambda { } for
    # multiline lambdas.
    Style/Lambda:
      Enabled: false
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
    # do / end blocks should be used for side effects,
    # methods that run a block for side effects and have
    # a useful return value are rare, assign the return
    # value to a local variable for those cases.
    Style/MethodCalledOnDoEndBlock:
      Enabled: true
    
    # Enforcing the names of variables? To single letter ones? Just no.
    Style/SingleLineBlockParams:
      Enabled: false
    
    # Shadowing outer local variables with block parameters is often useful
    # to not reinvent a new name for the same thing, it highlights the relation
    # between the outer variable and the parameter. The cases where it's actually
    # confusing are rare, and usually bad for other reasons already, for example
    # because the method is too long.
    Lint/ShadowingOuterLocalVariable:
      Enabled: false
    
    # Check with yard instead.
    Style/Documentation:
      Enabled: false 
    
    # This is just silly. Calling the argument `other` in all cases makes no sense.
    Style/OpMethod:
      Enabled: false 
    
    # There are valid cases, for example debugging Cucumber steps,
    # also they'll fail CI anyway
    Lint/Debugger:
      Enabled: false
    
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
    # We used comparison everywhere.
    Style/NumericPredicate:
      EnforcedStyle: comparison
    
    
    # Reset some HoundCI changes back to Rubocop defaults
    Style/DotPosition:
      EnforcedStyle: leading
    
    Benjamin Neff's avatar
    Benjamin Neff a validé
    
    ### backward compatibility
    
    # only with ruby >= 2.3
    Style/FrozenStringLiteralComment:
      Enabled: false
    
    # only with ruby >= 2.4
    Performance/RegexpMatch:
      Enabled: false