TracksApp/tracks

View on GitHub
app/helpers/todos_helper.rb

Summary

Maintainability
F
3 days
Test Coverage

Module has too many lines. [557/300]
Open

module TodosHelper
  # === helpers for rendering container
  def empty_message_holder(container_name, show, title_param = nil)
    content_tag(:div, :id => "no_todos_in_view", :class => "container #{container_name}", :style => "display:" + (show ? "block" : "none")) do
      content_tag(:h2) { t("todos.no_actions.title", :param => title_param) } +
Severity: Minor
Found in app/helpers/todos_helper.rb by rubocop

This cop checks if the length a module exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

File todos_helper.rb has 559 lines of code (exceeds 300 allowed). Consider refactoring.
Open

require 'staleness'

module TodosHelper
  # === helpers for rendering container
  def empty_message_holder(container_name, show, title_param = nil)
Severity: Major
Found in app/helpers/todos_helper.rb - About 1 day to fix

    Complex method TodosHelper#show_empty_message_in_source_container (96.5)
    Open

      def show_empty_message_in_source_container
        container_id = ""
        source_view do |page|
          page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 }
          page.calendar { container_id = "#{@original_item_due_id}_container-empty-d" if @old_due_empty }
    Severity: Minor
    Found in app/helpers/todos_helper.rb by flog

    Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

    You can read more about ABC metrics or the flog tool

    Complex method TodosHelper#update_needs_to_remove_todo_from_container (49.3)
    Open

      def update_needs_to_remove_todo_from_container
        source_view do |page|
          page.context  { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @todo_should_be_hidden }
          page.project  { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @project_changed }
          page.deferred { return todo_moved_out_of_container || !(@todo.deferred? || @todo.pending?) }
    Severity: Minor
    Found in app/helpers/todos_helper.rb by flog

    Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

    You can read more about ABC metrics or the flog tool

    Complex method TodosHelper#feed_content_for_todo (47.6)
    Open

      def feed_content_for_todo(todo)
        item_notes = todo.notes ? render_text(todo.notes) : ''
        due = todo.due ? content_tag(:div, t('todos.feeds.due', :date => format_date(todo.due))) : ''
        done = todo.completed? ? content_tag(:div, t('todos.feeds.completed', :date => format_date(todo.completed_at))) : ''
        context_link = link_to(context_url(todo.context), todo.context.name)
    Severity: Minor
    Found in app/helpers/todos_helper.rb by flog

    Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

    You can read more about ABC metrics or the flog tool

    Consider simplifying this complex logical expression.
    Open

        if source_view_is_one_of(:tag, :context, :project)
          return @remaining_in_context == 0 && (
            todo_moved_out_of_container                                                       ||
            (@todo_hidden_state_changed && @todo.hidden?)                                     ||
            @todo_was_deferred_from_active_state                                              ||
    Severity: Critical
    Found in app/helpers/todos_helper.rb - About 2 hrs to fix

      Complex method TodosHelper#replace_with_updated_todo (41.3)
      Open

        def replace_with_updated_todo
          source_view do |page|
            page.context  { return !update_needs_to_remove_todo_from_container }
            page.project  { return !update_needs_to_remove_todo_from_container }
            page.deferred { return !todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#append_updated_todo (37.6)
      Open

        def append_updated_todo
          source_view do |page|
            page.context  { return @todo_deferred_state_changed || @todo_pending_state_changed }
            page.project  { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed }
            page.deferred { return todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#date_span (35.4)
      Open

        def date_span(todo = @todo)
          if todo.completed?
            content_tag(:span, { :class => :grey }) { format_date(todo.completed_at) }
          elsif todo.pending?
            title = t('todos.depends_on') + ": " + todo.uncompleted_predecessors.to_a.map(&:description).join(', ')
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#empty_container_msg_div_id (34.1)
      Open

        def empty_container_msg_div_id(todo = @todo || @successor)
          raise Exception.new, "no @todo or @successor set" if !todo
      
          source_view do |page|
            page.project do
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#todos_container_header (31.7)
      Open

        def todos_container_header(settings = {})
          settings.reverse_merge!({
              :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
            })
          header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#remote_defer_menu_item (26.6)
      Open

        def remote_defer_menu_item(days, todo)
          url = { :controller => 'todos', :action => 'defer', :id => todo.id, :days => days,
            :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
          url[:_tag_name] = @tag_name if @source_view == 'tag'
      
      
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      TodosHelper#empty_message_holder is controlled by argument 'show'
      Open

          content_tag(:div, :id => "no_todos_in_view", :class => "container #{container_name}", :style => "display:" + (show ? "block" : "none")) do
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      Control Parameter is a special case of Control Couple

      Example

      A simple example would be the "quoted" parameter in the following method:

      def write(quoted)
        if quoted
          write_quoted @value
        else
          write_unquoted @value
        end
      end

      Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method alltogether and to move the calls to "writequoted" / "writeunquoted" in the initial caller of "write".

      TodosHelper#todos_container_empty_message is controlled by argument 'show_message'
      Open

          content_tag(:div, :id => "#{container_id}-empty-d", :style => "display:#{show_message ? 'block' : 'none'}") do
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      Control Parameter is a special case of Control Couple

      Example

      A simple example would be the "quoted" parameter in the following method:

      def write(quoted)
        if quoted
          write_quoted @value
        else
          write_unquoted @value
        end
      end

      Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method alltogether and to move the calls to "writequoted" / "writeunquoted" in the initial caller of "write".

      TodosHelper#staleness_class has approx 6 statements
      Open

        def staleness_class(item)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#tag_span has boolean parameter 'mobile'
      Open

        def tag_span(tag, mobile = false)
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      Boolean Parameter is a special case of Control Couple, where a method parameter is defaulted to true or false. A Boolean Parameter effectively permits a method's caller to decide which execution path to take. This is a case of bad cohesion. You're creating a dependency between methods that is not really necessary, thus increasing coupling.

      Example

      Given

      class Dummy
        def hit_the_switch(switch = true)
          if switch
            puts 'Hitting the switch'
            # do other things...
          else
            puts 'Not hitting the switch'
            # do other things...
          end
        end
      end

      Reek would emit the following warning:

      test.rb -- 3 warnings:
        [1]:Dummy#hit_the_switch has boolean parameter 'switch' (BooleanParameter)
        [2]:Dummy#hit_the_switch is controlled by argument switch (ControlParameter)

      Note that both smells are reported, Boolean Parameter and Control Parameter.

      Getting rid of the smell

      This is highly dependent on your exact architecture, but looking at the example above what you could do is:

      • Move everything in the if branch into a separate method
      • Move everything in the else branch into a separate method
      • Get rid of the hit_the_switch method alltogether
      • Make the decision what method to call in the initial caller of hit_the_switch

      TodosHelper#feed_content_for_todo has approx 10 statements
      Open

        def feed_content_for_todo(todo)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#remote_defer_menu_item has approx 8 statements
      Open

        def remote_defer_menu_item(days, todo)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#show_empty_message_in_source_container has approx 26 statements
      Open

        def show_empty_message_in_source_container
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#empty_container_msg_div_id has approx 20 statements
      Open

        def empty_container_msg_div_id(todo = @todo || @successor)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#todos_container_header has approx 10 statements
      Open

        def todos_container_header(settings = {})
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#tag_list has boolean parameter 'mobile'
      Open

        def tag_list(todo=@todo, mobile = false)
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      Boolean Parameter is a special case of Control Couple, where a method parameter is defaulted to true or false. A Boolean Parameter effectively permits a method's caller to decide which execution path to take. This is a case of bad cohesion. You're creating a dependency between methods that is not really necessary, thus increasing coupling.

      Example

      Given

      class Dummy
        def hit_the_switch(switch = true)
          if switch
            puts 'Hitting the switch'
            # do other things...
          else
            puts 'Not hitting the switch'
            # do other things...
          end
        end
      end

      Reek would emit the following warning:

      test.rb -- 3 warnings:
        [1]:Dummy#hit_the_switch has boolean parameter 'switch' (BooleanParameter)
        [2]:Dummy#hit_the_switch is controlled by argument switch (ControlParameter)

      Note that both smells are reported, Boolean Parameter and Control Parameter.

      Getting rid of the smell

      This is highly dependent on your exact architecture, but looking at the example above what you could do is:

      • Move everything in the if branch into a separate method
      • Move everything in the else branch into a separate method
      • Get rid of the hit_the_switch method alltogether
      • Make the decision what method to call in the initial caller of hit_the_switch

      TodosHelper#replace_with_updated_todo has approx 18 statements
      Open

        def replace_with_updated_todo
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#item_container_id has approx 7 statements
      Open

        def item_container_id (todo)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#project_and_context_links has approx 6 statements
      Open

        def project_and_context_links(todo, parent_container_type, opts = {})
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#tag_span is controlled by argument 'mobile'
      Open

          content_tag(:span, :class => "tag #{tag.label}") { link_to(tag.name, tag_path(tag.name, :format => mobile ? :m : nil)) }
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      Control Parameter is a special case of Control Couple

      Example

      A simple example would be the "quoted" parameter in the following method:

      def write(quoted)
        if quoted
          write_quoted @value
        else
          write_unquoted @value
        end
      end

      Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method alltogether and to move the calls to "writequoted" / "writeunquoted" in the initial caller of "write".

      TodosHelper#todos_container_items refers to 'settings' more than self (maybe move it to another class?)
      Open

          settings.reverse_merge!({ :id => "#{settings[:container_name]}" })
          # do not pass :class to partial locals
          settings.delete(:class)
      
          content_tag(:div, :id => settings[:id] + "_items", :class => "items toggle_target") do
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#append_updated_todo has approx 16 statements
      Open

        def append_updated_todo
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#todos_container_header refers to 'settings' more than self (maybe move it to another class?)
      Open

              :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
            })
          header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
          header += content_tag(:h2) do
            toggle = settings[:collapsible] ? container_toggle("toggle_#{settings[:id]}") : ""
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#remote_toggle_checkbox refers to 'todo' more than self (maybe move it to another class?)
      Open

          check_box_tag("mark_complete_#{todo.id}", toggle_check_todo_path(todo), todo.completed?, :class => 'item-checkbox',
            :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#staleness_class refers to 'start' more than self (maybe move it to another class?)
      Open

          when start...start * 2
            " stale_l1"
          when start*2...start * 3
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#should_show_new_item has approx 13 statements
      Open

        def should_show_new_item(todo = @todo)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#date_span has approx 8 statements
      Open

        def date_span(todo = @todo)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#should_show_new_item refers to 'todo' more than self (maybe move it to another class?)
      Open

          return false if todo.nil?
          source_view do |page|
            page.todo     { return !todo.hidden? && !todo.deferred? }
            page.deferred { return todo.deferred? || todo.pending? }
            page.tag      { return todo.has_tag?(@tag_name) }
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#date_field_tag has 4 parameters
      Open

        def date_field_tag(name, id, value = nil, options = {})
      Severity: Minor
      Found in app/helpers/todos_helper.rb by reek

      A Long Parameter List occurs when a method has a lot of parameters.

      Example

      Given

      class Dummy
        def long_list(foo,bar,baz,fling,flung)
          puts foo,bar,baz,fling,flung
        end
      end

      Reek would report the following warning:

      test.rb -- 1 warning:
        [2]:Dummy#long_list has 5 parameters (LongParameterList)

      A common solution to this problem would be the introduction of parameter objects.

      TodosHelper#show_deferred_pending_todos refers to 'settings' more than self (maybe move it to another class?)
      Open

          settings[:pending] = pending_todos
          settings[:container_name] = "deferred_pending"
      
          render :partial => "todos/collection",
            :object => deferred_todos + pending_todos,
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#todos_container refers to 'settings' more than self (maybe move it to another class?)
      Open

            :id => "#{settings[:container_name]}_container",
            :class => "container #{settings[:container_name]}",
            })
      
          if settings[:collapsible]
      Severity: Minor
      Found in app/helpers/todos_helper.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.

      TodosHelper#empty_message_holder has approx 6 statements
      Open

        def empty_message_holder(container_name, show, title_param = nil)
      Severity: Minor
      Found in app/helpers/todos_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.)

      TodosHelper#update_needs_to_remove_todo_from_container has approx 18 statements
      Open

        def update_needs_to_remove_todo_from_container
      Severity: Minor
      Found in app/helpers/todos_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.)

      Complex method TodosHelper#update_needs_to_hide_container (26.0)
      Open

        def update_needs_to_hide_container
          if source_view_is_one_of(:tag, :context, :project)
            return @remaining_in_context == 0 && (
              todo_moved_out_of_container                                                       ||
              (@todo_hidden_state_changed && @todo.hidden?)                                     ||
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Complex method TodosHelper#should_show_new_item (25.1)
      Open

        def should_show_new_item(todo = @todo)
          return false if todo.nil?
          source_view do |page|
            page.todo     { return !todo.hidden? && !todo.deferred? }
            page.deferred { return todo.deferred? || todo.pending? }
      Severity: Minor
      Found in app/helpers/todos_helper.rb by flog

      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

      You can read more about ABC metrics or the flog tool

      Consider simplifying this complex logical expression.
      Open

              container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
      Severity: Major
      Found in app/helpers/todos_helper.rb - About 40 mins to fix

        Consider simplifying this complex logical expression.
        Open

                container_id = "deferred_pending_container-empty-d" if (todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0) ||
                  (@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed))
        Severity: Major
        Found in app/helpers/todos_helper.rb - About 40 mins to fix

          Complex method TodosHelper#project_and_context_links (23.9)
          Open

            def project_and_context_links(todo, parent_container_type, opts = {})
              links = ''
              if todo.completed?
                links << item_link_to_context(todo) unless opts[:suppress_context]
                links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
          Severity: Minor
          Found in app/helpers/todos_helper.rb by flog

          Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

          You can read more about ABC metrics or the flog tool

          TodosHelper#project_and_context_links calls 'links << item_link_to_context(todo)' 2 times
          Open

                links << item_link_to_context(todo) unless opts[:suppress_context]
                links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
              else
                links << item_link_to_context(todo) if include_context_link(todo, parent_container_type)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls '@remaining_deferred_or_pending_count == 0' 4 times
          Open

                  container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                  container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                end
                page.tag do
                  container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container_items calls 'settings[:id]' 2 times
          Open

              content_tag(:div, :id => settings[:id] + "_items", :class => "items toggle_target") do
                todos_container_empty_message(settings[:container_name], settings[:id], collection.empty?) +
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#append_updated_todo calls '@todo.deferred?' 2 times
          Open

                page.deferred { return todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
                page.calendar { return @due_date_changed && @todo.due }
                page.stats    { return false }
                page.tag      { return update_needs_to_remove_todo_from_container && !@tag_was_removed }
                page.todo     { return todo_moved_out_of_container && !(@todo.deferred? || @todo.pending? || @todo.hidden?) }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#should_show_new_item calls 'todo.deferred?' 2 times
          Open

                page.todo     { return !todo.hidden? && !todo.deferred? }
                page.deferred { return todo.deferred? || todo.pending? }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todo_moved_out_of_container calls '@group_view_by == 'project'' 2 times
          Open

              moved_project = @project_changed && @group_view_by == 'project'
              # moved from one context container to another
              moved_context = @context_changed && @group_view_by == 'context'
              # moved from actions-without-project container to another
              moved_without_project = @context_changed && @group_view_by == 'project' && @todo.project_id.nil?
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#update_needs_to_remove_todo_from_container calls '@todo.hidden?' 2 times
          Open

                page.tag      { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
                page.todo     { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending? }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#update_needs_to_remove_todo_from_container calls '@todo.pending?' 2 times
          Open

                page.deferred { return todo_moved_out_of_container || !(@todo.deferred? || @todo.pending?) }
                page.calendar { return @due_date_changed || !@todo.due }
                page.stats    { return @todo.completed? }
                page.tag      { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
                page.todo     { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending? }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#append_updated_todo calls '@todo.pending?' 2 times
          Open

                page.deferred { return todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
                page.calendar { return @due_date_changed && @todo.due }
                page.stats    { return false }
                page.tag      { return update_needs_to_remove_todo_from_container && !@tag_was_removed }
                page.todo     { return todo_moved_out_of_container && !(@todo.deferred? || @todo.pending? || @todo.hidden?) }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#feed_content_for_todo calls 'todo.context' 2 times
          Open

              context_link = link_to(context_url(todo.context), todo.context.name)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#deferred_due_date calls 'todo.due' 2 times
          Open

              t('todos.action_due_on', :date => format_date(todo.due)) if todo.deferred? && todo.due
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#remote_defer_menu_item calls 'todo.due' 2 times
          Open

              if todo.due
                futuredate = (todo.show_from || todo.user.date) + days.days
                if futuredate.at_midnight > todo.due.at_midnight
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container_header calls 'settings[:id]' 2 times
          Open

                toggle = settings[:collapsible] ? container_toggle("toggle_#{settings[:id]}") : ""
                "#{toggle} #{settings[:title]} #{settings[:append_descriptor]}".html_safe
              end
              header += content_tag(:div, nil, :id => settings[:id] + "_target", :class => "context_target drop_target")
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper has no descriptive comment
          Open

          module TodosHelper
          Severity: Minor
          Found in app/helpers/todos_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

          TodosHelper#show_empty_message_in_source_container calls '!@todo.completed?' 3 times
          Open

                  container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                end
                page.tag do
                  container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                    (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls 'context_container_empty_id(@original_item)' 2 times
          Open

                page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 }
                page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
                page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 }
                page.project do
                  container_id = project_container_empty_id(@original_item) if @remaining_in_context == 0
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls '@todo.completed?' 5 times
          Open

                  container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                end
                page.tag do
                  container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                    (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls '@remaining_hidden_count == 0' 2 times
          Open

                  container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                    (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container calls 'settings[:container_name]' 2 times
          Open

                :id => "#{settings[:container_name]}_container",
                :class => "container #{settings[:container_name]}",
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container_items calls 'settings[:container_name]' 2 times
          Open

              settings.reverse_merge!({ :id => "#{settings[:container_name]}" })
              # do not pass :class to partial locals
              settings.delete(:class)
          
              content_tag(:div, :id => settings[:id] + "_items", :class => "items toggle_target") do
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#feed_content_for_todo calls 'todo.project' 3 times
          Open

              project_link = todo.project.is_a?(NullProject) ? content_tag(:em, t('common.none')) : link_to(project_url(todo.project), todo.project.name)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#project_and_context_links calls 'links << item_link_to_project(todo)' 2 times
          Open

                links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
              else
                links << item_link_to_context(todo) if include_context_link(todo, parent_container_type)
                links << item_link_to_project(todo) if include_project_link(todo, parent_container_type)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#replace_with_updated_todo calls '!update_needs_to_remove_todo_from_container' 4 times
          Open

                page.context  { return !update_needs_to_remove_todo_from_container }
                page.project  { return !update_needs_to_remove_todo_from_container }
                page.deferred { return !todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
                page.calendar { return !@due_date_changed && @todo.due }
                page.stats    { return !@todo.completed? }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container calls 'settings[:class]' 2 times
          Open

                settings[:class] += " collapsible"
              end
          
              content_tag(:div,
                :class => settings[:class],
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#todos_container_header calls 'settings[:link_in_header]' 2 times
          Open

              header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#update_needs_to_hide_container calls '@remaining_in_context == 0' 2 times
          Open

                return @remaining_in_context == 0 && (
                  todo_moved_out_of_container                                                       ||
                  (@todo_hidden_state_changed && @todo.hidden?)                                     ||
                  @todo_was_deferred_from_active_state                                              ||
                  @tag_was_removed                                                                  ||
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#project_and_context_links calls 'item_link_to_project(todo)' 2 times
          Open

                links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
              else
                links << item_link_to_context(todo) if include_context_link(todo, parent_container_type)
                links << item_link_to_project(todo) if include_project_link(todo, parent_container_type)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#remote_mobile_checkbox calls '@todo.id' 2 times
          Open

              form_tag toggle_check_todo_path(@todo, :format => 'm'), :method => :put, :class => "mobile-done", :name => "mobile_complete_#{@todo.id}" do
                check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()")
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls '@completed_count == 0' 3 times
          Open

                  container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                end
                page.tag do
                  container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                    (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_empty_message_in_source_container calls '@remaining_in_context == 0' 6 times
          Open

                page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 }
                page.calendar { container_id = "#{@original_item_due_id}_container-empty-d" if @old_due_empty }
                page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 }
                page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
                page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#show_todo_on_current_project_page calls '@todo.project' 2 times
          Open

              @todo.project.id == @default_project.id && (!@todo.hidden? || @todo.project.hidden?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#staleness_class calls 'start * 2' 2 times
          Open

              when start...start * 2
                " stale_l1"
              when start*2...start * 3
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#empty_container_msg_div_id calls 'todo_container_empty_id(todo)' 5 times
          Open

                  return todo_container_empty_id(todo)
                end
                page.tag do
                  return "deferred_pending_container-empty-d" if empty_criteria_met
                  return "hidden_container-empty-d"           if @todo.hidden?
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#feed_content_for_todo calls 'todo.notes' 2 times
          Open

              item_notes = todo.notes ? render_text(todo.notes) : ''
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#tag_span calls 'tag.name' 2 times
          Open

              content_tag(:span, :class => "tag #{tag.label}") { link_to(tag.name, tag_path(tag.name, :format => mobile ? :m : nil)) }
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#feed_content_for_todo calls 'todo.due' 2 times
          Open

              due = todo.due ? content_tag(:div, t('todos.feeds.due', :date => format_date(todo.due))) : ''
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#project_and_context_links calls 'item_link_to_context(todo)' 2 times
          Open

                links << item_link_to_context(todo) unless opts[:suppress_context]
                links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
              else
                links << item_link_to_context(todo) if include_context_link(todo, parent_container_type)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#remote_toggle_checkbox calls 'todo.pending?' 2 times
          Open

                :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#successors_span calls 'todo.pending_successors' 3 times
          Open

              unless todo.pending_successors.empty?
                pending_count = todo.pending_successors.count
                title = "#{t('todos.has_x_pending', :count => pending_count)}: #{todo.pending_successors.to_a.map(&:description).join(', ')}"
          Severity: Minor
          Found in app/helpers/todos_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.

          TodosHelper#update_needs_to_remove_todo_from_container calls '@todo.deferred?' 2 times
          Open

                page.deferred { return todo_moved_out_of_container || !(@todo.deferred? || @todo.pending?) }
                page.calendar { return @due_date_changed || !@todo.due }
                page.stats    { return @todo.completed? }
                page.tag      { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
                page.todo     { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending? }
          Severity: Minor
          Found in app/helpers/todos_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.

          Complex method TodosHelper#default_contexts_for_autocomplete (23.0)
          Open

            def default_contexts_for_autocomplete
              projects = current_user.projects.uncompleted.includes(:default_context).where('NOT(default_context_id IS NULL)')
              Hash[*projects.map { |p| [escape_javascript(p.name), escape_javascript(p.default_context.name)] }.flatten].to_json
          Severity: Minor
          Found in app/helpers/todos_helper.rb by flog

          Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

          You can read more about ABC metrics or the flog tool

          Avoid too many return statements within this method.
          Open

                page.project  { return show_todo_on_current_project_page }
          Severity: Major
          Found in app/helpers/todos_helper.rb - About 30 mins to fix

            Avoid too many return statements within this method.
            Open

                return "completed_container"        if todo.completed?
            Severity: Major
            Found in app/helpers/todos_helper.rb - About 30 mins to fix

              Avoid too many return statements within this method.
              Open

                    page.deferred { return todo_container_empty_id(todo) }
              Severity: Major
              Found in app/helpers/todos_helper.rb - About 30 mins to fix

                Avoid too many return statements within this method.
                Open

                      page.stats    { return @todo.completed? }
                Severity: Major
                Found in app/helpers/todos_helper.rb - About 30 mins to fix

                  Avoid too many return statements within this method.
                  Open

                        page.stats    { return false }
                  Severity: Major
                  Found in app/helpers/todos_helper.rb - About 30 mins to fix

                    Avoid too many return statements within this method.
                    Open

                            return "deferred_pending_container-empty-d" if empty_criteria_met
                    Severity: Major
                    Found in app/helpers/todos_helper.rb - About 30 mins to fix

                      Avoid too many return statements within this method.
                      Open

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

                        Avoid too many return statements within this method.
                        Open

                            return project_container_id(todo)   if source_view_is_one_of(:todo, :tag, :project, :context) && @group_view_by == 'project'
                        Severity: Major
                        Found in app/helpers/todos_helper.rb - About 30 mins to fix

                          Avoid too many return statements within this method.
                          Open

                                  return todo_container_empty_id(todo)
                          Severity: Major
                          Found in app/helpers/todos_helper.rb - About 30 mins to fix

                            Avoid too many return statements within this method.
                            Open

                                return context_container_empty_id(todo)
                            Severity: Major
                            Found in app/helpers/todos_helper.rb - About 30 mins to fix

                              Avoid too many return statements within this method.
                              Open

                                      return "#{@new_due_id}_container-empty-d"
                              Severity: Major
                              Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                Avoid too many return statements within this method.
                                Open

                                      page.todo     { return todo_moved_out_of_container && !(@todo.deferred? || @todo.pending? || @todo.hidden?) }
                                Severity: Major
                                Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                  Avoid too many return statements within this method.
                                  Open

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

                                    Avoid too many return statements within this method.
                                    Open

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

                                      Avoid too many return statements within this method.
                                      Open

                                          return context_container_id(todo)
                                      Severity: Major
                                      Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                        Avoid too many return statements within this method.
                                        Open

                                              page.todo { return todo_container_empty_id(todo) }
                                        Severity: Major
                                        Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                          Avoid too many return statements within this method.
                                          Open

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

                                            Avoid too many return statements within this method.
                                            Open

                                                  page.todo     { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending? }
                                            Severity: Major
                                            Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                              Avoid too many return statements within this method.
                                              Open

                                                      return todo_container_empty_id(todo)
                                              Severity: Major
                                              Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                Avoid too many return statements within this method.
                                                Open

                                                      page.search   { return true }
                                                Severity: Major
                                                Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                  Avoid too many return statements within this method.
                                                  Open

                                                        page.search   { return false }
                                                  Severity: Major
                                                  Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                    Avoid too many return statements within this method.
                                                    Open

                                                          page.tag      { return !update_needs_to_remove_todo_from_container && !@tag_was_removed }
                                                    Severity: Major
                                                    Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                      Avoid too many return statements within this method.
                                                      Open

                                                            page.tag      { return update_needs_to_remove_todo_from_container && !@tag_was_removed }
                                                      Severity: Major
                                                      Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                        Avoid too many return statements within this method.
                                                        Open

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

                                                          Avoid too many return statements within this method.
                                                          Open

                                                                  return "deferred_pending_container-empty-d" if empty_criteria_met
                                                          Severity: Major
                                                          Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                            Avoid too many return statements within this method.
                                                            Open

                                                                  page.stats    { return !@todo.completed? }
                                                            Severity: Major
                                                            Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                              Avoid too many return statements within this method.
                                                              Open

                                                                  return 'context'
                                                              Severity: Major
                                                              Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                                Avoid too many return statements within this method.
                                                                Open

                                                                      page.context  { return show_todo_on_current_context_page }
                                                                Severity: Major
                                                                Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                                  Avoid too many return statements within this method.
                                                                  Open

                                                                        page.tag      { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
                                                                  Severity: Major
                                                                  Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                                    Avoid too many return statements within this method.
                                                                    Open

                                                                          page.todo     { return !update_needs_to_remove_todo_from_container }
                                                                    Severity: Major
                                                                    Found in app/helpers/todos_helper.rb - About 30 mins to fix

                                                                      Method show_empty_message_in_source_container has a Cognitive Complexity of 51 (exceeds 50 allowed). Consider refactoring.
                                                                      Open

                                                                        def show_empty_message_in_source_container
                                                                          container_id = ""
                                                                          source_view do |page|
                                                                            page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 }
                                                                            page.calendar { container_id = "#{@original_item_due_id}_container-empty-d" if @old_due_empty }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                      TodosHelper#should_show_new_item performs a nil-check
                                                                      Open

                                                                          return false if todo.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#todo_moved_out_of_container performs a nil-check
                                                                      Open

                                                                          moved_without_project = @context_changed && @group_view_by == 'project' && @todo.project_id.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#project_container_empty_id doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def project_container_empty_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper#project_container_id performs a nil-check
                                                                      Open

                                                                          return "p#{todo.project_id}"         unless todo.project.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#todos_container_header performs a nil-check
                                                                      Open

                                                                          header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#project_and_context_links performs a nil-check
                                                                      Open

                                                                            links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#render_animation performs a nil-check
                                                                      Open

                                                                          object_name += "." unless object_name.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#context_container_id doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def context_container_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper#context_container_empty_id doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def context_container_empty_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper#format_ical_notes doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def format_ical_notes(notes)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper#project_container_id doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def project_container_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper#sort_key doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def sort_key(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      TodosHelper takes parameters ['parent_container_type', 'todo'] to 3 methods
                                                                      Open

                                                                        def project_and_context_links(todo, parent_container_type, opts = {})
                                                                          links = ''
                                                                          if todo.completed?
                                                                            links << item_link_to_context(todo) unless opts[:suppress_context]
                                                                            links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      In general, a Data Clump occurs when the same two or three items frequently appear together in classes and parameter lists, or when a group of instance variable names start or end with similar substrings.

                                                                      The recurrence of the items often means there is duplicate code spread around to handle them. There may be an abstraction missing from the code, making the system harder to understand.

                                                                      Example

                                                                      Given

                                                                      class Dummy
                                                                        def x(y1,y2); end
                                                                        def y(y1,y2); end
                                                                        def z(y1,y2); end
                                                                      end

                                                                      Reek would emit the following warning:

                                                                      test.rb -- 1 warning:
                                                                        [2, 3, 4]:Dummy takes parameters [y1, y2] to 3 methods (DataClump)

                                                                      A possible way to fix this problem (quoting from Martin Fowler):

                                                                      The first step is to replace data clumps with objects and use the objects whenever you see them. An immediate benefit is that you'll shrink some parameter lists. The interesting stuff happens as you begin to look for behavior to move into the new objects.

                                                                      TodosHelper#project_container_empty_id performs a nil-check
                                                                      Open

                                                                          return "p#{todo.project_id}-empty-d" unless todo.project.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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)

                                                                      TodosHelper#render_animation doesn't depend on instance state (maybe move it to another class?)
                                                                      Open

                                                                        def render_animation(animation, object_name = nil)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

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

                                                                      Complex method TodosHelper#remote_toggle_checkbox (20.7)
                                                                      Open

                                                                        def remote_toggle_checkbox(todo = @todo)
                                                                          check_box_tag("mark_complete_#{todo.id}", toggle_check_todo_path(todo), todo.completed?, :class => 'item-checkbox',
                                                                            :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by flog

                                                                      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

                                                                      You can read more about ABC metrics or the flog tool

                                                                      Complex method TodosHelper#item_container_id (20.1)
                                                                      Open

                                                                        def item_container_id (todo)
                                                                          return "hidden_container"           if source_view_is(:tag) && todo.hidden?
                                                                          return todo_container_id(todo)      if source_view_is :deferred
                                                                          return "#{@new_due_id}_container"   if source_view_is :calendar
                                                                          return "deferred_pending_container" if !source_view_is(:todo) && (todo.deferred? || todo.pending?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by flog

                                                                      Flog calculates the ABC score for methods. The ABC score is based on assignments, branches (method calls), and conditions.

                                                                      You can read more about ABC metrics or the flog tool

                                                                      TodosHelper#formatted_pagination has unused parameter 'total'
                                                                      Open

                                                                        def formatted_pagination(total)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      Unused Parameter refers to methods with parameters that are unused in scope of the method.

                                                                      Having unused parameters in a method is code smell because leaving dead code in a method can never improve the method and it makes the code confusing to read.

                                                                      Example

                                                                      Given:

                                                                      class Klass
                                                                        def unused_parameters(x,y,z)
                                                                          puts x,y # but not z
                                                                        end
                                                                      end

                                                                      Reek would emit the following warning:

                                                                      [2]:Klass#unused_parameters has unused parameter 'z' (UnusedParameters)

                                                                      TodosHelper#include_context_link has unused parameter 'todo'
                                                                      Open

                                                                        def include_context_link(todo, parent_container_type)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      Unused Parameter refers to methods with parameters that are unused in scope of the method.

                                                                      Having unused parameters in a method is code smell because leaving dead code in a method can never improve the method and it makes the code confusing to read.

                                                                      Example

                                                                      Given:

                                                                      class Klass
                                                                        def unused_parameters(x,y,z)
                                                                          puts x,y # but not z
                                                                        end
                                                                      end

                                                                      Reek would emit the following warning:

                                                                      [2]:Klass#unused_parameters has unused parameter 'z' (UnusedParameters)

                                                                      TodosHelper#remote_mobile_checkbox has unused parameter 'todo'
                                                                      Open

                                                                        def remote_mobile_checkbox(todo = @todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      Unused Parameter refers to methods with parameters that are unused in scope of the method.

                                                                      Having unused parameters in a method is code smell because leaving dead code in a method can never improve the method and it makes the code confusing to read.

                                                                      Example

                                                                      Given:

                                                                      class Klass
                                                                        def unused_parameters(x,y,z)
                                                                          puts x,y # but not z
                                                                        end
                                                                      end

                                                                      Reek would emit the following warning:

                                                                      [2]:Klass#unused_parameters has unused parameter 'z' (UnusedParameters)

                                                                      TodosHelper#formatted_pagination has the variable name 's'
                                                                      Open

                                                                          s = will_paginate(@todos)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

                                                                      Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

                                                                      TodosHelper#default_tags_for_autocomplete has the variable name 'p'
                                                                      Open

                                                                          Hash[*projects.map { |p| [escape_javascript(p.name), p.default_tags] }.flatten].to_json
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

                                                                      Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

                                                                      TodosHelper#default_contexts_for_autocomplete has the variable name 'p'
                                                                      Open

                                                                          Hash[*projects.map { |p| [escape_javascript(p.name), escape_javascript(p.default_context.name)] }.flatten].to_json
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by reek

                                                                      An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

                                                                      Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                            "#{toggle} #{settings[:title]} #{settings[:append_descriptor]}".html_safe
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                          content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{ |tag| tag_span(tag, mobile) }.join('').html_safe }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                            :style => "display:none" }) { raw render_text(todo.notes) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                          return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                          header.html_safe
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      Tagging a string as html safe may be a security risk.
                                                                      Open

                                                                          links.html_safe
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the use of output safety calls like htmlsafe, raw, and safeconcat. These methods do not escape content. They simply return a SafeBuffer containing the content as is. Instead, use safe_join to join content and escape it and concat to concatenate content and escape it, ensuring its safety.

                                                                      Example:

                                                                      user_content = "hi"
                                                                      
                                                                      # bad
                                                                      "

                                                                      #{user_content}

                                                                      ".html_safe # => ActiveSupport::SafeBuffer "

                                                                      hi

                                                                      " # good content_tag(:p, user_content) # => ActiveSupport::SafeBuffer "

                                                                      <b>hi</b>

                                                                      " # bad out = "" out << "
                                                                    • #{user_content}
                                                                    • " out << "
                                                                    • #{user_content}
                                                                    • " out.html_safe # => ActiveSupport::SafeBuffer "
                                                                    • hi
                                                                    • hi
                                                                    • " # good out = [] out << content_tag(:li, user_content) out << content_tag(:li, user_content) safe_join(out) # => ActiveSupport::SafeBuffer # "
                                                                    • <b>hi</b>
                                                                    • <b>hi</b>
                                                                    • " # bad out = "

                                                                      trusted content

                                                                      ".html_safe out.safe_concat(user_content) # => ActiveSupport::SafeBuffer "

                                                                      trusted_content

                                                                      hi" # good out = "

                                                                      trusted content

                                                                      ".html_safe out.concat(user_content) # => ActiveSupport::SafeBuffer # "

                                                                      trusted_content

                                                                      <b>hi</b>" # safe, though maybe not good style out = "trusted content" result = out.concat(user_content) # => String "trusted contenthi" # because when rendered in ERB the String will be escaped: # <%= result %> # => trusted content<b>hi</b> # bad (user_content + " " + content_tag(:span, user_content)).html_safe # => ActiveSupport::SafeBuffer "hi <span><b>hi</b></span>" # good safe_join([user_content, " ", content_tag(:span, user_content)]) # => ActiveSupport::SafeBuffer # "<b>hi</b> <span>&lt;b&gt;hi&lt;/b&gt;</span>"

                                                                      TODO found
                                                                      Open

                                                                          # TODO: remove next line if 'project' supports group_view_by
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by fixme

                                                                      TODO found
                                                                      Open

                                                                          # TODO: remove next line if 'context' supports group_view_by
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by fixme

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

                                                                            page.project do
                                                                              container_id = project_container_empty_id(@original_item) if @remaining_in_context == 0
                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                              container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                                                                            end
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb and 1 other location - About 25 mins to fix
                                                                      app/helpers/todos_helper.rb on lines 674..678

                                                                      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 31.

                                                                      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 2 locations. Consider refactoring.
                                                                      Open

                                                                            page.context do
                                                                              container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0
                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                              container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                                                                            end
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb and 1 other location - About 25 mins to fix
                                                                      app/helpers/todos_helper.rb on lines 662..666

                                                                      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 31.

                                                                      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

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

                                                                            :id => "#{settings[:container_name]}_container",
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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
                                                                                              }

                                                                      Surrounding space missing for operator *.
                                                                      Open

                                                                          when start*2...start * 3
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks that operators have space around them, except for ** which should not have surrounding space.

                                                                      Example:

                                                                      # bad
                                                                      total = 3*4
                                                                      "apple"+"juice"
                                                                      my_number = 38/4
                                                                      a ** b
                                                                      
                                                                      # good
                                                                      total = 3 * 4
                                                                      "apple" + "juice"
                                                                      my_number = 38 / 4
                                                                      a**b

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

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

                                                                      Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                                                                      Open

                                                                            { :class => 'show_notes', :title => 'Show notes' })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks that the closing brace in a method call is either on the same line as the last method argument, or a new line.

                                                                      When using the symmetrical (default) style:

                                                                      If a method call's opening brace is on the same line as the first argument of the call, then the closing brace should be on the same line as the last argument of the call.

                                                                      If an method call's opening brace is on the line above the first argument of the call, then the closing brace should be on the line below the last argument of the call.

                                                                      When using the new_line style:

                                                                      The closing brace of a multi-line method call must be on the line after the last argument of the call.

                                                                      When using the same_line style:

                                                                      The closing brace of a multi-line method call must be on the same line as the last argument of the call.

                                                                      Example:

                                                                      # symmetrical: bad
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(a,
                                                                          b
                                                                        )
                                                                      
                                                                        # symmetrical: bad
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(
                                                                          a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(
                                                                          a,
                                                                          b
                                                                        )

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            content_tag(:div, "#{t('common.context')}:  #{context_link}")
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            content_tag(:div, "#{t('common.project')}:  #{project_link}") + "\n" +
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Line is too long. [136/120]
                                                                      Open

                                                                          header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [124/120]
                                                                      Open

                                                                              :locals => { :parent_container_type => parent_container_type, :suppress_dependencies => true, :predecessor => todo }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => collection,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Line is too long. [170/120]
                                                                      Open

                                                                            :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Unused method argument - total. If it's necessary, use _ or _total as an argument name to indicate that it won't be used. You can also write as formatted_pagination(*) if you want the method to accept any arguments but don't care about them.
                                                                      Open

                                                                        def formatted_pagination(total)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for unused method arguments.

                                                                      Example:

                                                                      # bad
                                                                      
                                                                      def some_method(used, unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Example:

                                                                      # good
                                                                      
                                                                      def some_method(used, _unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Line is too long. [135/120]
                                                                      Open

                                                                              :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => settings }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => hidden_todos,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

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

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

                                                                      Use 2 (not 0) spaces for indenting an expression spanning multiple lines.
                                                                      Open

                                                                            content_tag(:div, :class => "message") do
                                                                              content_tag(:p) { t("todos.no_actions.#{container_name}", :param => title_param) }
                                                                            end
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_activated_from_pending_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Align the operands of a condition in an if statement spanning multiple lines.
                                                                      Open

                                                                                (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Unused method argument - todo. If it's necessary, use _ or _todo as an argument name to indicate that it won't be used. You can also write as remote_mobile_checkbox(*) if you want the method to accept any arguments but don't care about them.
                                                                      Open

                                                                        def remote_mobile_checkbox(todo = @todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for unused method arguments.

                                                                      Example:

                                                                      # bad
                                                                      
                                                                      def some_method(used, unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Example:

                                                                      # good
                                                                      
                                                                      def some_method(used, _unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Line is too long. [134/120]
                                                                      Open

                                                                            image_tag("blank.png", :alt => t('todos.edit'), :align => "absmiddle", :id => dom_id(todo, "edit_icon"), :class => 'edit_item'),
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [131/120]
                                                                      Open

                                                                          successors = content_tag(:div, { :class => "todo_successors", :id => dom_id(todo, 'successors'), :style => "display:none" }) do
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => done_todos,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => {
                                                                              :collapsible => false,
                                                                              :show_empty_containers => true,
                                                                              :container_name => "#{period}",
                                                                              :title => t("todos.calendar.#{period}", :month => l(Time.zone.now, :format => "%B"), :next_month => l(1.month.from_now, :format => "%B"))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                                                                      Open

                                                                            :title => t('todos.edit_action_with_description', :description => todo.description))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks that the closing brace in a method call is either on the same line as the last method argument, or a new line.

                                                                      When using the symmetrical (default) style:

                                                                      If a method call's opening brace is on the same line as the first argument of the call, then the closing brace should be on the same line as the last argument of the call.

                                                                      If an method call's opening brace is on the line above the first argument of the call, then the closing brace should be on the line below the last argument of the call.

                                                                      When using the new_line style:

                                                                      The closing brace of a multi-line method call must be on the line after the last argument of the call.

                                                                      When using the same_line style:

                                                                      The closing brace of a multi-line method call must be on the same line as the last argument of the call.

                                                                      Example:

                                                                      # symmetrical: bad
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(a,
                                                                          b
                                                                        )
                                                                      
                                                                        # symmetrical: bad
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(
                                                                          a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(
                                                                          a,
                                                                          b
                                                                        )

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_blocked_from_completed_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Do not put a space between a method name and the opening parenthesis.
                                                                      Open

                                                                        def item_container_id (todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks for space between a method name and a left parenthesis in defs.

                                                                      Example:

                                                                      # bad
                                                                      def func (x) end
                                                                      def method= (y) end
                                                                      
                                                                      # good
                                                                      def func(x) end
                                                                      def method=(y) end

                                                                      Line is too long. [158/120]
                                                                      Open

                                                                          link = link_to(image_tag('blank.png', :width => '16', :height => '16', :border => '0'), "#", { :class => 'show_successors', :title => 'Show successors' })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [143/120]
                                                                      Open

                                                                          project_link = todo.project.is_a?(NullProject) ? content_tag(:em, t('common.none')) : link_to(project_url(todo.project), todo.project.name)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

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

                                                                              :collapsible => true,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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
                                                                                              }

                                                                      Align the operands of a condition in an if statement spanning multiple lines.
                                                                      Open

                                                                                (@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

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

                                                                              :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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
                                                                                              }

                                                                      Line is too long. [142/120]
                                                                      Open

                                                                          content_tag(:div, :id => "no_todos_in_view", :class => "container #{container_name}", :style => "display:" + (show ? "block" : "none")) do
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                              :class => 'grip')
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Unnecessary spacing detected.
                                                                      Open

                                                                          return "p#{todo.project_id}"         unless todo.project.nil?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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 spaces for indentation in a hash, relative to the first position after the preceding left parenthesis.
                                                                      Open

                                                                            :class => "todo_notes",
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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
                                                                                              }

                                                                      Line is too long. [145/120]
                                                                      Open

                                                                              :title => t("todos.calendar.#{period}", :month => l(Time.zone.now, :format => "%B"), :next_month => l(1.month.from_now, :format => "%B"))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [134/120]
                                                                      Open

                                                                          options = { :x_defer_alert => false, :class => "icon_defer_item icon_defer_#{days}_item", :id => "defer_#{days}_#{dom_id(todo)}" }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [143/120]
                                                                      Open

                                                                          form_tag toggle_check_todo_path(@todo, :format => 'm'), :method => :put, :class => "mobile-done", :name => "mobile_complete_#{@todo.id}" do
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [132/120]
                                                                      Open

                                                                            check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()")
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => todos_without_project,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                              :locals => { :parent_container_type => parent_container_type, :suppress_dependencies => true, :predecessor => todo }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                              :title => t('todos.drag_action_title'),
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

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

                                                                            :collapsible => true,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.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
                                                                                              }

                                                                      Closing hash brace must be on the line after the last hash element when opening brace is on a separate line from the first hash element.
                                                                      Open

                                                                            :style => "display:none" }) { raw render_text(todo.notes) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks that the closing brace in a hash literal is either on the same line as the last hash element, or a new line.

                                                                      When using the symmetrical (default) style:

                                                                      If a hash's opening brace is on the same line as the first element of the hash, then the closing brace should be on the same line as the last element of the hash.

                                                                      If a hash's opening brace is on the line above the first element of the hash, then the closing brace should be on the line below the last element of the hash.

                                                                      When using the new_line style:

                                                                      The closing brace of a multi-line hash literal must be on the line after the last element of the hash.

                                                                      When using the same_line style:

                                                                      The closing brace of a multi-line hash literal must be on the same line as the last element of the hash.

                                                                      Example: EnforcedStyle: symmetrical (default)

                                                                      # bad
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                        # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }

                                                                      Example: EnforcedStyle: new_line

                                                                      # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # bad
                                                                        { a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }

                                                                      Example: EnforcedStyle: same_line

                                                                      # bad
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2 }

                                                                      Use 2 (not 0) spaces for indenting an expression spanning multiple lines.
                                                                      Open

                                                                            render(:partial => "todos/todo", :collection => collection, :locals => settings)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Space missing to the left of {.
                                                                      Open

                                                                          content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{ |tag| tag_span(tag, mobile) }.join('').html_safe }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks that block braces have or don't have a space before the opening brace depending on configuration.

                                                                      Example:

                                                                      # bad
                                                                      foo.map{ |a|
                                                                        a.bar.to_s
                                                                      }
                                                                      
                                                                      # good
                                                                      foo.map { |a|
                                                                        a.bar.to_s
                                                                      }

                                                                      Line is too long. [154/120]
                                                                      Open

                                                                          image_tag("blank.png", :title => t('todos.star_action'), :class => "todo_star" + (todo.starred? ? " starred" : ""), :id => "star_img_" + todo.id.to_s)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => collection,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_created_blocked
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_completed_from_deferred_or_blocked_state
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_destroyed_from_deferred_or_pending_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Line is too long. [131/120]
                                                                      Open

                                                                            title = "#{t('todos.has_x_pending', :count => pending_count)}: #{todo.pending_successors.to_a.map(&:description).join(', ')}"
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

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

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

                                                                      Line is too long. [135/120]
                                                                      Open

                                                                          text_field_tag name, value, { "size" => 12, "id" => id, "class" => "Date", "autocomplete" => "off" }.update(options.stringify_keys)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :object => deferred_todos + pending_todos,
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_created_deferred ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Surrounding space missing in default value assignment.
                                                                      Open

                                                                        def tag_list(todo=@todo, mobile = false)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_blocked_from_active_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Space inside parentheses detected.
                                                                      Open

                                                                          return @todo.active? && (!@todo.hidden? && !source_view_is(:project) )
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks for spaces inside ordinary round parentheses.

                                                                      Example:

                                                                      # bad
                                                                      f( 3)
                                                                      g = (a + 3 )
                                                                      
                                                                      # good
                                                                      f(3)
                                                                      g = (a + 3)

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :locals => { :settings => settings.reverse_merge!({
                                                                              :collapsible => true,
                                                                              :container_name => "without_project",
                                                                              :parent_container_type => "home"
                                                                              })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the elements of a hash literal if they span more than one line.
                                                                      Open

                                                                            :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Check that the keys, separators, and values of a multi-line hash literal are aligned according to configuration. The configuration options are:

                                                                      - key (left align keys)
                                                                      - separator (align hash rockets and colons, right align keys)
                                                                      - table (left align keys, hash rockets, and values)

                                                                      The treatment of hashes passed as the last argument to a method call can also be configured. The options are:

                                                                      - always_inspect
                                                                      - always_ignore
                                                                      - ignore_implicit (without curly braces)
                                                                      - ignore_explicit (with curly braces)

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: key (default)
                                                                      # EnforcedColonStyle: key (default)
                                                                      
                                                                      # good
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      
                                                                      # bad
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: separator
                                                                      # EnforcedColonStyle: separator
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                         ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba => baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }

                                                                      Example:

                                                                      # EnforcedHashRocketStyle: table
                                                                      # EnforcedColonStyle: table
                                                                      
                                                                      #good
                                                                      {
                                                                        foo: bar,
                                                                        ba:  baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                        :ba  => baz
                                                                      }
                                                                      
                                                                      #bad
                                                                      {
                                                                        foo: bar,
                                                                        ba: baz
                                                                      }
                                                                      {
                                                                        :foo => bar,
                                                                         :ba => baz
                                                                      }

                                                                      Align the operands of a condition in a return statement spanning multiple lines.
                                                                      Open

                                                                            @todo_was_destroyed_from_deferred_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

                                                                      Example:

                                                                      # bad
                                                                      if a +
                                                                      b
                                                                        something
                                                                      end
                                                                      
                                                                      # good
                                                                      if a +
                                                                         b
                                                                        something
                                                                      end

                                                                      Line is too long. [131/120]
                                                                      Open

                                                                          content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{ |tag| tag_span(tag, mobile) }.join('').html_safe }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

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

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

                                                                      Closing hash brace must be on the same line as the last hash element when opening brace is on the same line as the first hash element.
                                                                      Open

                                                                            }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks that the closing brace in a hash literal is either on the same line as the last hash element, or a new line.

                                                                      When using the symmetrical (default) style:

                                                                      If a hash's opening brace is on the same line as the first element of the hash, then the closing brace should be on the same line as the last element of the hash.

                                                                      If a hash's opening brace is on the line above the first element of the hash, then the closing brace should be on the line below the last element of the hash.

                                                                      When using the new_line style:

                                                                      The closing brace of a multi-line hash literal must be on the line after the last element of the hash.

                                                                      When using the same_line style:

                                                                      The closing brace of a multi-line hash literal must be on the same line as the last element of the hash.

                                                                      Example: EnforcedStyle: symmetrical (default)

                                                                      # bad
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                        # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }

                                                                      Example: EnforcedStyle: new_line

                                                                      # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # bad
                                                                        { a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }

                                                                      Example: EnforcedStyle: same_line

                                                                      # bad
                                                                        { a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # bad
                                                                        {
                                                                          a: 1,
                                                                          b: 2
                                                                        }
                                                                      
                                                                        # good
                                                                        {
                                                                          a: 1,
                                                                          b: 2 }
                                                                      
                                                                        # good
                                                                        { a: 1,
                                                                          b: 2 }

                                                                      Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                                                                      Open

                                                                            :class => "recurring_icon", :title => recurrence_pattern_as_text(todo.recurring_todo))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks that the closing brace in a method call is either on the same line as the last method argument, or a new line.

                                                                      When using the symmetrical (default) style:

                                                                      If a method call's opening brace is on the same line as the first argument of the call, then the closing brace should be on the same line as the last argument of the call.

                                                                      If an method call's opening brace is on the line above the first argument of the call, then the closing brace should be on the line below the last argument of the call.

                                                                      When using the new_line style:

                                                                      The closing brace of a multi-line method call must be on the line after the last argument of the call.

                                                                      When using the same_line style:

                                                                      The closing brace of a multi-line method call must be on the same line as the last argument of the call.

                                                                      Example:

                                                                      # symmetrical: bad
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(a,
                                                                          b
                                                                        )
                                                                      
                                                                        # symmetrical: bad
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(
                                                                          a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: bad
                                                                        # same_line: good
                                                                        foo(a,
                                                                          b)
                                                                      
                                                                        # symmetrical: good
                                                                        # new_line: good
                                                                        # same_line: bad
                                                                        foo(
                                                                          a,
                                                                          b
                                                                        )

                                                                      Unused method argument - todo. If it's necessary, use _ or _todo as an argument name to indicate that it won't be used.
                                                                      Open

                                                                        def include_context_link(todo, parent_container_type)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for unused method arguments.

                                                                      Example:

                                                                      # bad
                                                                      
                                                                      def some_method(used, unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Example:

                                                                      # good
                                                                      
                                                                      def some_method(used, _unused, _unused_but_allowed)
                                                                        puts used
                                                                      end

                                                                      Line is too long. [124/120]
                                                                      Open

                                                                          content_tag(:span, :class => "tag #{tag.label}") { link_to(tag.name, tag_path(tag.name, :format => mobile ? :m : nil)) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          link = link_to(image_tag('blank.png', :width => '16', :height => '16', :border => '0'), "#", { :class => 'show_successors', :title => 'Show successors' })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 curly braces around a hash parameter.
                                                                      Open

                                                                            content_tag(:span, { :class => :grey }) { format_date(todo.completed_at) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Favor unless over if for negative conditions.
                                                                      Open

                                                                          raise Exception.new, "no @todo or @successor set" if !todo
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks for uses of if with a negated condition. Only ifs without else are considered. There are three different styles:

                                                                      - both
                                                                      - prefix
                                                                      - postfix

                                                                      Example: EnforcedStyle: both (default)

                                                                      # enforces `unless` for `prefix` and `postfix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      unless foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # bad
                                                                      
                                                                      bar if !foo
                                                                      
                                                                      # good
                                                                      
                                                                      bar unless foo

                                                                      Example: EnforcedStyle: prefix

                                                                      # enforces `unless` for just `prefix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      unless foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      bar if !foo

                                                                      Example: EnforcedStyle: postfix

                                                                      # enforces `unless` for just `postfix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      bar if !foo
                                                                      
                                                                      # good
                                                                      
                                                                      bar unless foo
                                                                      
                                                                      # good
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end

                                                                      Use @down_count.zero? instead of @down_count == 0.
                                                                      Open

                                                                          default_container_empty = (@down_count == 0)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @completed_count.zero? instead of @completed_count == 0.
                                                                      Open

                                                                              container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return 'context'
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 default_container_empty || deferred_container_empty
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 "without_project_container-empty-d"
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                          successors = content_tag(:div, { :class => "todo_successors", :id => dom_id(todo, 'successors'), :style => "display:none" }) do
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Favor unless over if for negative conditions.
                                                                      Open

                                                                          raise Exception.new, "no todo set in TodosHelper::todo_container_empty_id. You probably did not assign @original_item" if !todo
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks for uses of if with a negated condition. Only ifs without else are considered. There are three different styles:

                                                                      - both
                                                                      - prefix
                                                                      - postfix

                                                                      Example: EnforcedStyle: both (default)

                                                                      # enforces `unless` for `prefix` and `postfix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      unless foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # bad
                                                                      
                                                                      bar if !foo
                                                                      
                                                                      # good
                                                                      
                                                                      bar unless foo

                                                                      Example: EnforcedStyle: prefix

                                                                      # enforces `unless` for just `prefix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      unless foo
                                                                        bar
                                                                      end
                                                                      
                                                                      # good
                                                                      
                                                                      bar if !foo

                                                                      Example: EnforcedStyle: postfix

                                                                      # enforces `unless` for just `postfix` conditionals
                                                                      
                                                                      # bad
                                                                      
                                                                      bar if !foo
                                                                      
                                                                      # good
                                                                      
                                                                      bar unless foo
                                                                      
                                                                      # good
                                                                      
                                                                      if !foo
                                                                        bar
                                                                      end

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                          return @remaining_in_context == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @completed_count.zero? instead of @completed_count == 0.
                                                                      Open

                                                                              container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return link + notes
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @todo.active? && (!@todo.hidden? && !source_view_is(:project) )
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @new_context_created && !source_view_is(:project)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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.

                                                                      Line is too long. [134/120]
                                                                      Open

                                                                              container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return link + successors
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 false
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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.

                                                                      Line is too long. [164/120]
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if (todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0) ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant return detected.
                                                                      Open

                                                                          return DateLabelHelper::ShowFromDateView.new(date, prefs).show_from_date_html
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 "context_#{todo.context_id}"
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 %r around regular expression.
                                                                      Open

                                                                          s.gsub(/(<\/[^<]+>)/, '\1 ').chomp(' ')
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop enforces using // or %r around regular expressions.

                                                                      Example: EnforcedStyle: slashes (default)

                                                                      # bad
                                                                      snake_case = %r{^[\dA-Z_]+$}
                                                                      
                                                                      # bad
                                                                      regex = %r{
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      }x
                                                                      
                                                                      # good
                                                                      snake_case = /^[\dA-Z_]+$/
                                                                      
                                                                      # good
                                                                      regex = /
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      /x

                                                                      Example: EnforcedStyle: percent_r

                                                                      # bad
                                                                      snake_case = /^[\dA-Z_]+$/
                                                                      
                                                                      # bad
                                                                      regex = /
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      /x
                                                                      
                                                                      # good
                                                                      snake_case = %r{^[\dA-Z_]+$}
                                                                      
                                                                      # good
                                                                      regex = %r{
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      }x

                                                                      Example: EnforcedStyle: mixed

                                                                      # bad
                                                                      snake_case = %r{^[\dA-Z_]+$}
                                                                      
                                                                      # bad
                                                                      regex = /
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      /x
                                                                      
                                                                      # good
                                                                      snake_case = /^[\dA-Z_]+$/
                                                                      
                                                                      # good
                                                                      regex = %r{
                                                                        foo
                                                                        (bar)
                                                                        (baz)
                                                                      }x

                                                                      Example: AllowInnerSlashes: false (default)

                                                                      # If `false`, the cop will always recommend using `%r` if one or more
                                                                      # slashes are found in the regexp string.
                                                                      
                                                                      # bad
                                                                      x =~ /home\//
                                                                      
                                                                      # good
                                                                      x =~ %r{home/}

                                                                      Example: AllowInnerSlashes: true

                                                                      # good
                                                                      x =~ /home\//

                                                                      Line is too long. [170/120]
                                                                      Open

                                                                            page.tag      { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                            content_tag(:a, { :title => title }) { content_tag(:span, { :class => :orange }) { t('todos.pending') } }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Use @remaining_deferred_count.zero? instead of @remaining_deferred_count == 0.
                                                                      Open

                                                                          deferred_container_empty = (@todo.deferred? && @remaining_deferred_count == 0)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return link_to(
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 false
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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.

                                                                      Line is too long. [128/120]
                                                                      Open

                                                                          return project_container_id(todo)   if source_view_is_one_of(:todo, :tag, :project, :context) && @group_view_by == 'project'
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Prefer to_s over string interpolation.
                                                                      Open

                                                                          settings.reverse_merge!({ :id => "#{settings[:container_name]}" })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for strings that are just an interpolated expression.

                                                                      Example:

                                                                      # bad
                                                                      "#{@var}"
                                                                      
                                                                      # good
                                                                      @var.to_s
                                                                      
                                                                      # good if @var is already a String
                                                                      @var

                                                                      Line is too long. [159/120]
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          settings.reverse_merge!({
                                                                            :id => "#{settings[:container_name]}_container",
                                                                            :class => "container #{settings[:container_name]}",
                                                                            })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

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

                                                                          unless todo.completed?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @down_count.zero? instead of @down_count == 0.
                                                                      Open

                                                                          return @down_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @completed_count.zero? instead of @completed_count == 0.
                                                                      Open

                                                                              container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

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

                                                                      Line is too long. [136/120]
                                                                      Open

                                                                            page.context  { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @todo_should_be_hidden }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [130/120]
                                                                      Open

                                                                            page.project  { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @project_changed }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          settings.reverse_merge!({
                                                                              :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
                                                                            })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 link_to(t('todos.defer_x_days', :count => days), url, options)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 html
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 moved_project || moved_context || moved_without_project
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 %w or %W for an array of words.
                                                                      Open

                                                                          return true if ['stats', 'search'].include?(parent_container_type)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop can check for array literals made up of word-like strings, that are not using the %w() syntax.

                                                                      Alternatively, it can check for uses of the %w() syntax, in projects which do not want to include that syntax.

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

                                                                      Example: EnforcedStyle: percent (default)

                                                                      # good
                                                                      %w[foo bar baz]
                                                                      
                                                                      # bad
                                                                      ['foo', 'bar', 'baz']

                                                                      Example: EnforcedStyle: brackets

                                                                      # good
                                                                      ['foo', 'bar', 'baz']
                                                                      
                                                                      # bad
                                                                      %w[foo bar baz]

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          settings.reverse_merge!({ :id => "#{settings[:container_name]}" })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 curly braces around a hash parameter.
                                                                      Open

                                                                            { :class => 'show_notes', :title => 'Show notes' })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                      require 'staleness'
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 curly braces around a hash parameter.
                                                                      Open

                                                                            :locals => { :settings => settings.reverse_merge!({
                                                                              :collapsible => true,
                                                                              :container_name => "without_project",
                                                                              :parent_container_type => "home"
                                                                              })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Use @remaining_hidden_count.zero? instead of @remaining_hidden_count == 0.
                                                                      Open

                                                                                (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                            content_tag(:a, { :title => title }) { content_tag(:span, { :class => :orange }) { t('todos.pending') } }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @new_project_created && !source_view_is(:context)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 a guard clause instead of wrapping the code inside a conditional expression.
                                                                      Open

                                                                          unless todo.pending_successors.empty?
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @remaining_in_context == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                              container_id = project_container_empty_id(@original_item) if @remaining_in_context == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return @todo_was_deferred_from_active_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @remaining_deferred_or_pending_count.zero? instead of @remaining_deferred_or_pending_count == 0.
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return false
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 context_container_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 to_s over string interpolation.
                                                                      Open

                                                                              :container_name => "#{period}",
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for strings that are just an interpolated expression.

                                                                      Example:

                                                                      # bad
                                                                      "#{@var}"
                                                                      
                                                                      # good
                                                                      @var.to_s
                                                                      
                                                                      # good if @var is already a String
                                                                      @var

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                            { :class => 'todo_attachment', title: 'Get attachments of this todo' }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Favor modifier if usage when having a single-line body. Another good alternative is the usage of control flow &&/||.
                                                                      Open

                                                                          if settings[:collapsible]
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Checks for if and unless statements that would fit on one line if written as a modifier if/unless. The maximum line length is configured in the Metrics/LineLength cop.

                                                                      Example:

                                                                      # bad
                                                                      if condition
                                                                        do_stuff(bar)
                                                                      end
                                                                      
                                                                      unless qux.empty?
                                                                        Foo.do_something
                                                                      end
                                                                      
                                                                      # good
                                                                      do_stuff(bar) if condition
                                                                      Foo.do_something unless qux.empty?

                                                                      Use @remaining_deferred_or_pending_count.zero? instead of @remaining_deferred_or_pending_count == 0.
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if (todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0) ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return link_to(
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @down_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 "without_project_container"
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                            check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()")
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                      Use %w or %W for an array of words.
                                                                      Open

                                                                          return true if ['stats', 'search'].include?(parent_container_type)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop can check for array literals made up of word-like strings, that are not using the %w() syntax.

                                                                      Alternatively, it can check for uses of the %w() syntax, in projects which do not want to include that syntax.

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

                                                                      Example: EnforcedStyle: percent (default)

                                                                      # good
                                                                      %w[foo bar baz]
                                                                      
                                                                      # bad
                                                                      ['foo', 'bar', 'baz']

                                                                      Example: EnforcedStyle: brackets

                                                                      # good
                                                                      ['foo', 'bar', 'baz']
                                                                      
                                                                      # bad
                                                                      %w[foo bar baz]

                                                                      Line is too long. [131/120]
                                                                      Open

                                                                          raise Exception.new, "no todo set in TodosHelper::todo_container_empty_id. You probably did not assign @original_item" if !todo
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          render(:partial => collection, :locals => { :settings => settings.reverse_merge!({
                                                                            :collapsible => true,
                                                                            :show_empty_containers => @show_empty_containers,
                                                                            :parent_container_type => @group_view_by
                                                                          }) })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            page.context { return @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return false
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 needs_new_project || needs_new_context
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 rescue in its modifier form.
                                                                      Open

                                                                            :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for uses of rescue in its modifier form.

                                                                      Example:

                                                                      # bad
                                                                      some_method rescue handle_error
                                                                      
                                                                      # good
                                                                      begin
                                                                        some_method
                                                                      rescue
                                                                        handle_error
                                                                      end

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                          notes = content_tag(:div, {
                                                                            :class => "todo_notes",
                                                                            :id => dom_id(todo, 'notes'),
                                                                            :style => "display:none" }) { raw render_text(todo.notes) }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

                                                                      Use @remaining_deferred_or_pending_count.zero? instead of @remaining_deferred_or_pending_count == 0.
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_deferred_or_pending_count.zero? instead of @remaining_deferred_or_pending_count == 0.
                                                                      Open

                                                                                (@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                              container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return "#{done} #{due} #{item_notes}\n" +
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 context_container_empty_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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.

                                                                      Line is too long. [124/120]
                                                                      Open

                                                                            page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [159/120]
                                                                      Open

                                                                              container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Line is too long. [123/120]
                                                                      Open

                                                                                (@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed))
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

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

                                                                          if todo.due?
                                                                            sort_by_due = todo.due.strftime format
                                                                          else
                                                                            sort_by_due = "Z" * 17 # length of format string
                                                                          end
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      Use @remaining_in_context.zero? instead of @remaining_in_context == 0.
                                                                      Open

                                                                            return @remaining_in_context == 0 && (
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Use @remaining_hidden_count.zero? instead of @remaining_hidden_count == 0.
                                                                      Open

                                                                              container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                                                                      The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                                                                      The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                                                                      Example: EnforcedStyle: predicate (default)

                                                                      # bad
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0
                                                                      
                                                                      # good
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?

                                                                      Example: EnforcedStyle: comparison

                                                                      # bad
                                                                      
                                                                      foo.zero?
                                                                      foo.negative?
                                                                      bar.baz.positive?
                                                                      
                                                                      # good
                                                                      
                                                                      foo == 0
                                                                      0 > foo
                                                                      bar.baz > 0

                                                                      Redundant return detected.
                                                                      Open

                                                                          return context_container_id(todo)
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 "c#{todo.context_id}-empty-d"
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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

                                                                          link_to(t('todos.convert_to_project'), url, { :class => "icon_item_to_project", :id => dom_id(todo, "to_project") })
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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})

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

                                                                          if @group_view_by == 'project'
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 @todo_was_activated_from_deferred_state ||
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 rescue in its modifier form.
                                                                      Open

                                                                            :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for uses of rescue in its modifier form.

                                                                      Example:

                                                                      # bad
                                                                      some_method rescue handle_error
                                                                      
                                                                      # good
                                                                      begin
                                                                        some_method
                                                                      rescue
                                                                        handle_error
                                                                      end

                                                                      Redundant curly braces around a hash parameter.
                                                                      Open

                                                                            { :class => "delete_dependency_button", :x_predecessors_id => predecessor.id }
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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 false
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_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.

                                                                      Omit parentheses for ternary conditions.
                                                                      Open

                                                                          collection = (@group_view_by == 'context') ? @contexts_to_show : @projects_to_show
                                                                      Severity: Minor
                                                                      Found in app/helpers/todos_helper.rb by rubocop

                                                                      This cop checks for the presence of parentheses around ternary conditions. It is configurable to enforce inclusion or omission of parentheses using EnforcedStyle. Omission is only enforced when removing the parentheses won't cause a different behavior.

                                                                      Example: EnforcedStyle: requirenoparentheses (default)

                                                                      # bad
                                                                      foo = (bar?) ? a : b
                                                                      foo = (bar.baz?) ? a : b
                                                                      foo = (bar && baz) ? a : b
                                                                      
                                                                      # good
                                                                      foo = bar? ? a : b
                                                                      foo = bar.baz? ? a : b
                                                                      foo = bar && baz ? a : b

                                                                      Example: EnforcedStyle: require_parentheses

                                                                      # bad
                                                                      foo = bar? ? a : b
                                                                      foo = bar.baz? ? a : b
                                                                      foo = bar && baz ? a : b
                                                                      
                                                                      # good
                                                                      foo = (bar?) ? a : b
                                                                      foo = (bar.baz?) ? a : b
                                                                      foo = (bar && baz) ? a : b

                                                                      Example: EnforcedStyle: requireparentheseswhen_complex

                                                                      # bad
                                                                      foo = (bar?) ? a : b
                                                                      foo = (bar.baz?) ? a : b
                                                                      foo = bar && baz ? a : b
                                                                      
                                                                      # good
                                                                      foo = bar? ? a : b
                                                                      foo = bar.baz? ? a : b
                                                                      foo = (bar && baz) ? a : b

                                                                      There are no issues that match your filters.

                                                                      Category
                                                                      Status