0.0
No commit activity in last 3 years
No release in over 3 years
Fasterer extension which allows to scan github repo.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
>= 0
~> 10.0
>= 0
>= 0

Runtime

= 0.1.11
 Project Readme

Code Climate Test Coverage

fasterer-github

This is a fasterer extension which allows to scan GitHub repo using GitHub API.

Fasterer-github will analyze your code and suggest faster ruby idioms. Read more about ruby idoms here

Installation

Add this line to your application's Gemfile:

gem 'fasterer-github'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fasterer-github

Request Rate Limit - Github Api

Github api rate limit for unauthenticated requests is 60 request per hour. Fortunately, authenticated requests get a higher rate limit, which allows to make up to 5,000 requests per hour.

Configuration

You can use configure block to provide access_token:

Fasterer::Github.configure do |config|
  config.access_token = 'YOUR_GITHUB_ACCESS_TOKEN'
end

Instead of access_token, you can also add client_id and client_secret:

Fasterer::Github.configure do |config|
  config.client_id = 'YOUR_GITHUB_CLIENT_ID'
  config.client_secret = 'YOUR_GITHUB_CLIENT_SECRET'
end

Additional configuration can be done using .fasterer.yml file, which has to be placed in the root folder of your project. Possible options:

  • turn off speed suggestions
  • blacklist files or complete folder paths
speedups:
  parallel_assignment: false
  rescue_vs_respond_to: true
  module_eval: true
  shuffle_first_vs_sample: true
  for_loop_vs_each: true
  each_with_index_vs_while: false
  map_flatten_vs_flat_map: true
  reverse_each_vs_reverse_each: true
  select_first_vs_detect: true
  sort_vs_sort_by: true
  fetch_with_argument_vs_block: true
  keys_each_vs_each_key: true
  hash_merge_bang_vs_hash_brackets: true
  block_vs_symbol_to_proc: true
  proc_call_vs_yield: true
  gsub_vs_tr: true
  select_last_vs_reverse_detect: true
  getter_vs_attr_reader: true
  setter_vs_attr_writer: true

exclude_paths:
  - 'vendor/'
  - 'db/schema.rb'

Usage

To scan whole repo, run:

Fasterer::Github.scan('owner', 'repo')

Or scan specific file:

Fasterer::Github.scan('owner', 'repo', 'lib/fasterer-github.rb')

Example output

$ Fasterer::Github.scan('owner', 'repo', 'path/to/file.rb')

{
  :repo_owner => 'owner',
  :repo_name => 'repo',
  :fasterer_offences => {
    :hash_merge_bang_vs_hash_brackets => [
      {
        :path => "https://api.github.com/repos/owner/repo/contents/path/to/file.rb?ref=master",
        :lines => [10, 17, 19]
      }
    ]
  },
  :errors => [],
  :api_errors => []
}

Example output when parser encounters some error and api returns error code:

{
  :repo_owner => 'owner',
  :repo_name => 'repo',
  :fasterer_offences => {},
  :errors => [
    { path: 'path/to/file.rb' }
  ],
  :api_errors => [
    { code: 404, msg_body: 'some message from github api', path: 'path/to/file.rb' }
  ]
}

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/caspg/fasterer-github.

License

The gem is available as open source under the terms of the MIT License.