ReadyResponder/ReadyResponder

View on GitHub
app/helpers/application_helper.rb

Summary

Maintainability
A
1 hr
Test Coverage
A
96%

Method add_class_and_confirmation has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
Open

  def add_class_and_confirmation(default_class, default_delete_class, default_confirm_delete_msg, html_options)
    if html_options[:method] == :delete
      html_options[:class] ||= default_delete_class
      html_options[:data] ||= { confirm: default_confirm_delete_msg }
      html_options[:data][:confirm] ||= default_confirm_delete_msg
Severity: Minor
Found in app/helpers/application_helper.rb - About 25 mins to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Use delete instead of gsub.
Open

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop identifies places where gsub can be replaced by tr or delete.

Example:

# bad
'abc'.gsub('b', 'd')
'abc'.gsub('a', '')
'abc'.gsub(/a/, 'd')
'abc'.gsub!('a', 'd')

# good
'abc'.gsub(/.*/, 'a')
'abc'.gsub(/a+/, 'd')
'abc'.tr('b', 'd')
'a b c'.delete(' ')

Similar blocks of code found in 3 locations. Consider refactoring.
Open

  def independent_button_link(name = nil, options = nil, html_options = nil, &block)
    default_class =              'btn btn-md btn-primary'
    default_delete_class =       'btn btn-md btn-danger'
    default_confirm_delete_msg = 'Are you sure?'
    html_options ||= {}
Severity: Minor
Found in app/helpers/application_helper.rb and 2 other locations - About 25 mins to fix
app/helpers/application_helper.rb on lines 35..41
app/helpers/application_helper.rb on lines 54..60

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 29.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 3 locations. Consider refactoring.
Open

  def table_button_link(name = nil, options = nil, html_options = nil, &block)
    default_class =              'btn btn-xs btn-primary'
    default_delete_class =       'btn btn-xs btn-danger'
    default_confirm_delete_msg = 'Are you sure?'
    html_options ||= {}
Severity: Minor
Found in app/helpers/application_helper.rb and 2 other locations - About 25 mins to fix
app/helpers/application_helper.rb on lines 35..41
app/helpers/application_helper.rb on lines 73..79

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 29.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 3 locations. Consider refactoring.
Open

  def sidebar_button_link(name = nil, options = nil, html_options = nil, &block)
    default_class =              'btn btn-block btn-primary'
    default_delete_class =       'btn btn-block btn-danger'
    default_confirm_delete_msg = 'Are you sure?'
    html_options ||= {}
Severity: Minor
Found in app/helpers/application_helper.rb and 2 other locations - About 25 mins to fix
app/helpers/application_helper.rb on lines 54..60
app/helpers/application_helper.rb on lines 73..79

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 29.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Inconsistent indentation detected.
Open

    def success_or_warning_label_class(str, success_str)
      if str == success_str
        return 'label label-success'
      else
        return 'label label-warning'
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cops checks for inconsistent indentation.

Example:

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

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

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.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"

Line is too long. [81/80]
Open

  # Uses btn-block (which spans the width of the parent element) for the sidebar.
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Redundant return detected.
Open

        return 'label label-success'
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

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

    datetime.strftime("%Y-%m-%d %H:%M") if datetime
Severity: Minor
Found in app/helpers/application_helper.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"

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

    date.strftime("%Y-%m-%d") if date
Severity: Minor
Found in app/helpers/application_helper.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"

Line is too long. [102/80]
Open

  # <%= table_button_link 'Edit Person', edit_person_path(@person), class: 'btn btn-xs btn-warning' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [86/80]
Open

  # This is a general helper to provide a simple success class label when appropriate.
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

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

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.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"

Surrounding space missing in default value assignment.
Open

  def nav_link(link_text, link_path, http_method=nil)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [90/80]
Open

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Keep a blank line before and after private.
Open

  private
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Access modifiers should be surrounded by blank lines.

Example:

# bad
class Foo
  def bar; end
  private
  def baz; end
end

# good
class Foo
  def bar; end

  private

  def baz; end
end

Line is too long. [110/80]
Open

  # <%= independent_button_link 'Destroy Person', @person, method: :delete, class: 'btn btn-md btn-success' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [108/80]
Open

  # <%= independent_button_link 'Edit Person', edit_person_path(@person), class: 'btn btn-md btn-warning' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [84/80]
Open

    content_tag(:span, str, class: success_or_warning_label_class(str, success_str))
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Space inside } missing.
Open

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

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

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

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

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

Line is too long. [109/80]
Open

    add_class_and_confirmation(default_class, default_delete_class, default_confirm_delete_msg, html_options)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression.
Open

      if str == success_str
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression

Example:

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something
  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

Use safe navigation (&.) instead of checking if an object exists before calling the method.
Open

    date.strftime("%Y-%m-%d") if date
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop transforms usages of a method call safeguarded by a non nil check for the variable whose method is being called to safe navigation (&.).

Configuration option: ConvertCodeThatCanStartToReturnNil The default for this is false. When configured to true, this will check for code in the format !foo.nil? && foo.bar. As it is written, the return of this code is limited to false and whatever the return of the method is. If this is converted to safe navigation, foo&.bar can start returning nil as well as what the method returns.

Example:

# bad
foo.bar if foo
foo.bar(param1, param2) if foo
foo.bar { |e| e.something } if foo
foo.bar(param) { |e| e.something } if foo

