TracksApp/tracks

View on GitHub
app/helpers/date_label_helper.rb

Summary

Maintainability
A
1 hr
Test Coverage

DateLabelHelper::DueDateView#due_text has approx 7 statements
Open

    def due_text
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

A method with Too Many Statements is any method that has a large number of lines.

Too Many Statements warns about any method that has more than 5 statements. Reek's smell detector for Too Many Statements counts +1 for every simple statement in a method and +1 for every statement within a control structure (if, else, case, when, for, while, until, begin, rescue) but it doesn't count the control structure itself.

So the following method would score +6 in Reek's statement-counting algorithm:

def parse(arg, argv, &error)
  if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
    return nil, block, nil                                         # +1
  end
  opt = (val = parse_arg(val, &error))[1]                          # +2
  val = conv_arg(*val)                                             # +3
  if opt and !arg
    argv.shift                                                     # +4
  else
    val[0] = nil                                                   # +5
  end
  val                                                              # +6
end

(You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)

DateLabelHelper::GenericDateView#days_to_sym has approx 7 statements
Open

    def days_to_sym(days)
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

A method with Too Many Statements is any method that has a large number of lines.

Too Many Statements warns about any method that has more than 5 statements. Reek's smell detector for Too Many Statements counts +1 for every simple statement in a method and +1 for every statement within a control structure (if, else, case, when, for, while, until, begin, rescue) but it doesn't count the control structure itself.

So the following method would score +6 in Reek's statement-counting algorithm:

def parse(arg, argv, &error)
  if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
    return nil, block, nil                                         # +1
  end
  opt = (val = parse_arg(val, &error))[1]                          # +2
  val = conv_arg(*val)                                             # +3
  if opt and !arg
    argv.shift                                                     # +4
  else
    val[0] = nil                                                   # +5
  end
  val                                                              # +6
end

(You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)

DateLabelHelper::ShowFromDateView#show_from_text has approx 6 statements
Open

    def show_from_text
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

A method with Too Many Statements is any method that has a large number of lines.

Too Many Statements warns about any method that has more than 5 statements. Reek's smell detector for Too Many Statements counts +1 for every simple statement in a method and +1 for every statement within a control structure (if, else, case, when, for, while, until, begin, rescue) but it doesn't count the control structure itself.

So the following method would score +6 in Reek's statement-counting algorithm:

def parse(arg, argv, &error)
  if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
    return nil, block, nil                                         # +1
  end
  opt = (val = parse_arg(val, &error))[1]                          # +2
  val = conv_arg(*val)                                             # +3
  if opt and !arg
    argv.shift                                                     # +4
  else
    val[0] = nil                                                   # +5
  end
  val                                                              # +6
end

(You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)

DateLabelHelper::ShowFromDateView#show_from_text calls '@days.to_s' 2 times
Open

          t('todos.show_in_days', :days => @days.to_s)
        end
      else
        t('todos.show_in_days', :days => @days.to_s)
Severity: Minor
Found in app/helpers/date_label_helper.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.

DateLabelHelper::ShowFromDateView assumes too much for instance variable '@date'
Open

  class ShowFromDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::DueDateView assumes too much for instance variable '@date'
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::DueDateView assumes too much for instance variable '@days_sym'
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::DueDateView assumes too much for instance variable '@prefs'
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::DueDateView assumes too much for instance variable '@days'
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::ShowFromDateView assumes too much for instance variable '@prefs'
Open

  class ShowFromDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::DueDateView has no descriptive comment
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.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

DateLabelHelper::ShowFromDateView has no descriptive comment
Open

  class ShowFromDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.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

DateLabelHelper::ShowFromDateView assumes too much for instance variable '@days_sym'
Open

  class ShowFromDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::ShowFromDateView#show_from_text calls 't('todos.show_in_days', :days => @days.to_s)' 2 times
Open

          t('todos.show_in_days', :days => @days.to_s)
        end
      else
        t('todos.show_in_days', :days => @days.to_s)
Severity: Minor
Found in app/helpers/date_label_helper.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.

