Permalink
Browse files

Add RuboCop

  • Loading branch information...
1 parent e0e5889 commit a5b5d6ff72011fc2bcf0222b290b2c9bd1aa050c @sferik sferik committed Jan 1, 2014
Showing with 108 additions and 1 deletion.
  1. +94 −0 .rubocop.yml
  2. +2 −0 Gemfile
  3. +12 −1 Rakefile
View
@@ -0,0 +1,94 @@
+AllCops:
+ Includes:
+ - 'Gemfile'
+ - 'Rakefile'
+ - 'http.gemspec'
+
+# Avoid long parameter lists
+ParameterLists:
+ Max: 3
+ CountKeywordArgs: true
+
+MethodLength:
+ CountComments: false
+ Max: 31 # TODO: lower to 15
+
+ClassLength:
+ CountComments: false
+ Max: 132 # TODO: lower to 100
+
+CyclomaticComplexity:
+ Max: 13 # TODO: lower to 6
+
+# Avoid more than `Max` levels of nesting.
+BlockNesting:
+ Max: 3
+
+# Align with the style guide.
+CollectionMethods:
+ PreferredMethods:
+ collect: 'map'
+ inject: 'reduce'
+ find: 'detect'
+ find_all: 'select'
+
+# Do not force public/protected/private keyword to be indented at the same
+# level as the def keyword. My personal preference is to outdent these keywords
+# because I think when scanning code it makes it easier to identify the
+# sections of code and visually separate them. When the keyword is at the same
+# level I think it sort of blends in with the def keywords and makes it harder
+# to scan the code and see where the sections are.
+AccessModifierIndentation:
+ Enabled: false
+
+# Limit line length
+LineLength:
+ Enabled: false
+
+# Disable documentation checking until a class needs to be documented once
+Documentation:
+ Enabled: false
+
+# Not all trivial readers/writers can be defined with attr_* methods
+TrivialAccessors:
+ Enabled: false
+
+# Enforce Ruby 1.8-compatible hash syntax
+HashSyntax:
+ EnforcedStyle: hash_rockets
+
+# No spaces inside hash literals
+SpaceInsideHashLiteralBraces:
+ EnforcedStyle: no_space
+
+# Allow dots at the end of lines
+DotPosition:
+ Enabled: false
+
+# Don't require magic comment at the top of every file
+Encoding:
+ Enabled: false
+
+# Enforce outdenting of access modifiers (i.e. public, private, protected)
+AccessModifierIndentation:
+ EnforcedStyle: outdent
+
+EmptyLinesAroundAccessModifier:
+ Enabled: true
+
+# Align ends correctly
+EndAlignment:
+ AlignWith: variable
+
+# Indentation of when/else
+CaseIndentation:
+ IndentWhenRelativeTo: end
+ IndentOneStep: false
+
+# Use the old lambda literal syntax
+Lambda:
+ Enabled: false
+
+Semicolon:
+ Exclude:
+ - 'spec/support/'
View
@@ -19,13 +19,15 @@ end
group :test do
gem 'coveralls', :require => false
gem 'rspec', '>= 2.14'
+ gem 'rubocop', '>= 0.16', :platforms => [:ruby_19, :ruby_20, :ruby_21]
platforms :jruby, :ruby_18 do
gem 'json', '>= 1.8.1'
gem 'mime-types', '~> 1.25'
end
end
platforms :rbx do
+ gem 'racc'
gem 'rubinius-coverage', '~> 2.0'
gem 'rubysl', '~> 2.0'
gem 'rubysl-json', '~> 2.0'
View
@@ -4,4 +4,15 @@ require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new
-task :default => :spec
+task :test => :spec
+
+begin
+ require 'rubocop/rake_task'
+ Rubocop::RakeTask.new
+rescue LoadError
+ task :rubocop do
+ $stderr.puts 'Rubocop is disabled'
+ end
+end
+
+task :default => [:spec, :rubocop]

0 comments on commit a5b5d6f

Please sign in to comment.