foo.bar if !foo.nil?
foo.bar unless !foo
foo.bar unless foo.nil?

foo && foo.bar
foo && foo.bar(param1, param2)
foo && foo.bar { |e| e.something }
foo && foo.bar(param) { |e| e.something }

# good
foo&.bar
foo&.bar(param1, param2)
foo&.bar { |e| e.something }
foo&.bar(param) { |e| e.something }

foo.nil? || foo.bar
!foo || foo.bar

# Methods that `nil` will `respond_to?` should not be converted to
# use safe navigation
foo.to_i if foo

Line is too long. [109/80]
Open

  # <%= sidebar_button_link 'Destroy Person', @person, method: :delete, class: 'btn btn-block btn-success' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Space inside { missing.
Open

    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

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

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

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

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

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

      render(association.to_s.singularize + "_fields", f: builder)
Severity: Minor
Found in app/helpers/application_helper.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"

Line is too long. [84/80]
Open

  def independent_button_link(name = nil, options = nil, html_options = nil, &block)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [82/80]
Open

  # This is for providing a date for a form in an order that Rails can understand.
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Redundant return detected.
Open

        return 'label label-warning'
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

Extra empty line detected at module body end.
Open


end
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

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

Example: EnforcedStyle: empty_lines

# good

module Foo

  def bar
    # ...
  end

end

Example: EnforcedStyle: emptylinesexcept_namespace

# good

module Foo
  module Bar

    # ...

  end
end

Example: EnforcedStyle: emptylinesspecial

# good
module Foo

  def bar; end

end

Example: EnforcedStyle: noemptylines (default)

# good

module Foo
  def bar
    # ...
  end
end

Line is too long. [107/80]
Open

  # <%= sidebar_button_link 'Edit Person', edit_person_path(@person), class: 'btn btn-block btn-warning' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [97/80]
Open

  # Returns a 'data-order="value"' string to be used in a <td> tag, which can be used for sorting
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Missing top-level module documentation comment.
Open

module ApplicationHelper
Severity: Minor
Found in app/helpers/application_helper.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

Line is too long. [111/80]
Open

  def add_class_and_confirmation(default_class, default_delete_class, default_confirm_delete_msg, html_options)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [109/80]
Open

    add_class_and_confirmation(default_class, default_delete_class, default_confirm_delete_msg, html_options)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [104/80]
Open

  # <%= table_button_link 'Destroy Person', @person, method: :delete, class: 'btn btn-xs btn-success' %>
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Line is too long. [109/80]
Open

    add_class_and_confirmation(default_class, default_delete_class, default_confirm_delete_msg, html_options)
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

Missing magic comment # frozen_string_literal: true.
Open

module ApplicationHelper
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop is designed to help upgrade to Ruby 3.0. It will add the comment # frozen_string_literal: true to the top of files to enable frozen string literals. Frozen string literals may be default in Ruby 3.0. The comment will be added below a shebang and encoding comment. The frozen string literal comment is only valid in Ruby 2.3+.

Example: EnforcedStyle: when_needed (default)

# The `when_needed` style will add the frozen string literal comment
# to files only when the `TargetRubyVersion` is set to 2.3+.
# bad
module Foo
  # ...
end

# good
# frozen_string_literal: true

module Foo
  # ...
end

Example: EnforcedStyle: always

# The `always` style will always add the frozen string literal comment
# to a file, regardless of the Ruby version or if `freeze` or `<<` are
# called on a string literal.
# bad
module Bar
  # ...
end

# good
# frozen_string_literal: true

module Bar
  # ...
end

Example: EnforcedStyle: never

# The `never` will enforce that the frozen string literal comment does
# not exist in a file.
# bad
# frozen_string_literal: true

module Baz
  # ...
end

# good
module Baz
  # ...
end

Redundant return detected.
Open

    return "data-order=\"#{value}\""
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

Use safe navigation (&.) instead of checking if an object exists before calling the method.
Open

    datetime.strftime("%Y-%m-%d %H:%M") if datetime
Severity: Minor
Found in app/helpers/application_helper.rb by rubocop

This cop transforms usages of a method call safeguarded by a non nil check for the variable whose method is being called to safe navigation (&.).

Configuration option: ConvertCodeThatCanStartToReturnNil The default for this is false. When configured to true, this will check for code in the format !foo.nil? && foo.bar. As it is written, the return of this code is limited to false and whatever the return of the method is. If this is converted to safe navigation, foo&.bar can start returning nil as well as what the method returns.

Example:

# bad
foo.bar if foo
foo.bar(param1, param2) if foo
foo.bar { |e| e.something } if foo
foo.bar(param) { |e| e.something } if foo

foo.bar if !foo.nil?
foo.bar unless !foo
foo.bar unless foo.nil?

foo && foo.bar
foo && foo.bar(param1, param2)
foo && foo.bar { |e| e.something }
foo && foo.bar(param) { |e| e.something }

# good
foo&.bar
foo&.bar(param1, param2)
foo&.bar { |e| e.something }
foo&.bar(param) { |e| e.something }

foo.nil? || foo.bar
!foo || foo.bar

# Methods that `nil` will `respond_to?` should not be converted to
# use safe navigation
foo.to_i if foo

There are no issues that match your filters.

Category
Status