DateLabelHelper::DueDateView assumes too much for instance variable '@due'
Open

  class DueDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

DateLabelHelper::GenericDateView has no descriptive comment
Open

  class GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.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

DateLabelHelper::DueDateView#due_text calls '@days * -1' 2 times
Open

        t('todos.next_actions_due_date.overdue_by', :days => @days * -1)
      when :overdue_by_more_than_one
        t('todos.next_actions_due_date.overdue_by_plural', :days => @days * -1)
Severity: Minor
Found in app/helpers/date_label_helper.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.

DateLabelHelper::DueDateView#due_text calls 't('models.preference.due_in', :days => @days)' 2 times
Open

          t('models.preference.due_in', :days => @days)
        end
      else # should be :more_than_a_week
        t('models.preference.due_in', :days => @days)
Severity: Minor
Found in app/helpers/date_label_helper.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.

DateLabelHelper::ShowFromDateView assumes too much for instance variable '@days'
Open

  class ShowFromDateView < GenericDateView
Severity: Minor
Found in app/helpers/date_label_helper.rb by reek

Classes should not assume that instance variables are set or present outside of the current class definition.

Good:

class Foo
  def initialize
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Good as well:

class Foo
  def foo?
    bar == :foo
  end

  def bar
    @bar ||= :foo
  end
end

Bad:

class Foo
  def go_foo!
    @bar = :foo
  end

  def foo?
    @bar == :foo
  end
end

Example

Running Reek on:

class Dummy
  def test
    @ivar
  end
end

would report:

