Skip to content

Commit

Permalink
Add RuboCop
Browse files Browse the repository at this point in the history
  • Loading branch information
sferik committed Jan 1, 2014
1 parent e0e5889 commit a5b5d6f
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 1 deletion.
94 changes: 94 additions & 0 deletions .rubocop.yml
@@ -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/'
2 changes: 2 additions & 0 deletions Gemfile
Expand Up @@ -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'
Expand Down
13 changes: 12 additions & 1 deletion Rakefile
Expand Up @@ -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.