metaminded/tabulatr2

View on GitHub
lib/tabulatr/data/data.rb

Summary

Maintainability
A
2 hrs
Test Coverage

Assignment Branch Condition size for data_for_table is too high. [33.12/15]
Open

  def data_for_table(params, locals: {}, default_order: nil, controller: nil, &block)

    @batch_actions = block if block_given?
    @controller    = controller
    @default_order = default_order
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method has too many lines. [28/10]
Open

  def data_for_table(params, locals: {}, default_order: nil, controller: nil, &block)

    @batch_actions = block if block_given?
    @controller    = controller
    @default_order = default_order
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

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

Assignment Branch Condition size for initialize is too high. [26.19/15]
Open

  def initialize(relation)
    @relation   = relation
    @base       = self.class.main_class rescue nil
    @base       ||= relation.respond_to?(:klass) ? relation.klass : relation
    @table_name = @base.table_name
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method has too many lines. [14/10]
Open

  def initialize(relation)
    @relation   = relation
    @base       = self.class.main_class rescue nil
    @base       ||= relation.respond_to?(:klass) ? relation.klass : relation
    @table_name = @base.table_name
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

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

Cyclomatic complexity for initialize is too high. [7/6]
Open

  def initialize(relation)
    @relation   = relation
    @base       = self.class.main_class rescue nil
    @base       ||= relation.respond_to?(:klass) ? relation.klass : relation
    @table_name = @base.table_name
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

This cop checks that the cyclomatic complexity of methods is not higher than the configured maximum. The cyclomatic complexity is the number of linearly independent paths through a method. The algorithm counts decision points and adds one.

An if statement (or unless or ?:) increases the complexity by one. An else branch does not, since it doesn't add a decision point. The && operator (or keyword and) can be converted to a nested if statement, and ||/or is shorthand for a sequence of ifs, so they also add one. Loops can be said to have an exit condition, so they add one.

Assignment Branch Condition size for join_required_tables is too high. [16.31/15]
Open

  def join_required_tables(params)
    if params[:arguments].present?
      tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
            s.split(':').first
          end.uniq.map(&:to_sym))
Severity: Minor
Found in lib/tabulatr/data/data.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method data_for_table has 28 lines of code (exceeds 25 allowed). Consider refactoring.
Open

  def data_for_table(params, locals: {}, default_order: nil, controller: nil, &block)

    @batch_actions = block if block_given?
    @controller    = controller
    @default_order = default_order
