elitmus/omniauth-elitmus

View on GitHub
lib/omniauth/strategies/elitmus.rb

Summary

Maintainability
A
0 mins
Test Coverage

OmniAuth::Strategies::Elitmus#prune! refers to 'value' more than self (maybe move it to another class?)
Open

                    prune!(value) if value.is_a?(Hash)
                    value.nil? || (value.respond_to?(:empty?) && value.empty?)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

Feature Envy occurs when a code fragment references another object more often than it references itself, or when several clients do the same series of manipulations on a particular type of object.

Feature Envy reduces the code's ability to communicate intent: code that "belongs" on one class but which is located in another can be hard to find, and may upset the "System of Names" in the host class.

Feature Envy also affects the design's flexibility: A code fragment that is in the wrong class creates couplings that may not be natural within the application's domain, and creates a loss of cohesion in the unwilling host class.

Feature Envy often arises because it must manipulate other objects (usually its arguments) to get them into a useful form, and one force preventing them (the arguments) doing this themselves is that the common knowledge lives outside the arguments, or the arguments are of too basic a type to justify extending that type. Therefore there must be something which 'knows' about the contents or purposes of the arguments. That thing would have to be more than just a basic type, because the basic types are either containers which don't know about their contents, or they are single objects which can't capture their relationship with their fellows of the same type. So, this thing with the extra knowledge should be reified into a class, and the utility method will most likely belong there.

Example

Running Reek on:

class Warehouse
  def sale_price(item)
    (item.price - item.rebate) * @vat
  end
end

would report:

Warehouse#total_price refers to item more than self (FeatureEnvy)

since this:

(item.price - item.rebate)

belongs to the Item class, not the Warehouse.

OmniAuth::Strategies::Elitmus#authorize_params refers to 'params_hash' more than self (maybe move it to another class?)
Open

                    if params_hash.has_key?['scope']
                        params[:scope] = params_hash['scope']
                    else
                        params[:scope] = DEFAULT_SCOPE
                    end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

Feature Envy occurs when a code fragment references another object more often than it references itself, or when several clients do the same series of manipulations on a particular type of object.

Feature Envy reduces the code's ability to communicate intent: code that "belongs" on one class but which is located in another can be hard to find, and may upset the "System of Names" in the host class.

Feature Envy also affects the design's flexibility: A code fragment that is in the wrong class creates couplings that may not be natural within the application's domain, and creates a loss of cohesion in the unwilling host class.

Feature Envy often arises because it must manipulate other objects (usually its arguments) to get them into a useful form, and one force preventing them (the arguments) doing this themselves is that the common knowledge lives outside the arguments, or the arguments are of too basic a type to justify extending that type. Therefore there must be something which 'knows' about the contents or purposes of the arguments. That thing would have to be more than just a basic type, because the basic types are either containers which don't know about their contents, or they are single objects which can't capture their relationship with their fellows of the same type. So, this thing with the extra knowledge should be reified into a class, and the utility method will most likely belong there.

Example

Running Reek on:

class Warehouse
  def sale_price(item)
    (item.price - item.rebate) * @vat
  end
end

would report:

Warehouse#total_price refers to item more than self (FeatureEnvy)

since this:

(item.price - item.rebate)

belongs to the Item class, not the Warehouse.

OmniAuth::Strategies::Elitmus#prune! manually dispatches method call
Open

                    value.nil? || (value.respond_to?(:empty?) && value.empty?)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

Reek reports a Manual Dispatch smell if it finds source code that manually checks whether an object responds to a method before that method is called. Manual dispatch is a type of Simulated Polymorphism which leads to code that is harder to reason about, debug, and refactor.

Example

class MyManualDispatcher
  attr_reader :foo

  def initialize(foo)
    @foo = foo
  end

  def call
    foo.bar if foo.respond_to?(:bar)
  end
end

Reek would emit the following warning:

test.rb -- 1 warning:
  [9]: MyManualDispatcher manually dispatches method call (ManualDispatch)

OmniAuth::Strategies::Elitmus#authorize_params calls 'params_hash.has_key?' 2 times
Open

                    if params_hash.has_key?['scope']
                        params[:scope] = params_hash['scope']
                    else
                        params[:scope] = DEFAULT_SCOPE
                    end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

