Skip to content

Commit

Permalink
Add rubocop to docs project (fastlane#679)
Browse files Browse the repository at this point in the history
`Fastfile` didn't follow fastlane standard, quickest fix was to add rubocop to the project.
Also found some inconsistencies in other files.
  • Loading branch information
janpio authored and KrauseFx committed Aug 21, 2018
1 parent cd9af46 commit ee15a46
Show file tree
Hide file tree
Showing 6 changed files with 349 additions and 20 deletions.
311 changes: 311 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
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

# 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
Style/VariableNumber:
Enabled: false

# This is used a lot across the fastlane code base for config files
Style/MethodMissing:
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

#
# 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/**/*'

# In specs requires are done automatically
Require/MissingRequireStatement:
Exclude:
- '**/spec/**/*.rb'
- '**/spec_helper.rb'
- 'spaceship/lib/spaceship/babosa_fix.rb'
- '**/Fastfile'
- '**/*.gemspec'
- 'rakelib/**/*'
- '**/*.rake'
- '**/Rakefile'
- 'fastlane/**/*' # TODO: remove
- 'supply/**/*' # TODO: remove

# 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 to boolean
Style/DoubleNegation:
Enabled: false

# Prevent to replace [] into %i
Style/SymbolArray:
Enabled: false

# We still support Ruby 2.0.0
Layout/IndentHeredoc:
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: true
EnforcedStyle: conditionals

# Configuration parameters: CountComments.
Metrics/ClassLength:
Max: 320


# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength:
Max: 370

# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
Max: 17

Metrics/PerceivedComplexity:
Max: 18

# Sometimes it's easier to read without guards
Style/GuardClause:
Enabled: false

# We allow both " and '
Style/StringLiterals:
Enabled: false

# something = if something_else
# that's confusing
Style/ConditionalAssignment:
Enabled: false

# Better to have too much self than missing a self
Style/RedundantSelf:
Enabled: false

# 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
Style/PredicateName:
Enabled: false

# We allow the $
Style/PerlBackrefs:
Enabled: false

# Disable '+ should be surrounded with a single space' for xcodebuild_spec.rb
Layout/SpaceAroundOperators:
Exclude:
- '**/spec/actions_specs/xcodebuild_spec.rb'

AllCops:
TargetRubyVersion: 2.0
Include:
- '*/lib/assets/*Template'
- '*/lib/assets/*TemplateAndroid'
Exclude:
- '**/lib/assets/custom_action_template.rb'
- './vendor/**/*'
- '**/lib/assets/DefaultFastfileTemplate'

# They have not to be snake_case
Style/FileName:
Exclude:
- '**/Dangerfile'
- '**/Brewfile'
- '**/Gemfile'
- '**/Podfile'
- '**/Rakefile'
- '**/Fastfile'
- '**/Deliverfile'
- '**/Snapfile'
- '**/*.gemspec'

# We're not there yet
Style/Documentation:
Enabled: false

# 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

# Check whether fork is handled correctly on all platforms
CrossPlatform/ForkUsage:
Exclude:
- '**/plugins/template/**/*'

# ( ) for method calls
Style/MethodCallWithArgsParentheses:
Enabled: true
IgnoredMethods:
- 'require'
- 'require_relative'
- 'fastlane_require'
- 'gem'
- 'program'
- 'command'
- 'raise'
- 'attr_accessor'
- 'attr_reader'
- 'desc'
- 'lane'
- 'private_lane'
- 'platform'
# rspec tests code below
- 'to'
- 'describe'
- 'it'
- 'be'
- 'context'
- 'before'
- 'after'
6 changes: 4 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
source "https://rubygems.org"
source("https://rubygems.org")

# We want to test with the latest master branch
gem "fastlane", git: "https://github.com/fastlane/fastlane"
gem "danger"
gem "fastlane", git: "https://github.com/fastlane/fastlane"

gem "rubocop", "0.49.1"
19 changes: 18 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ GEM
CFPropertyList (3.0.0)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
ast (2.4.0)
atomos (0.1.3)
babosa (1.0.2)
claide (1.0.2)
Expand Down Expand Up @@ -125,15 +126,30 @@ GEM
octokit (4.10.0)
sawyer (~> 0.8.0, >= 0.5.3)
open4 (1.3.4)
parallel (1.12.1)
parser (2.5.1.2)
ast (~> 2.4.0)
os (1.0.0)
plist (3.4.0)
powerpack (0.1.2)
public_suffix (2.0.5)
rainbow (2.2.2)
rake
rake (12.3.1)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rouge (2.0.7)
rubocop (0.49.1)
parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.10.0)
rubyzip (1.2.1)
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
Expand Down Expand Up @@ -178,6 +194,7 @@ PLATFORMS
DEPENDENCIES
danger
fastlane!
rubocop (= 0.49.1)

BUNDLED WITH
1.16.2
1.16.3
Loading

0 comments on commit ee15a46

Please sign in to comment.