.rubocop.yml
require:
- ./lib/bundler_cop.rb
# We're not joking around
Style/Documentation:
Enabled: true
Exclude:
- '**/spec/**/*'
Style/MultipleComparison:
Enabled: false
Style/PercentLiteralDelimiters:
Enabled: false
# kind_of? is a good way to check a type
Style/ClassCheck:
EnforcedStyle: kind_of?
Style/FrozenStringLiteralComment:
Enabled: false
# This doesn't work with older versions of Ruby (pre 2.4.0)
Style/SafeNavigation:
Enabled: false
# This doesn't work with older versions of Ruby (pre 2.4.0)
Performance/RegexpMatch:
Enabled: false
Performance/RedundantBlockCall:
Enabled: false
# This suggests use of `tr` instead of `gsub`. While this might be more performant,
# these methods are not at all interchangable, and behave very differently. This can
# lead to people making the substitution without considering the differences.
Performance/StringReplacement:
Enabled: false
# .length == 0 is also good, we don't always want .zero?
Style/NumericPredicate:
Enabled: false
# this would cause errors with long lanes
Metrics/BlockLength:
Enabled: false
# this is a bit buggy
Metrics/ModuleLength:
Enabled: false
# certificate_1 is an okay variable name
Naming/VariableNumber:
Enabled: false
# This rule isn't useful, lots of discussion happening around it also
# e.g. https://github.com/bbatsov/rubocop/issues/2338
MultilineBlockChain:
Enabled: false
Layout/MultilineMethodCallIndentation:
EnforcedStyle: aligned
#
# File.chmod(0777, f)
#
# is easier to read than
#
# File.chmod(0o777, f)
#
Style/NumericLiteralPrefix:
Enabled: false
#
# command = (!clean_expired.nil? || !clean_pattern.nil?) ? CLEANUP : LIST
#
# is easier to read than
#
# command = !clean_expired.nil? || !clean_pattern.nil? ? CLEANUP : LIST
#
Style/TernaryParentheses:
Enabled: false
# sometimes it is useful to have those empty methods
Style/EmptyMethod:
Enabled: false
# It's better to be more explicit about the type
Style/BracesAroundHashParameters:
Enabled: false
# specs sometimes have useless assignments, which is fine
Lint/UselessAssignment:
Exclude:
- '**/spec/**/*'
# We could potentially enable the 2 below:
Layout/IndentHash:
Enabled: false
Layout/AlignHash:
Enabled: false
# HoundCI doesn't like this rule
Layout/DotPosition:
Enabled: false
# We allow !! as it's an easy way to convert ot boolean
Style/DoubleNegation:
Enabled: false
# Prevent to replace [] into %i
Style/SymbolArray:
Enabled: false
# This cop would not work fine with rspec
Style/MixinGrouping:
Exclude:
- '**/spec/**/*'
# Sometimes we allow a rescue block that doesn't contain code
Lint/HandleExceptions:
Enabled: false
# Cop supports --auto-correct.
Lint/UnusedBlockArgument:
Enabled: false
Lint/AmbiguousBlockAssociation:
Enabled: false
# Needed for $verbose
Style/GlobalVars:
Enabled: false
# We want to allow class Fastlane::Class
Style/ClassAndModuleChildren:
Enabled: false
# $? Exit
Style/SpecialGlobalVars:
Enabled: false
Metrics/AbcSize:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
# The %w might be confusing for new users
Style/WordArray:
MinSize: 19
# raise and fail are both okay
Style/SignalException:
Enabled: false
# Better too much 'return' than one missing
Style/RedundantReturn:
Enabled: false
# Having if in the same line might not always be good
Style/IfUnlessModifier:
Enabled: false
# and and or is okay
Style/AndOr:
Enabled: false
# Configuration parameters: CountComments.
Metrics/ClassLength:
Max: 350
# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength:
Max: 120
Exclude:
- './spec/**/*'
# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
Max: 17
Metrics/PerceivedComplexity:
Max: 18
# Sometimes it's easier to read without guards
Style/GuardClause:
Enabled: false
# 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
# something = if something_else
# that's confusing
Style/ConditionalAssignment:
Enabled: false
Style/RedundantSelf:
Enabled: True
# e.g.
# def self.is_supported?(platform)
# we may never use `platform`
Lint/UnusedMethodArgument:
Enabled: false
# the let(:key) { ... }
Lint/ParenthesesAsGroupedExpression:
Exclude:
- '**/spec/**/*'
# This would reject is_ in front of methods
# We use `is_supported?` everywhere already
Naming/PredicateName:
Enabled: false
# We allow the $
Style/PerlBackrefs:
Enabled: false
AllCops:
TargetRubyVersion: 2.3
Exclude:
- './vendor/**/*'
- './fastfile-parser/**/*'
- './taskqueue/**/*'
- '**/node_modules/**/*'
- 'protos/*_pb.rb'
# They have not to be snake_case
Naming/FileName:
Exclude:
- '**/*.gemspec'
# Added after upgrade to 0.38.0
Style/MutableConstant:
Enabled: false
# length > 0 is good
Style/ZeroLengthPredicate:
Enabled: false
# Adds complexity
Style/IfInsideElse:
Enabled: false
# Sometimes we just want to 'collect'
Style/CollectionMethods:
Enabled: false
# ( ) for method calls
Style/MethodCallWithArgsParentheses:
Enabled: true
IgnoredMethods:
- 'require'
- 'require_relative'
- 'gem'
- 'program'
- 'command'
- 'raise'
- 'attr_accessor'
- 'attr_reader'
# rspec tests code below
- 'to'
- 'not_to'
- 'describe'
- 'it'
- 'context'
- 'before'
- 'after'