Reek implements a check for Duplicate Method Call.

Example

Here's a very much simplified and contrived example. The following method will report a warning:

def double_thing()
  @other.thing + @other.thing
end

One quick approach to silence Reek would be to refactor the code thus:

def double_thing()
  thing = @other.thing
  thing + thing
end

A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

class Other
  def double_thing()
    thing + thing
  end
end

The approach you take will depend on balancing other factors in your code.

OmniAuth::Strategies::Elitmus has no descriptive comment
Open

        class Elitmus < OmniAuth::Strategies::OAuth2
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

Classes and modules are the units of reuse and release. It is therefore considered good practice to annotate every class and module with a brief comment outlining its responsibilities.

Example

Given

class Dummy
  # Do things...
end

Reek would emit the following warning:

test.rb -- 1 warning:
  [1]:Dummy has no descriptive comment (IrresponsibleModule)

Fixing this is simple - just an explaining comment:

# The Dummy class is responsible for ...
class Dummy
  # Do things...
end

OmniAuth::Strategies::Elitmus#prune! performs a nil-check
Open

                    value.nil? || (value.respond_to?(:empty?) && value.empty?)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

A NilCheck is a type check. Failures of NilCheck violate the "tell, don't ask" principle.

Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.

Example

Given

class Klass
  def nil_checker(argument)
    if argument.nil?
      puts "argument isn't nil!"
    end
  end
end

Reek would emit the following warning:

test.rb -- 1 warning:
  [3]:Klass#nil_checker performs a nil-check. (NilCheck)

OmniAuth::Strategies::Elitmus has missing safe method 'prune!'
Open

            def prune!(hash)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by reek

A candidate method for the Missing Safe Method smell are methods whose names end with an exclamation mark.

An exclamation mark in method names means (the explanation below is taken from here ):

The ! in method names that end with ! means, “This method is dangerous”—or, more precisely, this method is the “dangerous” version of an otherwise equivalent method, with the same name minus the !. “Danger” is relative; the ! doesn’t mean anything at all unless the method name it’s in corresponds to a similar but bang-less method name. So, for example, gsub! is the dangerous version of gsub. exit! is the dangerous version of exit. flatten! is the dangerous version of flatten. And so forth.

Such a method is called Missing Safe Method if and only if her non-bang version does not exist and this method is reported as a smell.

Example

Given

class C
  def foo; end
  def foo!; end
  def bar!; end
end

Reek would report bar! as Missing Safe Method smell but not foo!.

Reek reports this smell only in a class context, not in a module context in order to allow perfectly legit code like this:

class Parent
  def foo; end
end

module Dangerous
  def foo!; end
end

class Son < Parent
  include Dangerous
end

class Daughter < Parent
end

In this example, Reek would not report the Missing Safe Method smell for the method foo of the Dangerous module.

Use 2 (not 1) spaces for indentation.
Open

                @raw_info ||= access_token.get('/api/v1/me').parsed
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

                hash = {}
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    #         end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Line is too long. [88/80]
Open

                    params[:auth_type] = params_hash['auth_type']  if params_hash.has_key?['auth_type']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Redundant curly braces around a hash parameter.
Open

                prune!({
                    'email' => raw_info['email'],
                    'name' => raw_info['name']
                 })
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

Example: EnforcedStyle: braces

# The `braces` style enforces braces around all method
# parameters that are hashes.

# bad
some_method(x, y, a: 1, b: 2)

# good
some_method(x, y, {a: 1, b: 2})

Example: EnforcedStyle: no_braces (default)

# The `no_braces` style checks that the last parameter doesn't
# have braces around it.

# bad
some_method(x, y, {a: 1, b: 2})

# good
some_method(x, y, a: 1, b: 2)

Example: EnforcedStyle: context_dependent

# The `context_dependent` style checks that the last parameter
# doesn't have braces around it, but requires braces if the
# second to last parameter is also a hash literal.

# bad
some_method(x, y, {a: 1, b: 2})
some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)

# good
some_method(x, y, a: 1, b: 2)
some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

Use the return of the conditional for variable assignment and comparison.
Open

                    if params_hash.has_key?['scope']
                        params[:scope] = params_hash['scope']
                    else
                        params[:scope] = DEFAULT_SCOPE
                    end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use 2 spaces for indentation in a hash, relative to the start of the line where the left curly brace is.
