ClusterLabs/hawk

View on GitHub
hawk/app/lib/util.rb

Summary

Maintainability
C
1 day
Test Coverage

Module has too many lines. [351/100]
Open

module Util

  # From http://mentalized.net/journal/2011/04/14/ruby_how_to_check_if_a_string_is_numeric/
  def numeric?(n)
    Float(n) != nil rescue false
Severity: Minor
Found in hawk/app/lib/util.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.

Assignment Branch Condition size for popen3 is too high. [51.12/15]
Open

  def popen3(user, *cmd)
    raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
    pw = IO::pipe   # pipe[0] for read, pipe[1] for write
    pr = IO::pipe
    pe = IO::pipe
Severity: Minor
Found in hawk/app/lib/util.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

Assignment Branch Condition size for has_feature? is too high. [40.84/15]
Open

  def has_feature?(feature)
    case feature
    when :crm_history
      Rails.cache.fetch(:has_crm_history) {
        Util.safe_x('echo', 'quit', '|', '/usr/sbin/crm history', '2>&1')
Severity: Minor
Found in hawk/app/lib/util.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

File util.rb has 352 lines of code (exceeds 250 allowed). Consider refactoring.
Open

module Util

  # From http://mentalized.net/journal/2011/04/14/ruby_how_to_check_if_a_string_is_numeric/
  def numeric?(n)
    Float(n) != nil rescue false
Severity: Minor
Found in hawk/app/lib/util.rb - About 4 hrs to fix

    Assignment Branch Condition size for safe_x is too high. [35.24/15]
    Open

      def safe_x(*cmd)
        raise SecurityError, "Util::safe_x called with < 2 args" if cmd.length < 2
        Rails.logger.debug "Executing `#{cmd.join(' ')}` through `safe_x`"
    
        pr = IO::pipe   # pipe[0] for read, pipe[1] for write
    Severity: Minor
    Found in hawk/app/lib/util.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

    Assignment Branch Condition size for run_as is too high. [27.91/15]
    Open

      def run_as(user, pass, *cmd)
        if Hash === cmd.last
          opts = cmd.pop.dup
        else
          opts = {}
    Severity: Minor
    Found in hawk/app/lib/util.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. [40/30]
    Open

      def has_feature?(feature)
        case feature
        when :crm_history
          Rails.cache.fetch(:has_crm_history) {
            Util.safe_x('echo', 'quit', '|', '/usr/sbin/crm history', '2>&1')
    Severity: Minor
    Found in hawk/app/lib/util.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 diff is too high. [22.23/15]
    Open

      def diff(a, b)
        # call diff on a and b
        # returns [data, ok?]
        require 'tempfile.rb'
        fa = Tempfile.new 'simdiff_a'
    Severity: Minor
    Found in hawk/app/lib/util.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

    Cyclomatic complexity for char2score is too high. [12/6]
    Open

      def char2score(score)
        case score
        when "-INFINITY"
          -1000000
        when "INFINITY"
    Severity: Minor
    Found in hawk/app/lib/util.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.

    Method has too many lines. [36/30]
    Open

      def popen3(user, *cmd)
        raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
        pw = IO::pipe   # pipe[0] for read, pipe[1] for write
        pr = IO::pipe
        pe = IO::pipe
    Severity: Minor
    Found in hawk/app/lib/util.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 get_metadata_hash is too high. [21.86/15]
    Open

      def get_metadata_hash(agent)
        sub_map = { 'type="string"' => 'type="text"',
                    '(type="boolean".*)default="(yes|1)"' => '\1default="true"',
                    '(type="boolean".*)default="(no|0)"' => '\1default="false"' }
    
    
    Severity: Minor
    Found in hawk/app/lib/util.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

    Assignment Branch Condition size for capture3 is too high. [19.75/15]
    Open

      def capture3(*cmd)
        if Hash === cmd.last
          opts = cmd.pop.dup
        else
          opts = {}
    Severity: Minor
    Found in hawk/app/lib/util.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

    Cyclomatic complexity for has_feature? is too high. [9/6]
    Open

      def has_feature?(feature)
        case feature
        when :crm_history
          Rails.cache.fetch(:has_crm_history) {
            Util.safe_x('echo', 'quit', '|', '/usr/sbin/crm history', '2>&1')
    Severity: Minor
    Found in hawk/app/lib/util.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.

    Cyclomatic complexity for popen3 is too high. [8/6]
    Open

      def popen3(user, *cmd)
        raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
        pw = IO::pipe   # pipe[0] for read, pipe[1] for write
        pr = IO::pipe
        pe = IO::pipe
    Severity: Minor
    Found in hawk/app/lib/util.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.

    Perceived complexity for popen3 is too high. [9/7]
    Open

      def popen3(user, *cmd)
        raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
        pw = IO::pipe   # pipe[0] for read, pipe[1] for write
        pr = IO::pipe
        pe = IO::pipe
    Severity: Minor
    Found in hawk/app/lib/util.rb by rubocop

    This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

    Example:

    def my_method                   # 1
      if cond                       # 1
        case var                    # 2 (0.8 + 4 * 0.2, rounded)
        when 1 then func_one
        when 2 then func_two
        when 3 then func_three
        when 4..10 then func_other
        end
      else                          # 1
        do_something until a && b   # 2
      end                           # ===
    end                             # 7 complexity points

    Perceived complexity for char2score is too high. [9/7]
    Open

      def char2score(score)
        case score
        when "-INFINITY"
          -1000000
        when "INFINITY"
    Severity: Minor
    Found in hawk/app/lib/util.rb by rubocop

    This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

    Example:

    def my_method                   # 1
      if cond                       # 1
        case var                    # 2 (0.8 + 4 * 0.2, rounded)
        when 1 then func_one
        when 2 then func_two
        when 3 then func_three
        when 4..10 then func_other
        end
      else                          # 1
        do_something until a && b   # 2
      end                           # ===
    end                             # 7 complexity points

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

      def get_metadata_hash(agent)
        sub_map = { 'type="string"' => 'type="text"',
                    '(type="boolean".*)default="(yes|1)"' => '\1default="true"',
                    '(type="boolean".*)default="(no|0)"' => '\1default="false"' }
    
    
    Severity: Minor
    Found in hawk/app/lib/util.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.

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

      def crm_get_msec(str)
        m = str.strip.match(/^([0-9]+)(.*)$/)
        return -1 unless m
        msec = m[1].to_i
        case m[2]
    Severity: Minor
    Found in hawk/app/lib/util.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.

    Method has_feature? has 40 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      def has_feature?(feature)
        case feature
        when :crm_history
          Rails.cache.fetch(:has_crm_history) {
            Util.safe_x('echo', 'quit', '|', '/usr/sbin/crm history', '2>&1')
    Severity: Minor
    Found in hawk/app/lib/util.rb - About 1 hr to fix

      Method popen3 has 36 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

        def popen3(user, *cmd)
          raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
          pw = IO::pipe   # pipe[0] for read, pipe[1] for write
          pr = IO::pipe
          pe = IO::pipe
      Severity: Minor
      Found in hawk/app/lib/util.rb - About 1 hr to fix

        Method popen3 has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
        Open

          def popen3(user, *cmd)
            raise SecurityError, "Util::popen3 called with < 2 args" if cmd.length < 2
            pw = IO::pipe   # pipe[0] for read, pipe[1] for write
            pr = IO::pipe
            pe = IO::pipe
        Severity: Minor
        Found in hawk/app/lib/util.rb - About 1 hr 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

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

          def child_active(pidfile)
            active = false
            if File.exist?(pidfile)
              pid = File.new(pidfile).read.to_i
              if pid > 0
        Severity: Minor
        Found in hawk/app/lib/util.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

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

          def char2score(score)
            case score
            when "-INFINITY"
              -1000000
            when "INFINITY"
        Severity: Minor
        Found in hawk/app/lib/util.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

        Method diff has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
        Open

          def diff(a, b)
            # call diff on a and b
            # returns [data, ok?]
            require 'tempfile.rb'
            fa = Tempfile.new 'simdiff_a'
        Severity: Minor
        Found in hawk/app/lib/util.rb - About 35 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

        Method get_metadata_hash has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
        Open

          def get_metadata_hash(agent)
            sub_map = { 'type="string"' => 'type="text"',
                        '(type="boolean".*)default="(yes|1)"' => '\1default="true"',
                        '(type="boolean".*)default="(no|0)"' => '\1default="false"' }
        
        
        Severity: Minor
        Found in hawk/app/lib/util.rb - About 35 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

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

          def unstring(v, default = nil)
            v ||= default
            ['true', 'false'].include?(v.class == String ? v.downcase : v) ? v.downcase == 'true' : v
          end
        Severity: Minor
        Found in hawk/app/lib/util.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

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

          def run_as(user, pass, *cmd)
            if Hash === cmd.last
              opts = cmd.pop.dup
            else
              opts = {}
        Severity: Minor
        Found in hawk/app/lib/util.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

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

          def ensure_home_for(user)
            old_home = ENV['HOME']
            ENV['HOME'] = begin
              require 'etc'
              Etc.getpwnam(user)['dir']
        Severity: Minor
        Found in hawk/app/lib/util.rb - About 25 mins to fix

        Cognitive Complexity

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

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

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

        Further reading

        Use casecmp instead of downcase ==.
        Open

            ['true', 'false'].include?(v.class == String ? v.downcase : v) ? v.downcase == 'true' : v
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop identifies places where a case-insensitive string comparison can better be implemented using casecmp.

        Example:

        # bad
        str.downcase == 'abc'
        str.upcase.eql? 'ABC'
        'abc' == str.downcase
        'ABC'.eql? str.upcase
        str.downcase == str.downcase
        
        # good
        str.casecmp('ABC').zero?
        'abc'.casecmp(str).zero?

        Use each_value instead of each.
        Open

            inst.errors.messages.each do |k, v|
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of each_key and each_value Hash methods.

        Note: If you have an array of two-element arrays, you can put parentheses around the block arguments to indicate that you're not working with a hash, and suppress RuboCop offenses.

        Example:

        # bad
        hash.keys.each { |k| p k }
        hash.values.each { |v| p v }
        hash.each { |k, _v| p k }
        hash.each { |_k, v| p v }
        
        # good
        hash.each_key { |k| p k }
        hash.each_value { |v| p v }

        end at 369, 4 is not aligned with def at 361, 2.
        Open

            end
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

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

        Example: EnforcedStyleAlignWith: startofline (default)

        # bad
        
        private def foo
                    end
        
        # good
        
        private def foo
        end

        Example: EnforcedStyleAlignWith: def

        # bad
        
        private def foo
                    end
        
        # good
        
        private def foo
                end

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

              1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

        Use $?.exitstatus.zero? instead of $?.exitstatus == 0.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.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

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

            inst.errors.messages.each do |k, v|
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for unused block arguments.

        Example:

        # bad
        
        do_something do |used, unused|
          puts used
        end
        
        do_something do |bar|
          puts :foo
        end
        
        define_method(:foo) do |bar|
          puts :baz
        end

        Example:

        #good
        
        do_something do |used, _unused|
          puts used
        end
        
        do_something do
          puts :foo
        end
        
        define_method(:foo) do |_bar|
          puts :baz
        end

        Use || instead of or.
        Open

              if user.to_s.strip.empty? or user == "hacluster" or user == "root"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of and and or, and suggests using && and || instead. It can be configured to check only in conditions, or in all contexts.

        Example: EnforcedStyle: always (default)

        # bad
        foo.save and return
        
        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        if foo && bar
        end

        Example: EnforcedStyle: conditionals

        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        foo.save and return
        
        # good
        if foo && bar
        end

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

              Rails.cache.fetch(:has_tags) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Prefer !expression.nil? over expression != nil.
        Open

            Float(n) != nil rescue false
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for non-nil checks, which are usually redundant.

        Example:

        # bad
        if x != nil
        end
        
        # good (when not allowing semantic changes)
        # bad (when allowing semantic changes)
        if !x.nil?
        end
        
        # good (when allowing semantic changes)
        if x
        end

        Non-nil checks are allowed if they are the final nodes of predicate.

        # good
        def signed_in?
          !current_user.nil?
        end

        Use $?.exitstatus.zero? instead of $?.exitstatus == 0.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.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

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Prefer double-quoted strings inside interpolations.
        Open

            Rails.logger.debug "Executing `#{cmd.join(' ').inspect}` through `capture3`"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks that quotes inside the string interpolation match the configured preference.

        Example: EnforcedStyle: single_quotes (default)

        # bad
        result = "Tests #{success ? "PASS" : "FAIL"}"
        
        # good
        result = "Tests #{success ? 'PASS' : 'FAIL'}"

        Example: EnforcedStyle: double_quotes

        # bad
        result = "Tests #{success ? 'PASS' : 'FAIL'}"
        
        # good
        result = "Tests #{success ? "PASS" : "FAIL"}"

        Space between { and | missing.
        Open

            Util.popen3(user, *cmd) {|i, o, e, t|
        Severity: Minor
        Found in hawk/app/lib/util.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 }

        Do not use :: for method calls.
        Open

            pe = IO::pipe
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for methods invoked via the :: operator instead of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir).

        Example:

        # bad
        Timeout::timeout(500) { do_something }
        FileUtils::rmdir(dir)
        Marshal::dump(obj)
        
        # good
        Timeout.timeout(500) { do_something }
        FileUtils.rmdir(dir)
        Marshal.dump(obj)

        Avoid using rescue in its modifier form.
        Open

            Float(n) != nil rescue false
        Severity: Minor
        Found in hawk/app/lib/util.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

        Prefer double-quoted strings inside interpolations.
        Open

            Rails.logger.debug "Executing `#{cmd.join(' ')}` through `safe_x`"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks that quotes inside the string interpolation match the configured preference.

        Example: EnforcedStyle: single_quotes (default)

        # bad
        result = "Tests #{success ? "PASS" : "FAIL"}"
        
        # good
        result = "Tests #{success ? 'PASS' : 'FAIL'}"

        Example: EnforcedStyle: double_quotes

        # bad
        result = "Tests #{success ? 'PASS' : 'FAIL'}"
        
        # good
        result = "Tests #{success ? "PASS" : "FAIL"}"

        Prefer to_s over string interpolation.
        Open

                command = ['su', '-', user, 'sh', '-c', "#{cmd.join(" ")}"]
        Severity: Minor
        Found in hawk/app/lib/util.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

        Use || instead of or.
        Open

              if user.to_s.strip.empty? or user == "hacluster" or user == "root"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of and and or, and suggests using && and || instead. It can be configured to check only in conditions, or in all contexts.

        Example: EnforcedStyle: always (default)

        # bad
        foo.save and return
        
        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        if foo && bar
        end

        Example: EnforcedStyle: conditionals

        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        foo.save and return
        
        # good
        if foo && bar
        end

        Use && instead of and.
        Open

              if not user.to_s.strip.empty? and user != "hacluster" and user != "root"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of and and or, and suggests using && and || instead. It can be configured to check only in conditions, or in all contexts.

        Example: EnforcedStyle: always (default)

        # bad
        foo.save and return
        
        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        if foo && bar
        end

        Example: EnforcedStyle: conditionals

        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        foo.save and return
        
        # good
        if foo && bar
        end

        Do not use :: for method calls.
        Open

            pw = IO::pipe   # pipe[0] for read, pipe[1] for write
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for methods invoked via the :: operator instead of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir).

        Example:

        # bad
        Timeout::timeout(500) { do_something }
        FileUtils::rmdir(dir)
        Marshal::dump(obj)
        
        # good
        Timeout.timeout(500) { do_something }
        FileUtils.rmdir(dir)
        Marshal.dump(obj)

        Do not use :: for method calls.
        Open

            pe = IO::pipe
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for methods invoked via the :: operator instead of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir).

        Example:

        # bad
        Timeout::timeout(500) { do_something }
        FileUtils::rmdir(dir)
        Marshal::dump(obj)
        
        # good
        Timeout.timeout(500) { do_something }
        FileUtils.rmdir(dir)
        Marshal.dump(obj)

        Space missing after comma.
        Open

            sub_map.each { |k,v| xml.gsub!(/#{k}/i, v) }
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Checks for comma (,) not followed by some kind of space.

        Example:

        # bad
        [1,2]
        { foo:bar,}
        
        # good
        [1, 2]
        { foo:bar, }

        Space missing to the left of {.
        Open

                pi.each{|p| p.close if p.respond_to?(:closed) && !p.closed?}
        Severity: Minor
        Found in hawk/app/lib/util.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
        }

        Use % instead of %Q.
        Open

              %Q[//configuration//crm_config//nvpair[@name='enable-acl' and @value='true']] # %Q acts like a double quoted string
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks if usage of %() or %Q() matches configuration.

        Example: EnforcedStyle: bare_percent (default)

        # bad
        %Q(He said: "#{greeting}")
        %q{She said: 'Hi'}
        
        # good
        %(He said: "#{greeting}")
        %{She said: 'Hi'}

        Example: EnforcedStyle: percent_q

        # bad
        %|He said: "#{greeting}"|
        %/She said: 'Hi'/
        
        # good
        %Q|He said: "#{greeting}"|
        %q/She said: 'Hi'/

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

            if Hash === cmd.last
              opts = cmd.pop.dup
            else
              opts = {}
            end
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        %Q-literals should be delimited by ( and ).
        Open

              %Q[//configuration//crm_config//nvpair[@name='enable-acl' and @value='true']] # %Q acts like a double quoted string
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop enforces the consistent usage of %-literal delimiters.

        Specify the 'default' key to set all preferred delimiters at once. You can continue to specify individual preferred delimiters to override the default.

        Example:

        # Style/PercentLiteralDelimiters:
        #   PreferredDelimiters:
        #     default: '[]'
        #     '%i':    '()'
        
        # good
        %w[alpha beta] + %i(gamma delta)
        
        # bad
        %W(alpha #{beta})
        
        # bad
        %I(alpha beta)

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

              exit!($?.exitstatus)
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

              fork{
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

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

              Rails.cache.fetch(:has_bundle_support) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

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

            if Hash === cmd.last
              opts = cmd.pop.dup
            else
              opts = {}
            end
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Rename has_feature? to feature?.
        Open

          def has_feature?(feature)
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop makes sure that predicates are named properly.

        Example:

        # bad
        def is_even?(value)
        end
        
        # good
        def even?(value)
        end
        
        # bad
        def has_value?
        end
        
        # good
        def value?
        end

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

              elsif s < 0 && s < -1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

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

              Rails.cache.fetch(:has_acl_support) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Ternary operators must not be nested. Prefer if or else constructs instead.
        Open

            ['true', 'false'].include?(v.class == String ? v.downcase : v) ? v.downcase == 'true' : v
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Use 0o for octal literals.
        Open

                umask = File.umask(0002)
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for octal, hex, binary and decimal literals using uppercase prefixes and corrects them to lowercase prefix or no prefix (in case of decimals). eg. for octal use 0o instead of 0 or 0O.

        Can be configured to use 0 only for octal literals using EnforcedOctalStyle => zero_only

        Prefer $CHILD_STATUS from the stdlib 'English' module (don't forget to require it) over $?.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Space missing to the left of {.
        Open

            pid = fork{
        Severity: Minor
        Found in hawk/app/lib/util.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
        }

        Space missing inside }.
        Open

                pi.each{|p| p.close if p.respond_to?(:closed) && !p.closed?}
        Severity: Minor
        Found in hawk/app/lib/util.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 }

        Trailing whitespace detected.
        Open

                
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

            Util.popen3(user, *cmd) {|i, o, e, t|
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

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

              Rails.cache.fetch(:has_rsc_template) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Do not use %Q unless interpolation is needed. Use %q.
        Open

              %Q[//configuration//crm_config//nvpair[@name='enable-acl' and @value='true']] # %Q acts like a double quoted string
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for usage of the %Q() syntax when %q() would do.

        Example: EnforcedStyle: lowercaseq (default)

        # The `lower_case_q` style prefers `%q` unless
        # interpolation is needed.
        # bad
        %Q[Mix the foo into the baz.]
        %Q(They all said: 'Hooray!')
        
        # good
        %q[Mix the foo into the baz]
        %q(They all said: 'Hooray!')

        Example: EnforcedStyle: uppercaseq

        # The `upper_case_q` style requires the sole use of `%Q`.
        # bad
        %q/Mix the foo into the baz./
        %q{They all said: 'Hooray!'}
        
        # good
        %Q/Mix the foo into the baz./
        %Q{They all said: 'Hooray!'}

        Extra empty line detected at module body beginning.
        Open

        
          # From http://mentalized.net/journal/2011/04/14/ruby_how_to_check_if_a_string_is_numeric/
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: empty_lines

        # good
        
        module Foo
        
          def bar
            # ...
          end
        
        end

        Example: EnforcedStyle: emptylinesexcept_namespace

        # good
        
        module Foo
          module Bar
        
            # ...
        
          end
        end

        Example: EnforcedStyle: emptylinesspecial

        # good
        module Foo
        
          def bar; end
        
        end

        Example: EnforcedStyle: noemptylines (default)

        # good
        
        module Foo
          def bar
            # ...
          end
        end

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

              if s > 0 && s > 1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

        Space missing after comma.
        Open

              sub_map.each { |k,v| stonith_xml.gsub!(/#{k}/i, v) }
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Checks for comma (,) not followed by some kind of space.

        Example:

        # bad
        [1,2]
        { foo:bar,}
        
        # good
        [1, 2]
        { foo:bar, }

        Space between { and | missing.
        Open

                pi.each{|p| p.close if p.respond_to?(:closed) && !p.closed?}
        Severity: Minor
        Found in hawk/app/lib/util.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 }

        Use && instead of and.
        Open

              if not user.to_s.strip.empty? and user != "hacluster" and user != "root"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of and and or, and suggests using && and || instead. It can be configured to check only in conditions, or in all contexts.

        Example: EnforcedStyle: always (default)

        # bad
        foo.save and return
        
        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        if foo && bar
        end

        Example: EnforcedStyle: conditionals

        # bad
        if foo and bar
        end
        
        # good
        foo.save && return
        
        # good
        foo.save and return
        
        # good
        if foo && bar
        end

        Unnecessary spacing detected.
        Open

            pw = IO::pipe   # pipe[0] for read, pipe[1] for write
        Severity: Minor
        Found in hawk/app/lib/util.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"

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

              Rails.cache.fetch(:has_crm_history) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Space missing to the left of {.
        Open

            pid = fork{
        Severity: Minor
        Found in hawk/app/lib/util.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
        }

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

              unless File.exist? "#{Rails.configuration.x.crm_daemon_dir}/pacemaker-fenced"
        Severity: Minor
        Found in hawk/app/lib/util.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 ! instead of not.
        Open

              if not user.to_s.strip.empty? and user != "hacluster" and user != "root"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for uses of the keyword not instead of !.

        Example:

        # bad - parentheses are required because of op precedence
        x = (not something)
        
        # good
        x = !something

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

              -1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

        Use $?.exitstatus.zero? instead of $?.exitstatus == 0.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.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

        Do not use :: for method calls.
        Open

            pr = IO::pipe
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for methods invoked via the :: operator instead of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir).

        Example:

        # bad
        Timeout::timeout(500) { do_something }
        FileUtils::rmdir(dir)
        Marshal::dump(obj)
        
        # good
        Timeout.timeout(500) { do_something }
        FileUtils.rmdir(dir)
        Marshal.dump(obj)

        Space between { and | missing.
        Open

            Util.popen3(nil, *cmd) {|i, o, e, t|
        Severity: Minor
        Found in hawk/app/lib/util.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 }

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

            pid = fork{
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

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

              Rails.cache.fetch(:has_sim_ticket) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Do not use :: for method calls.
        Open

            pr = IO::pipe   # pipe[0] for read, pipe[1] for write
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for methods invoked via the :: operator instead of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir).

        Example:

        # bad
        Timeout::timeout(500) { do_something }
        FileUtils::rmdir(dir)
        Marshal::dump(obj)
        
        # good
        Timeout.timeout(500) { do_something }
        FileUtils.rmdir(dir)
        Marshal.dump(obj)

        Prefer double-quoted strings inside interpolations.
        Open

            Rails.logger.debug "Executing `#{cmd.join(' ').inspect}` as `#{user}` through `run_as`"
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks that quotes inside the string interpolation match the configured preference.

        Example: EnforcedStyle: single_quotes (default)

        # bad
        result = "Tests #{success ? "PASS" : "FAIL"}"
        
        # good
        result = "Tests #{success ? 'PASS' : 'FAIL'}"

        Example: EnforcedStyle: double_quotes

        # bad
        result = "Tests #{success ? 'PASS' : 'FAIL'}"
        
        # good
        result = "Tests #{success ? "PASS" : "FAIL"}"

        Extra blank line detected.
        Open

        
          # get text child of xml element - returns empty string if elem is nil or
        Severity: Minor
        Found in hawk/app/lib/util.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

        Unnecessary spacing detected.
        Open

            pr = IO::pipe   # pipe[0] for read, pipe[1] for write
        Severity: Minor
        Found in hawk/app/lib/util.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"

        Do not suppress exceptions.
        Open

                rescue Errno::ESRCH
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for rescue blocks with no body.

        Example:

        # bad
        
        def some_method
          do_something
        rescue
          # do nothing
        end

        Example:

        # bad
        
        begin
          do_something
        rescue
          # do nothing
        end

        Example:

        # good
        
        def some_method
          do_something
        rescue
          handle_exception
        end

        Example:

        # good
        
        begin
          do_something
        rescue
          handle_exception
        end

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

              1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

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

            if Hash === cmd.last
        Severity: Minor
        Found in hawk/app/lib/util.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/

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

                -1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

        Use %Q only for strings that contain both single quotes and double quotes, or for dynamic strings that contain double quotes.
        Open

              %Q[//configuration//crm_config//nvpair[@name='enable-acl' and @value='true']] # %Q acts like a double quoted string
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        Use 2 (not 4) spaces for indentation.
        Open

                  res_param.concat(stonith_param)
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

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

        Example:

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

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

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

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

            Util.popen3(nil, *cmd) {|i, o, e, t|
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Space missing to the left of {.
        Open

              fork{
        Severity: Minor
        Found in hawk/app/lib/util.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
        }

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

            pid = fork{
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

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

            out = pr[0].read()
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for unwanted parentheses in parameterless method calls.

        Example:

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

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

              Rails.cache.fetch(:has_rsc_ticket) {
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

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

        Example: EnforcedStyle: linecountbased (default)

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

        Example: EnforcedStyle: semantic

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

        Example: EnforcedStyle: bracesforchaining

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

        Use underscores(_) as decimal mark and separate every 3 digits with them.
        Open

                1000000
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for big numeric literals without _ between groups of digits in them.

        Example:

        # bad
        
        1000000
        1_00_000
        1_0000
        
        # good
        
        1_000_000
        1000
        
        # good unless Strict is set
        
        10_000_00 # typical representation of $10,000 in cents

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

            if Hash === cmd.last
        Severity: Minor
        Found in hawk/app/lib/util.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/

        Use 0o for octal literals.
        Open

                Dir.mkdir(ENV['HOME'], 0770)
        Severity: Minor
        Found in hawk/app/lib/util.rb by rubocop

        This cop checks for octal, hex, binary and decimal literals using uppercase prefixes and corrects them to lowercase prefix or no prefix (in case of decimals). eg. for octal use 0o instead of 0 or 0O.

        Can be configured to use 0 only for octal literals using EnforcedOctalStyle => zero_only

        Use $?.exitstatus.zero? instead of $?.exitstatus == 0.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.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 $?.exitstatus.zero? instead of $?.exitstatus == 0.
        Open

                $?.exitstatus == 0
        Severity: Minor
        Found in hawk/app/lib/util.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

        There are no issues that match your filters.

        Category
        Status