Giter Club home page Giter Club logo

rubycritic's Introduction

RubyCritic

Gem Version Continuous Integration Code Climate

RubyCritic Icon

RubyCritic is a gem that wraps around static analysis gems such as Reek, Flay and Flog to provide a quality report of your Ruby code.

Table of Contents

Overview

This gem provides features such as:

  1. An overview of your project: RubyCritic overview screenshot

  2. An index of the project files with their respective number of smells: RubyCritic code index screenshot

  3. An index of the smells detected: RubyCritic smells index screenshot

  4. When analysing code like the following:

class Dirty
  def awful(x, y)
    if y
      @screen = widgets.map {|w| w.each {|key| key += 3}}
    end
  end
end

It basically turns something like this:

Reek output screenshot

Into something like this:

RubyCritic file code screenshot

  1. It uses your source control system (only Git, Mercurial and Perforce are currently supported) to compare your currently uncommitted changes with your last commit.

    Warning: If your code is not as you expect it to be after running RubyCritic, please check your source control system stash.

Checkout the /docs if you want to read more about our core metrics.

Getting Started

RubyCritic can be installed with the following command:

$ gem install rubycritic

If you'd rather install RubyCritic using Bundler, add this line to your application's Gemfile:

gem "rubycritic", require: false

And then execute:

$ bundle

Usage

Running rubycritic with no arguments will analyse all the Ruby files in the current directory:

$ rubycritic

Alternatively you can pass rubycritic a list of files and directories. The analysis will be scoped to the provided files and directories:

$ rubycritic app lib/foo.rb

For a full list of the command-line options run:

$ rubycritic --help
Command flag Description
-v / --version Displays the current version and exits
-p / --path Set path where report will be saved (tmp/rubycritic by default)
--coverage-path Set path where SimpleCov will be saved (./coverage by default)
-f / --format Report smells in the given format(s)1
--custom-format path:classname Load and instantiate custom formatter(s)2
-s / --minimum-score Set a minimum score (FLOAT: ex: 96.28), default: 0
-m / --mode-ci Use CI mode3
-b / --branch Set branch to compare
-t / --maximum-decrease Threshold for score difference between two branches4
--deduplicate-symlinks De-duplicate symlinks based on their final target
--suppress-ratings Suppress letter ratings
--no-browser Do not open html report with browser
  1. Available output formats:
  • html (default; will open in a browser)
  • json
  • console
  • lint
  1. See custom formatters docs
  2. Faster, analyses diffs w.r.t base_branch (default: main), see -b
  3. Works only with -b, default: 0

You also can use a config file. Just create a .rubycritic.yml on your project root path.

Here are one example:

mode_ci:
  enabled: true # default is false
  branch: 'production' # default is main
branch: 'production' # default is main
path: '/tmp/mycustompath' # Set path where report will be saved (tmp/rubycritic by default)
coverage_path: '/tmp/coverage' # Set path where SimpleCov coverage will be saved (./coverage by default)
threshold_score: 10 # default is 0
deduplicate_symlinks: true # default is false
suppress_ratings: true # default is false
no_browser: true # default is false
formats: # Available values are: html, json, console, lint. Default value is html.
  - console
minimum_score: 95 # default is 0
paths: # Files to analyse. Churn calculation is scoped to these files when using Git SCM.
  - 'app/controllers/'
  - 'app/models/'

Analyzer Configuration

  • Reek: RubyCritic utilizes Reek's default configuration loading mechanism. This means that if you have an existing Reek configuration file, you can just put this into your project root and RubyCritic will respect this configuration.
  • flay: We use flay's default configuration.
  • flog: We use flog's default configuration with a couple of smaller tweaks:
    • all: Forces flog to report scores on all classes and methods. Without this option flog will only give results up to a certain threshold.
    • continue: Makes it so that flog does not abort when a ruby file cannot be parsed.
    • methods: Configures flog to skip code outside of methods. It prevents flog from reporting on the "methods" private and protected. It also prevents flog from reporting on Rails methods like before_action and has_many.

Alternative Usage Methods

If you're fond of Guard you might like guard-rubycritic. It automatically analyses your Ruby files as they are modified.