Open

                :site => "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

Example: EnforcedStyle: specialinsideparentheses (default)

# The `special_inside_parentheses` style enforces that the first key
# in a hash literal where the opening brace and the first key are on
# separate lines is indented one step (two spaces) more than the
# position inside the opening parentheses.

# bad
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
                     })

# good
special_inside_parentheses
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                     })

Example: EnforcedStyle: consistent

# The `consistent` style enforces that the first key in a hash
# literal where the opening brace and the first key are on
# seprate lines is indented the same as a hash literal which is not
# defined inside a method call.

# bad
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                      })

# good
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
})

Example: EnforcedStyle: align_braces

# The `align_brackets` style enforces that the opening and closing
# braces are indented to the same position.

# bad
and_now_for_something = {
                          completely: :different
}

# good
and_now_for_something = {
                          completely: :different
                        }

Tab detected.
Open

    module Strategies
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    # end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    # params[:scope] ||= DEFAULT_SCOPE
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                        params[:scope] = DEFAULT_SCOPE
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    prune!(value) if value.is_a?(Hash)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use the new Ruby 1.9 hash syntax.
Open

                :site => "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks hash literal syntax.

It can enforce either the use of the class hash rocket syntax or the use of the newer Ruby 1.9 syntax (when applicable).

A separate offense is registered for each problematic pair.

The supported styles are:

  • ruby19 - forces use of the 1.9 syntax (e.g. {a: 1}) when hashes have all symbols for keys
  • hash_rockets - forces use of hash rockets for all hashes
  • nomixedkeys - simply checks for hashes with mixed syntaxes
  • ruby19nomixed_keys - forces use of ruby 1.9 syntax and forbids mixed syntax hashes

Example: EnforcedStyle: ruby19 (default)

# bad
{:a => 2}
{b: 1, :c => 2}

# good
{a: 2, b: 1}
{:c => 2, 'd' => 2} # acceptable since 'd' isn't a symbol
{d: 1, 'e' => 2} # technically not forbidden

Example: EnforcedStyle: hash_rockets

# bad
{a: 1, b: 2}
{c: 1, 'd' => 5}

# good
{:a => 1, :b => 2}

Example: EnforcedStyle: nomixedkeys

# bad
{:a => 1, b: 2}
{c: 1, 'd' => 2}

# good
{:a => 1, :b => 2}
{c: 1, d: 2}

Example: EnforcedStyle: ruby19nomixed_keys

# bad
{:a => 1, :b => 2}
{c: 2, 'd' => 3} # should just use hash rockets

# good
{a: 1, b: 2}
{:c => 3, 'd' => 4}

Tab detected.
Open

            #OATUH2_PROVIDER_URL = "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                prune!({
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    # %w[scope auth_type].each do |val|
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    else
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

    module Strategies
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Indent the right brace the same as the first position after the preceding left parenthesis.
Open

                 })
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

Example: EnforcedStyle: specialinsideparentheses (default)

# The `special_inside_parentheses` style enforces that the first key
# in a hash literal where the opening brace and the first key are on
# separate lines is indented one step (two spaces) more than the
# position inside the opening parentheses.

# bad
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
                     })

# good
special_inside_parentheses
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                     })

Example: EnforcedStyle: consistent

# The `consistent` style enforces that the first key in a hash
# literal where the opening brace and the first key are on
# seprate lines is indented the same as a hash literal which is not
# defined inside a method call.

# bad
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                      })

# good
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
})

Example: EnforcedStyle: align_braces

# The `align_brackets` style enforces that the opening and closing
# braces are indented to the same position.

# bad
and_now_for_something = {
                          completely: :different
}

# good
and_now_for_something = {
                          completely: :different
                        }

Tab detected.
Open

            def raw_info
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                        params[:scope] = params_hash['scope']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            def prune!(hash)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use %i or %I for an array of symbols.
Open

            option :authorize_options, [:scope, :auth_type]
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop can check for array literals made up of symbols that are not using the %i() syntax.

Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

Example: EnforcedStyle: percent (default)

# good
%i[foo bar baz]

