diff --git a/.rubocop.yml b/.rubocop.yml index 1d30d2d..afed07b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,19 @@ ---- +inherit_from: .rubocop_todo.yml + +AllCops: + Include: + - Rakefile + +StringLiterals: + Enabled: false LineLength: - # Default line length is silly. 100 is more realistic. - Max: 100 + Enabled: false + +# Stick to verbose until https://bugs.ruby-lang.org/issues/10177 is closed. +Style/PreferredHashMethods: + EnforcedStyle: verbose + +AllCops: + Exclude: + - 'vendor/**/*' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml new file mode 100644 index 0000000..bf90e74 --- /dev/null +++ b/.rubocop_todo.yml @@ -0,0 +1,290 @@ +# This configuration was generated by +# `rubocop --auto-gen-config` +# on 2018-04-12 23:58:26 +0200 using RuboCop version 0.54.0. +# The point is for the user to remove these configuration records +# one by one as the offenses are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of RuboCop, may require this file to be generated again. + +# Offense count: 3 +# Cop supports --auto-correct. +# Configuration parameters: Include, TreatCommentsAsGroupSeparators. +# Include: **/*.gemspec +Gemspec/OrderedDependencies: + Exclude: + - 'oxidized-web.gemspec' + +# Offense count: 1 +# Configuration parameters: Include. +# Include: **/*.gemspec +Gemspec/RequiredRubyVersion: + Exclude: + - 'oxidized-web.gemspec' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. +# SupportedStyles: space, no_space, compact +# SupportedStylesForEmptyBraces: space, no_space +Layout/SpaceInsideHashLiteralBraces: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 3 +# Cop supports --auto-correct. +Layout/SpaceInsidePercentLiteralDelimiters: + Exclude: + - 'oxidized-web.gemspec' + +# Offense count: 1 +# Cop supports --auto-correct. +Layout/TrailingWhitespace: + Exclude: + - 'lib/oxidized/web/mig.rb' + +# Offense count: 1 +Lint/AmbiguousBlockAssociation: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Configuration parameters: AllowSafeAssignment. +Lint/AssignmentInCondition: + Exclude: + - 'lib/oxidized/web/mig.rb' + +# Offense count: 1 +Lint/HandleExceptions: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 7 +Metrics/AbcSize: + Max: 47 + +# Offense count: 1 +# Configuration parameters: CountComments, ExcludedMethods. +Metrics/BlockLength: + Max: 33 + +# Offense count: 1 +# Configuration parameters: CountBlocks. +Metrics/BlockNesting: + Max: 5 + +# Offense count: 2 +# Configuration parameters: CountComments. +Metrics/ClassLength: + Max: 272 + +# Offense count: 2 +Metrics/CyclomaticComplexity: + Max: 9 + +# Offense count: 9 +# Configuration parameters: CountComments. +Metrics/MethodLength: + Max: 36 + +# Offense count: 3 +Metrics/PerceivedComplexity: + Max: 11 + +# Offense count: 5 +# Cop supports --auto-correct. +Performance/RedundantMatch: + Exclude: + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +Performance/StringReplacement: + Exclude: + - 'lib/oxidized/web/mig.rb' + +# Offense count: 1 +Security/Eval: + Exclude: + - 'Rakefile' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: AutoCorrect. +Security/JSONLoad: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: always, conditionals +Style/AndOr: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: braces, no_braces, context_dependent +Style/BracesAroundHashParameters: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions. +# SupportedStyles: assign_to_condition, assign_inside_condition +Style/ConditionalAssignment: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +Style/DateTime: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 3 +Style/Documentation: + Exclude: + - 'spec/**/*' + - 'test/**/*' + - 'lib/oxidized/web.rb' + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/EmptyLiteral: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 2 +# Configuration parameters: EnforcedStyle. +# SupportedStyles: each, for +Style/For: + Exclude: + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols. +# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys +Style/HashSyntax: + Exclude: + - 'Rakefile' + +# Offense count: 9 +# Cop supports --auto-correct. +Style/IfUnlessModifier: + Exclude: + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 10 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline +Style/MethodDefParentheses: + Exclude: + - 'lib/oxidized/web.rb' + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: both, prefix, postfix +Style/NegatedIf: + Exclude: + - 'lib/oxidized/web.rb' + +# Offense count: 4 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, MinBodyLength. +# SupportedStyles: skip_modifier_ifs, always +Style/Next: + Exclude: + - 'lib/oxidized/web/mig.rb' + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: IncludeSemanticChanges. +Style/NonNilCheck: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/Not: + Exclude: + - 'lib/oxidized/web.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/ParallelAssignment: + Exclude: + - 'lib/oxidized/web.rb' + +# Offense count: 3 +# Cop supports --auto-correct. +# Configuration parameters: PreferredDelimiters. +Style/PercentLiteralDelimiters: + Exclude: + - 'oxidized-web.gemspec' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/Proc: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 4 +# Cop supports --auto-correct. +Style/RedundantParentheses: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/SelfAssignment: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline. +# SupportedStyles: single_quotes, double_quotes +Style/StringLiterals: + Exclude: + - 'lib/oxidized/web/mig.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInHashLiteral: + Exclude: + - 'lib/oxidized/web.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/WhileUntilDo: + Exclude: + - 'lib/oxidized/web/webapp.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: WordRegex. +# SupportedStyles: percent, brackets +Style/WordArray: + EnforcedStyle: percent + MinSize: 3 + +# Offense count: 10 +# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. +# URISchemes: http, https +Metrics/LineLength: + Max: 177 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8f97b30 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: ruby +sudo: false +cache: bundler +rvm: + - 2.1.6 diff --git a/README.md b/README.md index 5691673..57989df 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Oxidized Web +# Oxidized Web [![Build Status](https://travis-ci.org/ytti/oxidized-web.svg)](https://travis-ci.org/ytti/oxidized-web) [![Gem Version](https://badge.fury.io/rb/oxidized-web.svg)](http://badge.fury.io/rb/oxidized-web) Web userinterface and RESTful API for Oxidized. diff --git a/Rakefile b/Rakefile index de6ba82..6f792d5 100644 --- a/Rakefile +++ b/Rakefile @@ -4,6 +4,18 @@ require 'rake/testtask' gemspec = eval(File.read(Dir['*.gemspec'].first)) file = [gemspec.name, gemspec.version].join('-') + '.gem' +# Integrate Rubocop if available +begin + require 'rubocop/rake_task' + + RuboCop::RakeTask.new + task(:default).prerequisites << task(:rubocop) +rescue LoadError + task :rubocop do + puts 'Install rubocop to run its rake tasks' + end +end + desc 'Validate gemspec' task :gemspec do gemspec.validate diff --git a/oxidized-web.gemspec b/oxidized-web.gemspec index bada311..636427f 100644 --- a/oxidized-web.gemspec +++ b/oxidized-web.gemspec @@ -23,4 +23,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'emk-sinatra-url-for', '~> 0.2' s.add_runtime_dependency 'htmlentities', '~> 4.3' s.add_runtime_dependency 'charlock_holmes', '~> 0.7.5' + + s.add_development_dependency 'rubocop', '~> 0.54' + s.add_development_dependency 'rails_best_practices', '~> 1.19' end