For continuous integration, you can give Jenkins CI a spin. With it, you can easily build your own (poor-man's) Code Climate!

Rake Task

You can use RubyCritic as Rake command in its most simple form like this:

require "rubycritic/rake_task"

RubyCritic::RakeTask.new

A more sophisticated Rake task that would make use of all available configuration options could look like this:

RubyCritic::RakeTask.new do |task|
  # Name of RubyCritic task. Defaults to :rubycritic.
  task.name    = 'something_special'

  # Glob pattern to match source files. Defaults to FileList['.'].
  task.paths   = FileList['vendor/**/*.rb']

  # You can pass all the options here in that are shown by "rubycritic -h" except for
  # "-p / --path" since that is set separately. Defaults to ''.
  task.options = '--mode-ci --format json'

  # Defaults to false
  task.verbose = true

  # Fail the Rake task if RubyCritic doesn't pass. Defaults to true
  task.fail_on_error = true
end

RubyCritic will try to open the generated report with a browser by default. If you don't want this you can prevent this behaviour by setting the options correspondingly:

RubyCritic::RakeTask.new do |task|
  task.options = '--no-browser'
end

If you wish to create multiple Rake tasks (e.g., for local & for ci-specific configuration), you can do so! If you decide to do this, you should provide a clearer description for each task:

# for local
RubyCritic::RakeTask.new("local", "Run RubyCritic (local configuration)" do |task|
  # ...
end

# for CI
RubyCritic::RakeTask.new("ci", "Run RubyCritic (CI configuration)" do |task|
  task.options = "--mode-ci"
  # ...
end

Formatters

See formatters

Compatibility

RubyCritic is supporting Ruby versions:

Ruby version Latest RubyCritic version
2.4 v4.7.0
2.5 v4.7.0
2.6 v4.7.0
2.7 latest
3.0 latest
3.1 latest

Improving RubyCritic

RubyCritic doesn't have to remain a second choice to other code quality analysis services. Together, we can improve it and continue to build on the great code metric tools that are available in the Ruby ecosystem.

Arguably, the better_errors gem only got popular after receiving a (pretty awesome) Pull Request that changed its page design.

Similarly, Pull Requests that improve the look and feel of the gem, that tweak the calculation of ratings or that fix existing issues will be most welcome. Just commenting on an issue and giving some insight into how something should work will be appreciated. No contribution is too small.

See RubyCritic's contributing guidelines about how to proceed.

Contributors

RubyCritics initial author was Guilherme Simões.

The current core team consists of:

Credits

Whitesmith

RubyCritic is maintained and funded by Whitesmith. Tweet your questions or suggestions to @Whitesmithco.

rubycritic's People

Contributors

allansiqueira avatar anicholson-sq avatar denny avatar enomotodev avatar etagwerker avatar faisal avatar fbuys avatar georgedrummond avatar guilhermesimoes avatar h-r-k-matsumoto avatar itsmeurbi avatar jbampton avatar jbodah avatar joshrpowell avatar juanvqz avatar kcamcam avatar koic avatar lauratpa avatar lucasmazza avatar nathanbwright avatar nijikon avatar nunosilva800 avatar olleolleolle avatar rishijain avatar rohitcy avatar ryansnodgrass avatar stufro avatar tejasbubane avatar troessner avatar y-yagi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rubycritic's Issues

Upgrade to Reek 2.0.3 which fixes calling super with parameters

RubyCritic started crashing when run on my codebase:

/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:73:in `ignored_iterator?': undefined method `method_name' for (super):#<Class:0x007f189d1c0180> (NoMethodError)

Reek 2.0 has what looks like a fix: "Make NestedIterator not break when iterator is called on super."

I forked the RubyCritic code and tried updating Reek. The tests now fail for two reasons:

  • samples/reek/smelly.rb now has two smells, not one; the new one is IrresponsibleModule.
  • samples/reek/not_smelly.rb has a lot of smells, not none.

I think the issue in both cases is that config.reek is being ignored. The Reek changelog lists a couple of possibly related items involving the Rake task and CLI options.

I'm going to look into that and hopefully submit a PR, but I thought I would check in with what I have so far.

Analyse classes, not files

I'm sad that I only realized this too late. Changing this will probably involve a major rewrite, but it will have to be done at some point.

(string):2:13: error: unexpected token tOP_ASGN

gem install rubycritic

rubycritic .

I can supply more details if you want 'em.

...
...stupid lemmings and their bad erb templates... skipping
(string):2:13: error: unexpected token tOP_ASGN
factory :<%= singular_name %> do
^^
/Users/kwerle/.rvm/gems/ruby-2.1.2/gems/parser-2.1.9/lib/parser/diagnostic/engine.rb:71:in process': unexpected token tOP_ASGN (Parser::SyntaxError) from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/parser-2.1.9/lib/parser/base.rb:264:inon_error'
from /Users/kwerle/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/racc/parser.rb:258:in _racc_do_parse_c' from /Users/kwerle/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/racc/parser.rb:258:indo_parse'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/parser-2.1.9/lib/parser/base.rb:175:in parse' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/parser-2.1.9/lib/parser/base.rb:31:inparse'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers/stats.rb:27:in parse_content' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers/stats.rb:22:inmethods_count'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers/stats.rb:14:in block in run' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers/stats.rb:13:ineach'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers/stats.rb:13:in run' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers_runner.rb:26:inblock in run'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers_runner.rb:25:in map' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/analysers_runner.rb:25:inrun'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/orchestrator.rb:15:in critique' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/lib/rubycritic/cli.rb:37:inexecute'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.0/bin/rubycritic:5:in `<top (required)>'

Verbose mode

With a large code base it's difficult to tell if rubycritic is stuck or not or to determine what might be causing it to be running slowly. Some kind of verbose mode would help alleviate some of those issues

No such file or directory @ rb_sysopen

/Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers/stats.rb:21:in read': No such file or directory @ rb_sysopen - lib/zep_solar.rb (Errno::ENOENT) from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers/stats.rb:21:inmethods_count'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers/stats.rb:14:in block in run' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers/stats.rb:13:ineach'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers/stats.rb:13:in run' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:26:inblock in run'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:25:in map' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:25:inrun'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/orchestrator.rb:15:in critique' from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/lib/rubycritic/cli.rb:37:inexecute'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/gems/rubycritic-1.0.1/bin/rubycritic:5:in <top (required)>' from /Users/kwerle/.rvm/gems/ruby-2.1.2/bin/rubycritic:23:inload'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/bin/rubycritic:23:in <main>' from /Users/kwerle/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:ineval'
from /Users/kwerle/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `

'

Code view Filter/Search

While I can just cmd + f for the things I'm interested in, it would be great to be able to filter the "Code" view results by a keyword. This way I can quickly check all of the modules under a certain namespace that I'm working on for flaws

Ignore symlinks

Hi,

I've been running RubyCritic on a large Rails project. We use Rails engines to organize / separate our code, and for better or worse, we have a number of symlinked files from one engine to another or back to the main app. (I'd like to remove these links eventually but that's another discussion.)

When we run RubyCritic on this project, we get a lot of duplicate code warnings, and the source/target of the duplication are the source/target of the symlinks. It would be nice if RubyCritic could be configured to ignore symlinks.

I know that my use case might not be very common, so I'm prepared to work on this myself. I just wanted to open an issue here to answer a few questions:

  • is this something that should be implemented at the RubyCritic level?
    • I think so, given the SourceLocator class
  • should RubyCritic just ignore symlinks by default?
    • if not, should this be a CLI option?

Note -- this is RubyCritic version 1.1.1 running under JRuby 1.7.9 (which implements Ruby 1.9.3)

Document supported ruby versions/integrate Travis for those versions

As I mentioned in #37, upgrading rubycritic broke debt_ceiling, because I support/test against 1.9, JRuby (1.9 mode), 2.x and RBX, and 1.4 introduced Hash#to_h usage, which isn't supported in 1.9. So while I'd like this fixed, if you want to support 1.9, I realize 1.9 is now officially deprecated and maybe the real fix is to just make explicit what you support and perhaps add Travis for each of those environments.

Option To Display Raw Scores Instead of Letter Grades

The cut scores for letter grades and their associated colors seem somewhat arbitrary. As I understand it this is a feature that is based off of codeclimate's "rating" feature.

It would be useful to have an option to display just the scores, so that you can compare the relative quality of individual files, as well as sort them, reserving judgement for the programmer. If the maintainer feels this is in line with the project, I would be interested in whipping up a pull request to address this.

Incomplete constant name if file has no methods

Given

module Office365
  # This class represents the cached user information retrieved from the
  # ActiveDirectory Graph API. It is a user that exists within a Microsoft
  # Azure Active Directory. It is used for user management.
  class User < ActiveRecord::Base
  # ...

Instead of showing up as Office365::User it simply shows up as User (which also shows up for app/models/user.rb)

rubycritic

Running analysers multiple times

Hi!

I really like this project so I wanted to contribute to it. I was going to start with something small, like: #3

I found that the analysers are run twice, once from the Orchestrator https://github.com/whitesmith/rubycritic/blob/master/lib/rubycritic/orchestrator.rb#L15 which in turn runs the RevisionComparator which runs the analysers again, https://github.com/whitesmith/rubycritic/blob/master/lib/rubycritic/revision_comparator.rb#L35

I'm just trying to understand the codebase a bit better before I start implementing stuff. Would you mind explaining what is going on a bit?

Cheers!

Improving (?) interface

Hi!

I experimented a little bit the other day improving on the interface. Before I go any further I'd just like to see what you think about it. :) I haven't done that much yet and I'm definitely no designer. I've mostly worked on the code file page.

It is based off of Bootswatch Sandstone Link.

Anyways... Here are some gifs.

Gif 1
screen1

Gif 2
screen2

Thoughts?

Cannot parse colon style hashes?

Right off the bat the gem is giving me irreconcilable errors (it doesn't understand the following code):

module InvoicesHelper
  # Excel spreadsheet helpers
  def write_excel_format(loc)
    @workbook = Spreadsheet::Workbook.new
    if @stats.items.any?
      @stats.items.each do |category|
        # Create a worksheet for each product category
        ws = @workbook.create_worksheet(name: category[0])
 ...

Error:

/home/vagrant/.rvm/gems/ruby-2.2.1@global/gems/reek-3.6.0/lib/reek/configuration/app_configuration.rb:17: warning: already initialized constant Reek::Configuration::AppConfiguration::EXCLUDE_PATHS_KEY
/home/vagrant/.rvm/rubies/ruby-2.2.1/lib/ruby/gems/2.2.0/gems/reek-3.6.0/lib/reek/configuration/app_configuration.rb:17: warning: previous definition of EXCLUDE_PATHS_KEY was here
  app/helpers/invoices_helper.rb:8 :: parse error on value ":" (tCOLON)
  skipping app/helpers/invoices_helper.rb
ERROR: parsing ruby file app/helpers/invoices_helper.rb
Racc::ParseError: app/helpers/invoices_helper.rb:8 :: parse error on value ":" (tCOLON) at:
  /home/vagrant/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error'
  /home/vagrant/.rvm/gems/ruby-2.2.1@pos/gems/ruby_parser-3.7.2/lib/ruby_parser_extras.rb:1124:in `on_error'
  /home/vagrant/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c'
  /home/vagrant/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse'
  /home/vagrant/.rvm/gems/ruby-2.2.1@pos/gems/ruby_parser-3.7.2/lib/ruby_parser_extras.rb:1036:in `block in process'

Extract SourceControl subdirectory to gem?

Hey @guilhermesimoes or whoever else is working on rubycritic these days!

I've continued working on Debt Ceiling off and on the last year or so, and just finished a v1 of a big new feature... It adds/requires additional git/source control dependency, and while I considered using rugged, I decided to look at what you guys did for git code and liked your source control abstraction as a light weight interface with no additional dependencies...

For now I just copy pasted your code into my repo and built some new features on it, but I wondered if you would be open to/interested in making it into a new shared gem we can both rely on together? Or, it just occurred to me to see if anyone else already has a ruby source control abstraction, we might both be able to rely on this scm gem I just found, but my addition to your library would need to be ported to theirs, and I think will only work for git... Curious for thoughts/reactions, the PR with my changes to your code are here starting with base.rb, but missing implementation for travel_to_commit for mercurial, and some test coverage. Just an initial feeler while I ponder next steps.

General Styling, GPA

I recently started using this gem and was looking for a project to start contributing to and thought this would be a good choice!

From quickly looking over some of the codebase I thought adding an overall GPA indicator and some new styling would be a good place to start and wanted to see what your thoughts were?

What heppend to my code?

All my code has been lost when i use this gem? 5 days of code and test just get lost!
what hell this gem do when I run?

Improve access to project directory

I don't like how this is currently being done, since File.expand_path expands the path relative to the current working directory.

When a user runs rubycritic from a directory other than the project root, RubyCritic will create a tmp folder on that directory...

Ideally we'd use Rails.root, but Rails is not Ruby.

JSON template to help analisys

I think that a json template would help to generate post build jenkins plugins to send emails on class degradation and other things what do you think? I could work on that, what do you think?

Expose Reek parameters attribute

Reek SmellWarning class has a parameters Hash that contains more details about each smell, like the number of external references on a FeatureEnvy smell, which could be useful to identify which smells are bigger than others. Would be interesting to expose this information somehow through Rubycritic so end users can know more about the smells that were detected by reek.

Would make sense to have a Hash of custom attributes in the Smell class to expose this? I would be glad to send a PR with this later.

uninitialized constant Regexp::CODES (NameError) while running with Ruby 2.1

Could you please look at the following error and give me the status:

/Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:1026:inblock in re_opt': uninitialized constant Regexp::CODES (NameError)
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:1026:in map' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:1026:inre_opt'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:404:in process_dregx' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:218:inblock (2 levels) in process'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:275:in error_handler' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:217:inblock in process'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:340:in in_context' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:194:inprocess'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:215:in block in process_call' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:340:inin_context'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/ruby2ruby-2.0.8/lib/ruby2ruby.rb:211:in process_call' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:218:inblock (2 levels) in process'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:275:in error_handler' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:217:inblock in process'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:340:in in_context' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/sexp_processor-4.4.3/lib/sexp_processor.rb:194:inprocess'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/source/sexp_node.rb:59:in format_ruby' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:81:incall'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:107:in block in calls' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:107:ineach'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:107:in sort_by' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:107:incalls'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:111:in smelly_calls' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/duplicate_method_call.rb:56:inexamine_context'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/smells/smell_detector.rb:70:in examine' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/smell_repository.rb:57:inblock in examine'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/smell_repository.rb:56:in each' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/smell_repository.rb:56:inexamine'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/sniffer.rb:31:in examine' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:159:incheck_smells'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:153:in block in inside_new_context' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:165:inpush'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:151:in inside_new_context' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:40:inprocess_defn'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:23:in process' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:28:inblock in process_default'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:28:in each' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:28:inprocess_default'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:33:in block in process_module' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:152:inblock in inside_new_context'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:165:in push' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:151:ininside_new_context'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:32:in process_module' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/code_parser.rb:23:inprocess'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/core/sniffer.rb:26:in report_on' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/examiner.rb:34:inblock in initialize'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/source/source_repository.rb:34:in each' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/source/source_repository.rb:34:ineach'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/reek-1.3.8/lib/reek/examiner.rb:34:in initialize' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/adapters/reek.rb:9:ininitialize'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/smells/reek.rb:21:in new' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/smells/reek.rb:21:inadd_smells_to'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/smells/reek.rb:14:in block in run' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/smells/reek.rb:13:ineach'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers/smells/reek.rb:13:in run' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:26:inblock in run'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:25:in map' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/analysers_runner.rb:25:inrun'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/revision_comparator.rb:32:in block in analysed_files_before' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/source_control_systems/git.rb:25:intravel_to_head'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/revision_comparator.rb:31:in analysed_files_before' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/revision_comparator.rb:18:inset_statuses'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/orchestrator.rb:17:in critique' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/lib/rubycritic/cli.rb:37:inexecute'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/gems/rubycritic-1.0.1/bin/rubycritic:5:in <top (required)>' from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/bin/rubycritic:23:inload'
from /Users/antonyr/.rbenv/versions/2.1.2/gemsets/client_portal3/bin/rubycritic:23:in <main>'

Allow configuring date range of Churn calculation

I'm running rubycritic on a large project that's been running for 10 years so our git log is very long. I'm thinking we should limit it by commits within the last year in order to speed things up. My calculations showed that this would speed up the churn section by 500% on older projects.

Undefined method `split' for nil:nilClass (NoMethodError)

I am getting the following error consistently when running rubycritic on a particular project:

.../gems/2.1.0/gems/rubycritic-1.1.0/lib/rubycritic/analysers/smells/flog.rb:48:in `smell_locations': undefined method `split' for nil:NilClass (NoMethodError)

I will dig further but wanted to submit this to see if anyone else has seen it.

Highlight entire indentical block on DuplicateCode smell

Right now there's just a banner under the first line where a DuplicateCode smell is detected. In this particular example the UI makes it seem as though only the method signature is duplicated. Highlighting the entire block would help make it more clear what is duplicated

rubycritic

RubyCritic 1.4.0 - Reek crash

I'm running RubyCritic version 1.4 for my project is using Ruby 1.9.3

When install rubycritic using the gem install rubycritic -v 1.4.0 command on an OSx machine.

Reek crashes during the execution. Following is the stacktrace:

/Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:73:in ignored_iterator?': undefined methodmethod_name' for (super (NoMethodError)
(lvar :exception)):#Class:0x007f8ddf0eaca8
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:65:in find_iters_for_iter_node' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:60:inblock in find_iters'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:59:in each' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:59:inflat_map'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:59:in find_iters' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:54:infind_deepest_iterator'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/nested_iterators.rb:35:in examine_context' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/smells/smell_detector.rb:89:inexamine'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/smell_repository.rb:59:in block in examine' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/smell_repository.rb:58:ineach'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/smell_repository.rb:58:in examine' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:161:incheck_smells'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:155:in block in inside_new_context' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:167:inpush'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:153:in inside_new_context' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:41:inprocess_def'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:24:in process' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:inblock in process_default'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:in each' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:inprocess_default'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:93:in process_begin' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:24:inprocess'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:in block in process_default' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:ineach'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:in process_default' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:34:inblock in process_module'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:154:in block in inside_new_context' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:167:inpush'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:153:in inside_new_context' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:33:inprocess_module'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:24:in process' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:inblock in process_default'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:in each' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:29:inprocess_default'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:93:in process_begin' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/code_parser.rb:24:inprocess'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/core/sniffer.rb:20:in report_on' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/examiner.rb:41:inblock in initialize'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/source/source_repository.rb:41:in each' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/source/source_repository.rb:41:ineach'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/reek-1.6.5/lib/reek/examiner.rb:39:in initialize' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/helpers/reek.rb:13:ininitialize'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/reek.rb:21:in new' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/reek.rb:21:inadd_smells_to'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/reek.rb:14:in block in run' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/reek.rb:13:ineach'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/reek.rb:13:in run' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:inblock in run'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:in each' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:inrun'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/commands/default.rb:19:in critique' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/commands/default.rb:15:inexecute'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/lib/rubycritic/cli/application.rb:16:in execute' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/gems/rubycritic-1.4.0/bin/rubycritic:5:in<top (required)>'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/bin/rubycritic:23:in load' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/bin/rubycritic:23:in

'
from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in eval' from /Users/jgfd/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in'

Is this problem happening because Reek itself requires Ruby 2.0+?

Settings file

Instead of having settings purely as flags, it would be interesting to have a configuration file, which could be ported and used across several projects.

Strange errors on Circle CI

I'm seeing strange behaviour when I rub rubycritic on Circle CI. I assume it's something to do with the container environment but it's not clear from the output what the culprit is.

Any advice appreciated!

bundle exec rubycritic -f json
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_association_to_audits.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_association_to_audits.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_comment_to_audits.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_comment_to_audits.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_remote_address_to_audits.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_remote_address_to_audits.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/install.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/install.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_association_to_associated.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_association_to_associated.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_changes_to_audited_changes.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_changes_to_audited_changes.rb
  vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_parent_to_association.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_parent_to_association.rb
  Odd number (2) list for Hash. s(:array, s(:call, nil, :url))
  skipping vendor/bundle/ruby/2.2.0/gems/mime-types-2.4.3/support/iana_registry.rb
  vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/block_helper.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/block_helper.rb
  vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/config.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/config.rb
  vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/block_helper.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/block_helper.rb
  vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/config.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/config.rb
WARNING: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/ for "[\\x00-\\x20%\\x7F-\\xFF]" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
WARNING: too short escaped multibyte character: /^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/ for "^([\\x00-\\x7F]|[\\xC2-\\xDF][\\x80-\\xBF]|\\xE0[\\xA0-\\xBF][\\x80-\\xBF]|[\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2}|\\xED[\\x80-\\x9F][\\x80-\\xBF]|\\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}|[\\xF1-\\xF3][\\x80-\\xBF]{3}|\\xF4[\\x80-\\x8F][\\x80-\\xBF]{2})*$" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
  vendor/bundle/ruby/2.2.0/gems/honeybadger-1.7.0/generators/honeybadger/templates/initializer.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/honeybadger-1.7.0/generators/honeybadger/templates/initializer.rb
WARNING: invalid multibyte escape: /\A(?-mix:[0-9A-Za-z\200-\377])/ for "\\A(?-mix:[0-9A-Za-z\\200-\\377])" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
WARNING: invalid multibyte escape: /[\w\x80-\xFF]/ for "[\\w\\x80-\\xFF]" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
  vendor/bundle/ruby/2.2.0/gems/jbuilder-2.2.4/lib/generators/rails/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/jbuilder-2.2.4/lib/generators/rails/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/activejob-4.2.0/lib/rails/generators/job/templates/job.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activejob-4.2.0/lib/rails/generators/job/templates/job.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/migration/templates/create_table_migration.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/migration/templates/create_table_migration.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/migration/templates/migration.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/migration/templates/migration.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/model/templates/model.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/model/templates/model.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/model/templates/module.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/rails/generators/active_record/model/templates/module.rb
  vendor/bundle/ruby/2.2.0/gems/rails-observers-0.1.2/lib/generators/active_record/observer/templates/observer.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/rails-observers-0.1.2/lib/generators/active_record/observer/templates/observer.rb
  vendor/bundle/ruby/2.2.0/gems/rails-observers-0.1.2/lib/generators/test_unit/observer/templates/unit_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/rails-observers-0.1.2/lib/generators/test_unit/observer/templates/unit_test.rb
  vendor/bundle/ruby/2.2.0/gems/fog-1.27.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb:17 :: parse error on value ")" (tRPAREN)
  skipping vendor/bundle/ruby/2.2.0/gems/fog-1.27.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb
  vendor/bundle/ruby/2.2.0/gems/actionmailer-4.2.0/lib/rails/generators/mailer/templates/mailer.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/actionmailer-4.2.0/lib/rails/generators/mailer/templates/mailer.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/app/templates/config/application.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/app/templates/config/application.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/app/templates/test/test_helper.rb:6 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/app/templates/test/test_helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/controller/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/controller/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/helper/templates/helper.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/helper/templates/helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/config/routes.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/config/routes.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%/engine.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%/engine.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%/version.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/lib/%name%/version.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/rails/application.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/rails/application.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/%name%_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/%name%_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb:4 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/test_helper.rb:5 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/plugin/templates/test/test_helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/scaffold_controller/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/scaffold_controller/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/task/templates/task.rb:1 :: parse error on value "%" (tOP_ASGN)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/rails/task/templates/task.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/controller/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/controller/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/generator/templates/generator_test.rb:4 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/generator/templates/generator_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/integration/templates/integration_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/integration/templates/integration_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/mailer/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/mailer/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/mailer/templates/preview.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/mailer/templates/preview.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/model/templates/unit_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/model/templates/unit_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/controller/templates/controller_spec.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/controller/templates/controller_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/controller/templates/controller_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/controller/templates/controller_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/generator/templates/generator_spec.rb:4 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/generator/templates/generator_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/generator/templates/generator_test.rb:4 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/generator/templates/generator_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/helper/templates/helper_spec.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/helper/templates/helper_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/helper/templates/helper_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/helper/templates/helper_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/install/templates/test_helper.rb:14 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/install/templates/test_helper.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/integration/templates/integration_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/integration/templates/integration_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/mailer_spec.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/mailer_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/mailer_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/mailer_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/preview.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/mailer/templates/preview.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/model/templates/model_spec.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/model/templates/model_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/model/templates/model_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/model/templates/model_test.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/scaffold/templates/controller_spec.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/scaffold/templates/controller_spec.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/scaffold/templates/controller_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-2.1.1/lib/generators/minitest/scaffold/templates/controller_test.rb
  vendor/bundle/ruby/2.2.0/gems/responders-2.0.2/lib/generators/rails/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/responders-2.0.2/lib/generators/rails/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/responders-2.0.2/lib/responders/location_responder.rb:5 :: parse error on value "," (tCOMMA)
  skipping vendor/bundle/ruby/2.2.0/gems/responders-2.0.2/lib/responders/location_responder.rb
  vendor/bundle/ruby/2.2.0/gems/fog-1.30.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb:17 :: parse error on value ")" (tRPAREN)
  skipping vendor/bundle/ruby/2.2.0/gems/fog-1.30.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb
  vendor/bundle/ruby/2.2.0/gems/world-flags-0.6.5/sandbox/languages_country_extract.rb:7 :: parse error on value "/" (tREGEXP_BEG)
  skipping vendor/bundle/ruby/2.2.0/gems/world-flags-0.6.5/sandbox/languages_country_extract.rb
  vendor/bundle/ruby/2.2.0/gems/minitest-rails-capybara-2.1.1/lib/generators/minitest/feature/templates/feature_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/minitest-rails-capybara-2.1.1/lib/generators/minitest/feature/templates/feature_test.rb
  vendor/bundle/ruby/2.2.0/gems/fog-1.31.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb:17 :: parse error on value ")" (tRPAREN)
  skipping vendor/bundle/ruby/2.2.0/gems/fog-1.31.0/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb
WARNING: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/ for "[\\x00-\\x20%\\x7F-\\xFF]" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
  vendor/bundle/ruby/2.2.0/gems/jbuilder-2.2.6/lib/generators/rails/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/jbuilder-2.2.6/lib/generators/rails/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/activejob-4.2.4/lib/rails/generators/job/templates/job.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activejob-4.2.4/lib/rails/generators/job/templates/job.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/migration/templates/create_table_migration.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/migration/templates/create_table_migration.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/migration/templates/migration.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/migration/templates/migration.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/model/templates/model.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/model/templates/model.rb
  vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/model/templates/module.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/rails/generators/active_record/model/templates/module.rb
  vendor/bundle/ruby/2.2.0/gems/actionmailer-4.2.4/lib/rails/generators/mailer/templates/mailer.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/actionmailer-4.2.4/lib/rails/generators/mailer/templates/mailer.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/app/templates/config/application.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/app/templates/config/application.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/app/templates/test/test_helper.rb:6 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/app/templates/test/test_helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/controller/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/controller/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/helper/templates/helper.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/helper/templates/helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/config/routes.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/config/routes.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%/engine.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%/engine.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%/version.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/lib/%name%/version.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/rails/application.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/rails/application.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/test/%name%_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/test/%name%_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/test/test_helper.rb:5 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/plugin/templates/test/test_helper.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/scaffold_controller/templates/controller.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/scaffold_controller/templates/controller.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/task/templates/task.rb:1 :: parse error on value "%" (tOP_ASGN)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/rails/task/templates/task.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/controller/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/controller/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/generator/templates/generator_test.rb:4 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/generator/templates/generator_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/integration/templates/integration_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/integration/templates/integration_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/mailer/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/mailer/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/mailer/templates/preview.rb:1 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/mailer/templates/preview.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/model/templates/unit_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/model/templates/unit_test.rb
  vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb:3 :: parse error on value "<" (tLT)
  skipping vendor/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb
  vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/test/samples/unparsable.rb:1 :: parse error on value "%" (tOP_ASGN)
  skipping vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/test/samples/unparsable.rb
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_association_to_audits.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_comment_to_audits.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/add_remote_address_to_audits.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/install.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_association_to_associated.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_changes_to_audited_changes.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/bundler/gems/audited-8533f6490223/lib/generators/audited/templates/rename_parent_to_association.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
ERROR: parsing ruby file vendor/bundle/ruby/2.2.0/gems/mime-types-2.4.3/support/iana_registry.rb
RubyParser::SyntaxError: Odd number (2) list for Hash. s(:array, s(:call, nil, :url)) at:
  /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:128:in `syntax_error'
  /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby18_parser.rb:5688:in `_reduce_492'
  /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c'
  /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse'
  /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/block_helper.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/fixtures/doc/config.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/block_helper.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/thor-0.19.1/spec/sandbox/doc/config.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
WARNING: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/ for "[\\x00-\\x20%\\x7F-\\xFF]" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
WARNING: too short escaped multibyte character: /^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/ for "^([\\x00-\\x7F]|[\\xC2-\\xDF][\\x80-\\xBF]|\\xE0[\\xA0-\\xBF][\\x80-\\xBF]|[\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2}|\\xED[\\x80-\\x9F][\\x80-\\xBF]|\\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}|[\\xF1-\\xF3][\\x80-\\xBF]{3}|\\xF4[\\x80-\\x8F][\\x80-\\xBF]{2})*$" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/honeybadger-1.7.0/generators/honeybadger/templates/initializer.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
WARNING: invalid multibyte escape: /\A(?-mix:[0-9A-Za-z\200-\377])/ for "\\A(?-mix:[0-9A-Za-z\\200-\\377])" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
WARNING: invalid multibyte escape: /[\w\x80-\xFF]/ for "[\\w\\x80-\\xFF]" ""
WARNING: trying to recover with ENC_UTF8
WARNING: trying to recover with ENC_NONE
#<Racc::ParseError: vendor/bundle/ruby/2.2.0/gems/jbuilder-2.2.4/lib/generators/rails/templates/controller.rb:1 :: parse error on value "<" (tLT)> at /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:527:in `on_error', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1124:in `on_error', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `_racc_do_parse_c', /home/ubuntu/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/racc/parser.rb:258:in `do_parse', /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/ruby_parser-3.7.1/lib/ruby_parser_extras.rb:1036:in `block in process'

...stupid lemmings and their bad erb templates... skipping
/home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:146:in `dsl_name?': undefined method `[]' for nil:NilClass (NoMethodError)
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:464:in `process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:633:in `process_until_empty'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:468:in `block (2 levels) in process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:495:in `in_method'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:467:in `block in process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:482:in `block in in_klass'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:651:in `with_new_method_stack'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:481:in `in_klass'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:466:in `process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:633:in `process_until_empty'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:352:in `block in process_block'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:262:in `penalize_by'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:351:in `process_block'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:633:in `process_until_empty'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:468:in `block (2 levels) in process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:495:in `in_method'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:467:in `block in process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:482:in `block in in_klass'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:651:in `with_new_method_stack'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:481:in `in_klass'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:466:in `process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:633:in `process_until_empty'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:352:in `block in process_block'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:262:in `penalize_by'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:351:in `process_block'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:633:in `process_until_empty'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:480:in `block in process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:262:in `penalize_by'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:479:in `process_iter'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:251:in `block (2 levels) in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:308:in `error_handler'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:250:in `block in process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:373:in `in_context'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/sexp_processor-4.6.0/lib/sexp_processor.rb:227:in `process'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:224:in `flog_ruby!'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:189:in `flog_ruby'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:177:in `block in flog'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:172:in `each'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/flog-4.2.1/lib/flog.rb:172:in `flog'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/flog.rb:26:in `add_smells_to'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/flog.rb:18:in `block in run'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/flog.rb:17:in `each'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers/smells/flog.rb:17:in `run'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:in `block in run'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:in `each'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/analysers_runner.rb:27:in `run'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/commands/default.rb:19:in `critique'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/commands/default.rb:15:in `execute'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/lib/rubycritic/cli/application.rb:16:in `execute'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/gems/rubycritic-1.4.0/bin/rubycritic:5:in `<top (required)>'
    from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/bin/rubycritic:23:in `load'

from /home/ubuntu/stronghold/vendor/bundle/ruby/2.2.0/bin/rubycritic:23:in `<main>' bundle exec rubycritic -f json returned exit code 1

Document usage of Git

Hey, cool project! If I'm not mistaken, it checks things out with Git, this has the side effect of discarding changes in your Git tree if they haven't been committed, without warning.

This behaviour should at least be documented, or even better: exit with a warning if you try to run it with a dirty tree.

Cheers!

Reek configuration?

When I put a reek.config file in my app/services directory and run Reek from the command line, it reads and uses the config as expected. When I run rubycritic (1.1.1, as packaged), smells (apparently from Reek) are reported for methods like #method_missing?.

If I make that an invalid Reek config file, then the "Invalid configuration file" message is output twice for each file inspected.

My app/services/config.reek is

---
ControlParameter:
  exclude:
    - !ruby/regexp /respond_to\?/

Issue trying to parse a block with named parameters

Version
Ruby 2.0.0p353
RubyCritic 1.1.1

While trying to parse a ruby block with named parameters like follow:

class Foo
  %w(debug info warn error).each do |level|
    define_method(level.to_sym) do |msg = nil, opA: nil, opB: nil, opC: nil, &block|
      puts("[#{level}] #{msg.inspect}")
    end
  end
end

Foo.new.info('message') # => [info] "message"

I got some ugly error message:

tmp$ rubycritic test.rb
Rubycritic requires a Git repository.
  not yet 35 [s(:array, s(:kwarg, :opA, s(:nil))), ",", s(:array, s(:kwarg, :opB, s(:nil)))] => s(:array, s(:kwarg, :opA, s(:nil)))
  skipping test.rb
/usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/ruby_parser-3.4.1/lib/ruby_parser_extras.rb:107:in `debug20': not yet 35 [s(:array, s(:kwarg, :opA, s(:nil))), ",", s(:array, s(:kwarg, :opB, s(:nil)))] => s(:array, s(:kwarg, :opA, s(:nil))) (RuntimeError)
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/ruby_parser-3.4.1/lib/ruby20_parser.rb:6417:in `_reduce_559'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/racc/parser.rb:258:in `_racc_do_parse_c'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/racc/parser.rb:258:in `do_parse'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/ruby_parser-3.4.1/lib/ruby_parser_extras.rb:1019:in `block in process'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/ruby_parser-3.4.1/lib/ruby_parser_extras.rb:1007:in `process'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/ruby_parser-3.4.1/lib/ruby_parser_extras.rb:1320:in `process'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/flog-4.2.1/lib/flog.rb:219:in `flog_ruby!'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/flog-4.2.1/lib/flog.rb:189:in `flog_ruby'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/flog-4.2.1/lib/flog.rb:177:in `block in flog'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/flog-4.2.1/lib/flog.rb:172:in `each'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/flog-4.2.1/lib/flog.rb:172:in `flog'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers/smells/flog.rb:26:in `add_smells_to'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers/smells/flog.rb:18:in `block in run'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers/smells/flog.rb:17:in `each'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers/smells/flog.rb:17:in `run'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers_runner.rb:26:in `block in run'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers_runner.rb:25:in `each'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/analysers_runner.rb:25:in `run'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/orchestrator.rb:15:in `critique'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/lib/rubycritic/cli.rb:37:in `execute'
    from /usr/local/var/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/rubycritic-1.1.1/bin/rubycritic:5:in `<top (required)>'
    from /usr/local/var/rbenv/versions/2.0.0-p353/bin/rubycritic:23:in `load'
    from /usr/local/var/rbenv/versions/2.0.0-p353/bin/rubycritic:23:in `<main>'

I did not find any other issue that seemed to be related to this.

As we are currently using rubycritic to get code quality report at work, we would be very thankful of any tip to work around this issue.

Many thanks in advance, guys, and congrat's for that tool, it's really useful !

Document Ratings

What are the different ratings? What do they mean? It's not clear from the code or documentation what the desired ratings should be.

add a console report

AFAIK the only outputs we have are json file and html file. It would be nice to just enable it to print a summary to the screen instead of to a file

Might take a go at this some time soon, just want to document it

Support project specific Reek configuration

RubyCritic ships with a built in config.reek file but I believe it would be interesting to support a local .reek file (or an argument on the CLI) and an option on the Ruby API to pass the pathname. What do you folks think about it?

Define a first version of our public API

Originated from #92

Let's discuss! So far I have no opinion. It might make sense to streamline all of our analyzers first though.
Right now they have subtle differences which prevent us from doing so.
I'd suggest to iron out those kinks first and define a first draft.

Drop support for 1.9

In the light of #67 I suggest to drop support for 1.9 completely.
Support for ruby 1.9 has been dropped for quite some while, we should let it die here as well.

From what I can see in order to make this happen we'd need to:

  • remove it from travis. We could also make it an allowed failure but I don't see the point in this specific case
  • major version bump
  • explicitly list it on our README

What do you guys think?

Reek custom configuration

I've created a config.reek file in the root of my Rails project but it doesn't seem to be read by reek when run through rubycritic command.
I've tested with only the reek command and it works well, my configuration is applied.

Is this the normal behavior or am I doing something wrong ?
I saw the issue #21 and it seems this was possible in version 1.1.1 of rubycritic.

My config.reek

UncommunicativeVariableName:
  accept:
    - '_'
    - 'a'
    - 'e'
Version
Ruby 2.1.6
RubyCritic 1.4.0

A new direction for RubyCritic

As many of you probably noticed, this gem hit a halt around half a year ago.
What happened was that I made a few personal choices that left me with little time to dedicate to the project and I also lost some of the will to continue this endeavor.

From the very start I wanted this gem to be all-encompassing and cater to all kinds of developers and all kinds of projects. The problem is that there are way too many opinions and way too many approaches to accomplish similar goals and that can be paralyzing.

I've always hated unresponsive maintainers of OSS and yet I became one. All I can say is that I am truly sorry.

What's done is done though and so I am here to announce the new team that will lead RubyCritic to new heights! Give it up for @Onumis and @troessner. With their experience and your support I am certain that RubyCritic will be in good hands.

Keep on writing beautiful code!

Showing current scan status while scanning files

While going through list of files for analysis, scanning status should be displayed to the end user.
As it seems nothing is happening because no output is shown until end result is generated.

Is this normal?

screen shot 2015-03-23 at 10 18 54 am

Im using ruby singleton class but, i got this error, is this normal?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.