[1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

Note that this example would trigger this smell warning as well:

class Parent
  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    @omg
  end
end

The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

class Parent
  attr_reader :omg

  def initialize(omg)
    @omg = omg
  end
end

class Child < Parent
  def foo
    omg
  end
end

Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

If you don't want to expose those methods as public API just make them private like this:

class Parent
  def initialize(omg)
    @omg = omg
  end

  private
  attr_reader :omg
end

class Child < Parent
  def foo
    omg
  end
end

Current Support in Reek

An instance variable must:

  • be set in the constructor
  • or be accessed through a method with lazy initialization / memoization.

If not, Instance Variable Assumption will be reported.

Avoid too many return statements within this method.
Open

          return :overdue_by_more_than_one
Severity: Major
Found in app/helpers/date_label_helper.rb - About 30 mins to fix

    Avoid too many return statements within this method.
    Open

              return :more_than_a_week
    Severity: Major
    Found in app/helpers/date_label_helper.rb - About 30 mins to fix

      Avoid too many return statements within this method.
      Open

                return :overdue_by_one
      Severity: Major
      Found in app/helpers/date_label_helper.rb - About 30 mins to fix

        DateLabelHelper::GenericDateView#days_to_sym doesn't depend on instance state (maybe move it to another class?)
        Open

            def days_to_sym(days)
        Severity: Minor
        Found in app/helpers/date_label_helper.rb by reek

        A Utility Function is any instance method that has no dependency on the state of the instance.

        DateLabelHelper::GenericDateView#date_mobile_html_wrapper performs a nil-check
        Open

              return "" if @date.nil?
        Severity: Minor
        Found in app/helpers/date_label_helper.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)

        DateLabelHelper::GenericDateView#days_to_sym performs a nil-check
        Open

              when nil
        Severity: Minor
        Found in app/helpers/date_label_helper.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)

        DateLabelHelper::GenericDateView#days_from_today doesn't depend on instance state (maybe move it to another class?)
        Open

            def days_from_today(date)
        Severity: Minor
        Found in app/helpers/date_label_helper.rb by reek

        A Utility Function is any instance method that has no dependency on the state of the instance.

        DateLabelHelper::GenericDateView#date_html_wrapper performs a nil-check
        Open

              return "" if @date.nil?
        Severity: Minor
        Found in app/helpers/date_label_helper.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)

        DateLabelHelper::GenericDateView#initialize performs a nil-check
        Open

              @days = date.nil? ? nil : days_from_today(date)
        Severity: Minor
        Found in app/helpers/date_label_helper.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)

        TODO found
        Open

                  # TODO: internationalize strftime here
        Severity: Minor
        Found in app/helpers/date_label_helper.rb by fixme

        } at 56, 12 is not aligned with content_tag(:a, { :title => @prefs.format_date(@date) }) { at 54, 13 or return content_tag(:a, { :title => @prefs.format_date(@date) }) { at 54, 6.
        Open

                    }
        Severity: Minor
        Found in app/helpers/date_label_helper.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

        Redundant return detected.
        Open

                return :today
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant curly braces around a hash parameter.
        Open

                      content_tag(:span, { :class => get_color }) { yield }
        Severity: Minor
        Found in app/helpers/date_label_helper.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})

        Redundant return detected.
        Open

                return :tomorrow
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant return detected.
        Open

                return :this_week
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant return detected.
        Open

              return content_tag(:span, { :class => get_color }) { yield }
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant return detected.
        Open

                  return :overdue_by_more_than_one
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant return detected.
        Open

                  return :more_than_a_week
        Severity: Minor
        Found in app/helpers/date_label_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.

        Do not prefix reader method names with get_.
        Open

            def get_color
        Severity: Minor
        Found in app/helpers/date_label_helper.rb by rubocop

        This cop makes sure that accessor methods are named properly.

        Example:

        # bad
        def set_attribute(value)
        end
        
        # good
        def attribute=(value)
        end
        
        # bad
        def get_attribute
        end
        
        # good
        def attribute
        end

        Redundant curly braces around a hash parameter.
        Open

              return content_tag(:a, { :title => @prefs.format_date(@date) }) {
        Severity: Minor
        Found in app/helpers/date_label_helper.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})

        Missing magic comment # frozen_string_literal: true.
        Open

        module DateLabelHelper
        Severity: Minor
        Found in app/helpers/date_label_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 :overdue_by_one
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant return detected.
        Open

              return content_tag(:a, { :title => @prefs.format_date(@date) }) {
        Severity: Minor
        Found in app/helpers/date_label_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.

        Avoid using {...} for multi-line blocks.
        Open

              return content_tag(:a, { :title => @prefs.format_date(@date) }) {
        Severity: Minor
        Found in app/helpers/date_label_helper.rb by rubocop

        Check for uses of braces or do/end around single line or multi-line blocks.

        Example: EnforcedStyle: linecountbased (default)

        # bad - single line block
        items.each do |item| item / 5 end
        
        # good - single line block
        items.each { |item| item / 5 }
        
        # bad - multi-line block
        things.map { |thing|
          something = thing.some_method
          process(something)
        }
        
        # good - multi-line block
        things.map do |thing|
          something = thing.some_method
          process(something)
        end

        Example: EnforcedStyle: semantic

        # Prefer `do...end` over `{...}` for procedural blocks.
        
        # return value is used/assigned
        # bad
        foo = map do |x|
          x
        end
        puts (map do |x|
          x
        end)
        
        # return value is not used out of scope
        # good
        map do |x|
          x
        end
        
        # Prefer `{...}` over `do...end` for functional blocks.
        
        # return value is not used out of scope
        # bad
        each { |x|
          x
        }
        
        # return value is used/assigned
        # good
        foo = map { |x|
          x
        }
        map { |x|
          x
        }.inspect

        Example: EnforcedStyle: bracesforchaining

        # bad
        words.each do |word|
          word.flip.flop
        end.join("-")
        
        # good
        words.each { |word|
          word.flip.flop
        }.join("-")

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

                if days == -1
        Severity: Minor
        Found in app/helpers/date_label_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

        Redundant return detected.
        Open

                return nil
        Severity: Minor
        Found in app/helpers/date_label_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.

        Redundant curly braces around a hash parameter.
        Open

              return content_tag(:span, { :class => get_color }) { yield }
        Severity: Minor
        Found in app/helpers/date_label_helper.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})

        There are no issues that match your filters.

        Category
        Status