# bad
[:foo, :bar, :baz]

Example: EnforcedStyle: brackets

# good
[:foo, :bar, :baz]

# bad
%i[foo bar baz]

Inconsistent indentation detected.
Open

                prune! hash
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for inconsistent indentation.

Example:

class A
  def test
    puts 'hello'
     puts 'world'
  end
end

Tab detected.
Open

            uid {  raw_info['id']  }
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                 })
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                  hash['raw_info'] = raw_info unless skip_info?
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    # Reek has a problem with the below code. Trying to rewrite the same
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

                :site => "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Unnecessary spacing detected.
Open

                    params[:auth_type] = params_hash['auth_type']  if params_hash.has_key?['auth_type']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks for extra/unnecessary whitespace.

Example:

# good if AllowForAlignment is true
name      = "RuboCop"
# Some comment and an empty line

website  += "/bbatsov/rubocop" unless cond
puts        "rubocop"          if     debug

# bad for any configuration
set_app("RuboCop")
website  = "https://github.com/bbatsov/rubocop"

Use 2 (not 1) spaces for indentation.
Open

                        params[:scope] = params_hash['scope']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Use 2 spaces for indentation in a hash, relative to the first position after the preceding left parenthesis.
Open

                    'email' => raw_info['email'],
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

Example: EnforcedStyle: specialinsideparentheses (default)

# The `special_inside_parentheses` style enforces that the first key
# in a hash literal where the opening brace and the first key are on
# separate lines is indented one step (two spaces) more than the
# position inside the opening parentheses.

# bad
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
                     })

# good
special_inside_parentheses
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                     })

Example: EnforcedStyle: consistent

# The `consistent` style enforces that the first key in a hash
# literal where the opening brace and the first key are on
# seprate lines is indented the same as a hash literal which is not
# defined inside a method call.

# bad
hash = {
  key: :value
}
but_in_a_method_call({
                       its_like: :this
                      })

# good
hash = {
  key: :value
}
and_in_a_method_call({
  no: :difference
})

Example: EnforcedStyle: align_braces

# The `align_brackets` style enforces that the opening and closing
# braces are indented to the same position.

# bad
and_now_for_something = {
                          completely: :different
}

# good
and_now_for_something = {
                          completely: :different
                        }

Tab detected.
Open

    end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Missing space after #.
Open

            #OATUH2_PROVIDER_URL = "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

Example:

# bad
#Some comment

# good
# Some comment

Tab detected.
Open

                prune! hash
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Missing top-level class documentation comment.
Open

        class Elitmus < OmniAuth::Strategies::OAuth2
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, or constant definitions.

The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.

Example:

# bad
class Person
  # ...
end

# good
# Description/Explanation of Person class
class Person
  # ...
end

Extra empty line detected at block body beginning.
Open


                    # Reek has a problem with the below code. Trying to rewrite the same
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks if empty lines around the bodies of blocks match the configuration.

Example: EnforcedStyle: empty_lines

# good

foo do |bar|

  # ...

end

Example: EnforcedStyle: noemptylines (default)

# good

foo do |bar|
  # ...
end