Severity: Minor
Found in lib/tabulatr/data/data.rb - About 1 hr to fix

    Method initialize has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

      def initialize(relation)
        @relation   = relation
        @base       = self.class.main_class rescue nil
        @base       ||= relation.respond_to?(:klass) ? relation.klass : relation
        @table_name = @base.table_name
    Severity: Minor
    Found in lib/tabulatr/data/data.rb - About 55 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

    Line is too long. [98/80]
    Open

        @search     = self.class.instance_variable_get('@search')     || HashWithIndifferentAccess.new
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Line is too long. [84/80]
    Open

        batch_result = execute_batch_actions(batch_params(params), check_params(params))
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Do not use parentheses for method calls with no arguments.
    Open

        @includes   = Set.new()
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for unwanted parentheses in parameterless method calls.

    Example:

    # bad
    object.some_method()
    
    # good
    object.some_method

    Surrounding space missing in default value assignment.
    Open

        found.define_singleton_method(:to_tabulatr_json) do |klass=nil|
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

    Example:

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

    Line is too long. [115/80]
    Open

      def batch_params(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_batch"]  || params["batch"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

        if tabulatr_checked.present?
    Severity: Minor
    Found in lib/tabulatr/data/data.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?

    Avoid single-line method definitions.
    Open

      def filter_params(params) params["#{Tabulatr::Utility.formatted_name(@base.name)}_filter"] || params["filter"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for single-line method definitions that contain a body. It will accept single-line methods with no body.

    Example:

    # bad
    def some_method; body end
    def link_to(url); {:name => url}; end
    def @table.columns; super; end
    
    # good
    def no_op; end
    def self.resource_class=(klass); end
    def @table.columns; end

    Use empty lines between method definitions.
    Open

      def sort_params(params)   params["#{Tabulatr::Utility.formatted_name(@base.name)}_sort"]   || params["sort"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks whether method definitions are separated by one empty line.

    NumberOfEmptyLines can be and integer (e.g. 1 by default) or an array (e.g. [1, 2]) to specificy a minimum and a maximum of empty lines.

    AllowAdjacentOneLineDefs can be used to configure is adjacent one line methods definitions are an offense

    Example:

    # bad
    def a
    end
    def b
    end

    Example:

    # good
    def a
    end
    
    def b
    end

    Avoid single-line method definitions.
    Open

      def sort_params(params)   params["#{Tabulatr::Utility.formatted_name(@base.name)}_sort"]   || params["sort"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for single-line method definitions that contain a body. It will accept single-line methods with no body.

    Example:

    # bad
    def some_method; body end
    def link_to(url); {:name => url}; end
    def @table.columns; super; end
    
    # good
    def no_op; end
    def self.resource_class=(klass); end
    def @table.columns; end

    Don't use parentheses around a method call.
    Open

          tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
                s.split(':').first
              end.uniq.map(&:to_sym))
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

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

        self.class.instance_variable_get("@table_columns")
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

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

      def search_param(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_search"] || params["search"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

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

      def sort_params(params)   params["#{Tabulatr::Utility.formatted_name(@base.name)}_sort"]   || params["sort"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

    Operator ||= should be surrounded by a single space.
    Open

        @base       ||= relation.respond_to?(:klass) ? relation.klass : relation
    Severity: Minor
    Found in lib/tabulatr/data/data.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

    Add parentheses to nested method call search_param params.
    Open

        apply_search(search_param params)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for unparenthesized method calls in the argument list of a parenthesized method call.

    Example:

    # good
    method1(method2(arg), method3(arg))
    
    # bad
    method1(method2 arg, method3, arg)

    Use the new Ruby 1.9 hash syntax.
    Open

            :pagesize => pagination[:pagesize],
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Use the new Ruby 1.9 hash syntax.
    Open

            :append => append,
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Use the new Ruby 1.9 hash syntax.
    Open

            :table_id => params[:table_id]
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Extra blank line detected.
    Open

    
        found.define_singleton_method(:to_tabulatr_json) do |klass=nil|
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cops checks for two or more consecutive blank lines.

    Example:

    # bad - It has two empty lines.
    some_method
    # one empty line
    # two empty lines
    some_method
    
    # good
    some_method
    # one empty line
    some_method

    Space between { and | missing.
    Open

          tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks that block braces have or don't have surrounding space inside them on configuration. For blocks taking parameters, it checks that the left brace has or doesn't have trailing space depending on configuration.

    Example: EnforcedStyle: space (default)

    # The `space` style enforces that block braces have
    # surrounding space.
    
    # bad
    some_array.each {puts e}
    
    # good
    some_array.each { puts e }

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that block braces don't
    # have surrounding space.
    
    # bad
    some_array.each { puts e }
    
    # good
    some_array.each {puts e}

    Example: EnforcedStyleForEmptyBraces: no_space (default)

    # The `no_space` EnforcedStyleForEmptyBraces style enforces that
    # block braces don't have a space in between when empty.
    
    # bad
    some_array.each {   }
    some_array.each {  }
    some_array.each { }
    
    # good
    some_array.each {}

    Example: EnforcedStyleForEmptyBraces: space

    # The `space` EnforcedStyleForEmptyBraces style enforces that
    # block braces have at least a spece in between when empty.
    
    # bad
    some_array.each {}
    
    # good
    some_array.each { }
    some_array.each {  }
    some_array.each {   }

    Example: SpaceBeforeBlockParameters: true (default)

    # The SpaceBeforeBlockParameters style set to `true` enforces that
    # there is a space between `{` and `|`. Overrides `EnforcedStyle`
    # if there is a conflict.
    
    # bad
    [1, 2, 3].each {|n| n * 2 }
    
    # good
    [1, 2, 3].each { |n| n * 2 }

    Example: SpaceBeforeBlockParameters: true

    # The SpaceBeforeBlockParameters style set to `false` enforces that
    # there is no space between `{` and `|`. Overrides `EnforcedStyle`
    # if there is a conflict.
    
    # bad
    [1, 2, 3].each { |n| n * 2 }
    
    # good
    [1, 2, 3].each {|n| n * 2 }

    Space missing inside }.
    Open

          tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks that block braces have or don't have surrounding space inside them on configuration. For blocks taking parameters, it checks that the left brace has or doesn't have trailing space depending on configuration.

    Example: EnforcedStyle: space (default)

    # The `space` style enforces that block braces have
    # surrounding space.
    
    # bad
    some_array.each {puts e}
    
    # good
    some_array.each { puts e }

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that block braces don't
    # have surrounding space.
    
    # bad
    some_array.each { puts e }
    
    # good
    some_array.each {puts e}

    Example: EnforcedStyleForEmptyBraces: no_space (default)

    # The `no_space` EnforcedStyleForEmptyBraces style enforces that
    # block braces don't have a space in between when empty.
    
    # bad
    some_array.each {   }
    some_array.each {  }
    some_array.each { }
    
    # good
    some_array.each {}

    Example: EnforcedStyleForEmptyBraces: space

    # The `space` EnforcedStyleForEmptyBraces style enforces that
    # block braces have at least a spece in between when empty.
    
    # bad
    some_array.each {}
    
    # good
    some_array.each { }
    some_array.each {  }
    some_array.each {   }

    Example: SpaceBeforeBlockParameters: true (default)

    # The SpaceBeforeBlockParameters style set to `true` enforces that
    # there is a space between `{` and `|`. Overrides `EnforcedStyle`
    # if there is a conflict.
    
    # bad
    [1, 2, 3].each {|n| n * 2 }
    
    # good
    [1, 2, 3].each { |n| n * 2 }

    Example: SpaceBeforeBlockParameters: true

    # The SpaceBeforeBlockParameters style set to `false` enforces that
    # there is no space between `{` and `|`. Overrides `EnforcedStyle`
    # if there is a conflict.
    
    # bad
    [1, 2, 3].each { |n| n * 2 }
    
    # good
    [1, 2, 3].each {|n| n * 2 }

    Line is too long. [116/80]
    Open

      def search_param(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_search"] || params["search"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Line is too long. [97/80]
    Open

        # @relation = @relation.includes(@includes.map(&:to_sym)).references(@includes.map(&:to_sym))
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Use nested module/class definitions instead of compact style.
    Open

    class Tabulatr::Data
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks the style of children definitions at classes and modules. Basically there are two different styles:

    Example: EnforcedStyle: nested (default)

    # good
    # have each child on its own line
    class Foo
      class Bar
      end
    end

    Example: EnforcedStyle: compact

    # good
    # combine definitions as much as possible
    class Foo::Bar
    end

    The compact style is only forced for classes/modules with one child.

    Avoid using rescue in its modifier form.
    Open

        @base       = self.class.main_class rescue nil
    Severity: Minor
    Found in lib/tabulatr/data/data.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

    Use self-assignment shorthand +=.
    Open

          @includes = @includes + tt
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop enforces the use the shorthand for self-assignment.

    Example:

    # bad
    x = x + 1
    
    # good
    x += 1

    Use empty lines between method definitions.
    Open

      def check_params(params)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks whether method definitions are separated by one empty line.

    NumberOfEmptyLines can be and integer (e.g. 1 by default) or an array (e.g. [1, 2]) to specificy a minimum and a maximum of empty lines.

    AllowAdjacentOneLineDefs can be used to configure is adjacent one line methods definitions are an offense

    Example:

    # bad
    def a
    end
    def b
    end

    Example:

    # good
    def a
    end
    
    def b
    end

    Space missing to the left of {.
    Open

          tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
    Severity: Minor
    Found in lib/tabulatr/data/data.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. [114/80]
    Open

      def sort_params(params)   params["#{Tabulatr::Utility.formatted_name(@base.name)}_sort"]   || params["sort"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

        if tabulatr_checked.present?
    Severity: Minor
    Found in lib/tabulatr/data/data.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

    Unnecessary spacing detected.
    Open

        @search     = self.class.instance_variable_get('@search')     || HashWithIndifferentAccess.new
    Severity: Minor
    Found in lib/tabulatr/data/data.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 the new Ruby 1.9 hash syntax.
    Open

            :count => pagination[:count],
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Add parentheses to nested method call sort_params params.
    Open

        apply_sorting(sort_params params)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for unparenthesized method calls in the argument list of a parenthesized method call.

    Example:

    # good
    method1(method2(arg), method3(arg))
    
    # bad
    method1(method2 arg, method3, arg)

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

        tabulatr_checked = params["tabulatr_checked"]
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

    Line is too long. [116/80]
    Open

      def filter_params(params) params["#{Tabulatr::Utility.formatted_name(@base.name)}_filter"] || params["filter"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

        if batch_param.present? && @batch_actions.present?
    Severity: Minor
    Found in lib/tabulatr/data/data.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

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

      def filter_params(params) params["#{Tabulatr::Utility.formatted_name(@base.name)}_filter"] || params["filter"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

    Use empty lines between method definitions.
    Open

      def batch_params(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_batch"]  || params["batch"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks whether method definitions are separated by one empty line.

    NumberOfEmptyLines can be and integer (e.g. 1 by default) or an array (e.g. [1, 2]) to specificy a minimum and a maximum of empty lines.

    AllowAdjacentOneLineDefs can be used to configure is adjacent one line methods definitions are an offense

    Example:

    # bad
    def a
    end
    def b
    end

    Example:

    # good
    def a
    end
    
    def b
    end

    Operator || should be surrounded by a single space.
    Open

        @search     = self.class.instance_variable_get('@search')     || HashWithIndifferentAccess.new
    Severity: Minor
    Found in lib/tabulatr/data/data.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

    Use the new Ruby 1.9 hash syntax.
    Open

            :pages => pagination[:pages],
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    end at 128, 10 is not aligned with params[:arguments].split(",").select{|s| s[':']}.map do |s| at 126, 12 or tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s| at 126, 6.
    Open

              end.uniq.map(&:to_sym))
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

    Three modes are supported through the EnforcedStyleAlignWith configuration parameter:

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

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

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

    Example: EnforcedStyleAlignWith: either (default)

    # bad
    
    foo.bar
       .each do
         baz
           end
    
    # good
    
    variable = lambda do |i|
      i
    end

    Example: EnforcedStyleAlignWith: startofblock

    # bad
    
    foo.bar
       .each do
         baz
           end
    
    # good
    
    foo.bar
      .each do
         baz
       end

    Example: EnforcedStyleAlignWith: startofline

    # bad
    
    foo.bar
       .each do
         baz
           end
    
    # good
    
    foo.bar
      .each do
         baz
    end

    Line is too long. [100/80]
    Open

        append = params[:append].present? ? Tabulatr::Utility.string_to_boolean(params[:append]) : false
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Missing top-level class documentation comment.
    Open

    class Tabulatr::Data
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

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

    Example:

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

    Use def with parentheses when there are parameters.
    Open

      def execute_batch_actions batch_param, selected_ids
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cops checks for parentheses around the arguments in method definitions. Both instance and class/singleton methods are checked.

    Example: EnforcedStyle: require_parentheses (default)

    # The `require_parentheses` style requires method definitions
    # to always use parentheses
    
    # bad
    def bar num1, num2
      num1 + num2
    end
    
    def foo descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name
      do_something
    end
    
    # good
    def bar(num1, num2)
      num1 + num2
    end
    
    def foo(descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name)
      do_something
    end

    Example: EnforcedStyle: requirenoparentheses

    # The `require_no_parentheses` style requires method definitions
    # to never use parentheses
    
    # bad
    def bar(num1, num2)
      num1 + num2
    end
    
    def foo(descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name)
      do_something
    end
    
    # good
    def bar num1, num2
      num1 + num2
    end
    
    def foo descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name
      do_something
    end

    Example: EnforcedStyle: requirenoparenthesesexceptmultiline

    # The `require_no_parentheses_except_multiline` style prefers no
    # parantheses when method definition arguments fit on single line,
    # but prefers parantheses when arguments span multiple lines.
    
    # bad
    def bar(num1, num2)
      num1 + num2
    end
    
    def foo descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name
      do_something
    end
    
    # good
    def bar num1, num2
      num1 + num2
    end
    
    def foo(descriptive_var_name,
            another_descriptive_var_name,
            last_descriptive_var_name)
      do_something
    end

    Add parentheses to nested method call filter_params params.
    Open

        apply_filters(filter_params params)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for unparenthesized method calls in the argument list of a parenthesized method call.

    Example:

    # good
    method1(method2(arg), method3(arg))
    
    # bad
    method1(method2 arg, method3, arg)

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

      def batch_params(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_batch"]  || params["batch"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

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

          tt = (params[:arguments].split(",").select{|s| s[':']}.map do |s|
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

    Extra empty line detected at class body end.
    Open

    
    end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

    Example: EnforcedStyle: empty_lines

    # good
    
    class Foo
    
      def bar
        # ...
      end
    
    end

    Example: EnforcedStyle: emptylinesexcept_namespace

    # good
    
    class Foo
      class Bar
    
        # ...
    
      end
    end

    Example: EnforcedStyle: emptylinesspecial

    # good
    class Foo
    
      def bar; end
    
    end

    Example: EnforcedStyle: noemptylines (default)

    # good
    
    class Foo
      def bar
        # ...
      end
    end

    Extra empty line detected at method body beginning.
    Open

    
        @batch_actions = block if block_given?
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cops checks if empty lines exist around the bodies of methods.

    Example:

    # good
    
    def foo
      # ...
    end
    
    # bad
    
    def bar
    
      # ...
    
    end

    Line is too long. [83/80]
    Open

          col.klass = @base.reflect_on_association(col.table_name).try(:klass) || @base
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Use the new Ruby 1.9 hash syntax.
    Open

          { :page => pagination[:page],
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Use the new Ruby 1.9 hash syntax.
    Open

            :total => total,
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks hash literal syntax.

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

    A separate offense is registered for each problematic pair.

    The supported styles are:

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

    Example: EnforcedStyle: ruby19 (default)

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

    Example: EnforcedStyle: hash_rockets

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

    Example: EnforcedStyle: nomixedkeys

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

    Example: EnforcedStyle: ruby19nomixed_keys

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

    Extra empty line detected at class body beginning.
    Open

    
      def initialize(relation)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

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

    Example: EnforcedStyle: empty_lines

    # good
    
    class Foo
    
      def bar
        # ...
      end
    
    end

    Example: EnforcedStyle: emptylinesexcept_namespace

    # good
    
    class Foo
      class Bar
    
        # ...
    
      end
    end

    Example: EnforcedStyle: emptylinesspecial

    # good
    class Foo
    
      def bar; end
    
    end

    Example: EnforcedStyle: noemptylines (default)

    # good
    
    class Foo
      def bar
        # ...
      end
    end

    Line is too long. [85/80]
    Open

      def data_for_table(params, locals: {}, default_order: nil, controller: nil, &block)
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Line is too long. [81/80]
    Open

        return batch_result if batch_result.is_a? Tabulatr::Responses::DirectResponse
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    Use empty lines between method definitions.
    Open

      def search_param(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_search"] || params["search"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks whether method definitions are separated by one empty line.

    NumberOfEmptyLines can be and integer (e.g. 1 by default) or an array (e.g. [1, 2]) to specificy a minimum and a maximum of empty lines.

    AllowAdjacentOneLineDefs can be used to configure is adjacent one line methods definitions are an offense

    Example:

    # bad
    def a
    end
    def b
    end

    Example:

    # good
    def a
    end
    
    def b
    end

    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 lib/tabulatr/data/data.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 }

    Avoid the use of the case equality operator ===.
    Open

          col.determine_appropriate_filter! if col.col_options.filter === true
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for uses of the case equality operator(===).

    Example:

    # bad
    Array === something
    (1..100) === 7
    /something/ === some_string
    
    # good
    something.is_a?(Array)
    (1..100).include?(7)
    some_string =~ /something/

    Avoid single-line method definitions.
    Open

      def search_param(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_search"] || params["search"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for single-line method definitions that contain a body. It will accept single-line methods with no body.

    Example:

    # bad
    def some_method; body end
    def link_to(url); {:name => url}; end
    def @table.columns; super; end
    
    # good
    def no_op; end
    def self.resource_class=(klass); end
    def @table.columns; end

    Avoid single-line method definitions.
    Open

      def batch_params(params)  params["#{Tabulatr::Utility.formatted_name(@base.name)}_batch"]  || params["batch"] end
    Severity: Minor
    Found in lib/tabulatr/data/data.rb by rubocop

    This cop checks for single-line method definitions that contain a body. It will accept single-line methods with no body.

    Example:

    # bad
    def some_method; body end
    def link_to(url); {:name => url}; end
    def @table.columns; super; end
    
    # good
    def no_op; end
    def self.resource_class=(klass); end
    def @table.columns; end

    There are no issues that match your filters.

    Category
    Status