Use 2 (not 1) spaces for indentation.
Open

                    params_hash = request.params
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Use 2 (not -5) spaces for indentation.
Open

                    prune!(value) if value.is_a?(Hash)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

        class Elitmus < OmniAuth::Strategies::OAuth2
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            # class NoAuthorizationCodeError < StandardError; en
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            option :client_options, {
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    'name' => raw_info['name']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                @raw_info ||= access_token.get('/api/v1/me').parsed
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    #
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    params_hash = request.params
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

             end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Inconsistent indentation detected.
Open

                  hash['raw_info'] = raw_info unless skip_info?
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for inconsistent indentation.

Example:

class A
  def test
    puts 'hello'
     puts 'world'
  end
end

Use 2 (not 1) spaces for indentation.
Open

                hash = {}
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

            option :authorize_options, [:scope, :auth_type]
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            extra do
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                super.tap do |params|
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    params[:auth_type] = params_hash['auth_type']  if params_hash.has_key?['auth_type']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                options[:callback_url] || super
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

end at 75, 7 is not aligned with def at 70, 3.
Open

             end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks whether the end keywords of method definitions are aligned properly.

Two modes are supported through the EnforcedStyleAlignWith configuration parameter. If it's set to start_of_line (which is the default), the end shall be aligned with the start of the line where the def keyword is. If it's set to def, the end shall be aligned with the def keyword.

Example: EnforcedStyleAlignWith: startofline (default)

# bad

private def foo
            end

# good

private def foo
end

Example: EnforcedStyleAlignWith: def

# bad

private def foo
            end

# good

private def foo
        end

Redundant curly braces around a hash parameter.
Open

            option :client_options, {
                :site => "https://www.elitmus.com"
            }
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

Example: EnforcedStyle: braces

# The `braces` style enforces braces around all method
# parameters that are hashes.

# bad
some_method(x, y, a: 1, b: 2)

# good
some_method(x, y, {a: 1, b: 2})

Example: EnforcedStyle: no_braces (default)

# The `no_braces` style checks that the last parameter doesn't
# have braces around it.

# bad
some_method(x, y, {a: 1, b: 2})

# good
some_method(x, y, a: 1, b: 2)

Example: EnforcedStyle: context_dependent

# The `context_dependent` style checks that the last parameter
# doesn't have braces around it, but requires braces if the
# second to last parameter is also a hash literal.

# bad
some_method(x, y, {a: 1, b: 2})
some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)

# good
some_method(x, y, a: 1, b: 2)
some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

Tab detected.
Open

                    'email' => raw_info['email'],
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            def authorize_params
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    #         if request.params[val]
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

        end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

                options[:callback_url] || super
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

                    #             params[val.to_sym] = request.params[val]
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    value.nil? || (value.respond_to?(:empty?) && value.empty?)
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            option :name, :elitmus
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                :site => "https://www.elitmus.com"
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            }
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            info do
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

                super.tap do |params|
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Use 2 (not 1) spaces for indentation.
Open

                hash.delete_if do |_, value|
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

end at 74, 10 is not aligned with hash.delete_if do |_, value| at 71, 4.
Open

                end
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks whether the end keywords are aligned properly for do end blocks.

Three modes are supported through the EnforcedStyleAlignWith configuration parameter:

start_of_block : the end shall be aligned with the start of the line where the do appeared.

start_of_line : the end shall be aligned with the start of the line where the expression started.

either (which is the default) : the end is allowed to be in either location. The autofixer will default to start_of_line.

Example: EnforcedStyleAlignWith: either (default)

# bad

foo.bar
   .each do
     baz
       end

# good

variable = lambda do |i|
  i
end

Example: EnforcedStyleAlignWith: startofblock

# bad

foo.bar
   .each do
     baz
       end

# good

foo.bar
  .each do
     baz
   end

Example: EnforcedStyleAlignWith: startofline

# bad

foo.bar
   .each do
     baz
       end

# good

foo.bar
  .each do
     baz
end

Freeze mutable objects assigned to constants.
Open

            DEFAULT_SCOPE = 'public'
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

Example:

# bad
CONST = [1, 2, 3]

# good
CONST = [1, 2, 3].freeze

Use 2 (not 1) spaces for indentation.
Open

        class Elitmus < OmniAuth::Strategies::OAuth2
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Use 2 (not 1) spaces for indentation.
Open

            DEFAULT_SCOPE = 'public'
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Use 2 (not 1) spaces for indentation.
Open

                prune!({
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

            DEFAULT_SCOPE = 'public'
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    if params_hash.has_key?['scope']
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                    #  in a different way to make reek happy
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

            def callback_url
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Tab detected.
Open

                hash.delete_if do |_, value|
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

Unnecessary spacing detected.
Open

            uid {  raw_info['id']  }
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cop checks for extra/unnecessary whitespace.

Example:

# good if AllowForAlignment is true
name      = "RuboCop"
# Some comment and an empty line

website  += "/bbatsov/rubocop" unless cond
puts        "rubocop"          if     debug

# bad for any configuration
set_app("RuboCop")
website  = "https://github.com/bbatsov/rubocop"

Use 2 (not 1) spaces for indentation.
Open

                        params[:scope] = DEFAULT_SCOPE
Severity: Minor
Found in lib/omniauth/strategies/elitmus.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

There are no issues that match your filters.

Category
Status