chrisjones-tripletri/action_command

View on GitHub

Showing 28 of 28 total issues

Class Result has 24 methods (exceeds 20 allowed). Consider refactoring.
Open

  class Result # rubocop:disable Metrics/ClassLength
    # By default, a command is ok?
    def initialize
      @result_code = RESULT_CODE_OK
      @last_error  = nil
Severity: Minor
Found in lib/action_command/result.rb - About 2 hrs to fix

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

        def match_message?(msg)
          return @msg == msg unless msg.is_a? Hash
          msg.each do |k, v|
            k = k.to_s if k.is_a? Symbol
            return false unless @msg.key?(k)
    Severity: Minor
    Found in lib/action_command/log_parser.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 validate_input has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

        def validate_input(dest, args)
          return true unless should_validate(dest)
          @input.each do |p|
            val = args[p[:symbol]]
          
    Severity: Minor
    Found in lib/action_command/input_output.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 process_output has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

        def process_output(dest, result)
          return unless result.ok? && should_validate(dest)
    
          @output.each do |param|
            sym = param[:symbol]
    Severity: Minor
    Found in lib/action_command/input_output.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

    Block has too many lines. [29/25]
    Open

    Gem::Specification.new do |spec|
      spec.name          = 'action_command'
      spec.version       = ActionCommand::VERSION
      spec.authors       = ['Chris Jones']
      spec.email         = ['chris@tripletriangle.com']
    Severity: Minor
    Found in action_command.gemspec by rubocop

    This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

    Method execute_child has 5 arguments (exceeds 4 allowed). Consider refactoring.
    Open

      def self.execute_child(parent, cls, result, result_key, params = {})
    Severity: Minor
    Found in lib/action_command.rb - About 35 mins to fix

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

          def next(msg)
            # be tolerant of the fact that there might be other 
            # stuff in the log file.
            next_line do |input, line|
              if input.key?('sequence')
      Severity: Minor
      Found in lib/action_command/log_parser.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 execute has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

          def execute(result)
            if ActiveRecord::Base.connection.open_transactions >= 1
              super(result)
            else
              result.info('start_transaction')
      Severity: Minor
      Found in lib/action_command/executable_transaction.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

      Dependencies should be sorted in an alphabetical order within their section of the gemspec. Dependency guard should appear before yard.
      Open

        spec.add_development_dependency 'guard'
      Severity: Minor
      Found in action_command.gemspec by rubocop

      Dependencies in the gemspec should be alphabetically sorted.

      Example:

      # bad
      spec.add_dependency 'rubocop'
      spec.add_dependency 'rspec'
      
      # good
      spec.add_dependency 'rspec'
      spec.add_dependency 'rubocop'
      
      # good
      spec.add_dependency 'rubocop'
      
      spec.add_dependency 'rspec'
      
      # bad
      spec.add_development_dependency 'rubocop'
      spec.add_development_dependency 'rspec'
      
      # good
      spec.add_development_dependency 'rspec'
      spec.add_development_dependency 'rubocop'
      
      # good
      spec.add_development_dependency 'rubocop'
      
      spec.add_development_dependency 'rspec'
      
      # bad
      spec.add_runtime_dependency 'rubocop'
      spec.add_runtime_dependency 'rspec'
      
      # good
      spec.add_runtime_dependency 'rspec'
      spec.add_runtime_dependency 'rubocop'
      
      # good
      spec.add_runtime_dependency 'rubocop'
      
      spec.add_runtime_dependency 'rspec'
      
      # good only if TreatCommentsAsGroupSeparators is true
      # For code quality
      spec.add_dependency 'rubocop'
      # For tests
      spec.add_dependency 'rspec'

      Use empty lines between method definitions.
      Open

          def input(sym, desc, opts = {}, &_block)
      Severity: Minor
      Found in lib/action_command/input_output.rb by rubocop

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

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

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

      Example:

      # bad
      def a
      end
      def b
      end

      Example:

      # good
      def a
      end
      
      def b
      end

      Dependencies should be sorted in an alphabetical order within their section of the gemspec. Dependency guard-rspec should appear before guard-rubocop.
      Open

        spec.add_development_dependency 'guard-rspec'
      Severity: Minor
      Found in action_command.gemspec by rubocop

      Dependencies in the gemspec should be alphabetically sorted.

      Example:

      # bad
      spec.add_dependency 'rubocop'
      spec.add_dependency 'rspec'
      
      # good
      spec.add_dependency 'rspec'
      spec.add_dependency 'rubocop'
      
      # good
      spec.add_dependency 'rubocop'
      
      spec.add_dependency 'rspec'
      
      # bad
      spec.add_development_dependency 'rubocop'
      spec.add_development_dependency 'rspec'
      
      # good
      spec.add_development_dependency 'rspec'
      spec.add_development_dependency 'rubocop'
      
      # good
      spec.add_development_dependency 'rubocop'
      
      spec.add_development_dependency 'rspec'
      
      # bad
      spec.add_runtime_dependency 'rubocop'
      spec.add_runtime_dependency 'rspec'
      
      # good
      spec.add_runtime_dependency 'rspec'
      spec.add_runtime_dependency 'rubocop'
      
      # good
      spec.add_runtime_dependency 'rubocop'
      
      spec.add_runtime_dependency 'rspec'
      
      # good only if TreatCommentsAsGroupSeparators is true
      # For code quality
      spec.add_dependency 'rubocop'
      # For tests
      spec.add_dependency 'rspec'

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

            if @logger
      Severity: Minor
      Found in lib/action_command/result.rb by rubocop

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

      Example:

      # bad
      def test
        if something
          work
        end
      end
      
      # good
      def test
        return unless something
        work
      end
      
      # also good
      def test
        work if something
      end
      
      # bad
      if something
        raise 'exception'
      else
        ok
      end
      
      # good
      raise 'exception' if something
      ok

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

            if @logger
      Severity: Minor
      Found in lib/action_command/result.rb by rubocop

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

      Example:

      # bad
      def test
        if something
          work
        end
      end
      
      # good
      def test
        return unless something
        work
      end
      
      # also good
      def test
        work if something
      end
      
      # bad
      if something
        raise 'exception'
      else
        ok
      end
      
      # good
      raise 'exception' if something
      ok

      Use the double pipe equals operator ||= instead.
      Open

            @dest = STDOUT unless @dest

      This cop checks for potential usage of the ||= operator.

      Example:

      # bad
      name = name ? name : 'Bozhidar'
      
      # bad
      name = if name
               name
             else
               'Bozhidar'
             end
      
      # bad
      unless name
        name = 'Bozhidar'
      end
      
      # bad
      name = 'Bozhidar' unless name
      
      # good - set name to 'Bozhidar', only if it's nil or false
      name ||= 'Bozhidar'

      Unnecessary utf-8 encoding comment.
      Open

      # coding: utf-8
      Severity: Minor
      Found in action_command.gemspec by rubocop

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

          unless cls.is_a?(Class) && cls.ancestors.include?(ActionCommand::Executable)
      Severity: Minor
      Found in lib/action_command.rb by rubocop

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

      Example:

      # bad
      def test
        if something
          work
        end
      end
      
      # good
      def test
        return unless something
        work
      end
      
      # also good
      def test
        work if something
      end
      
      # bad
      if something
        raise 'exception'
      else
        ok
      end
      
      # good
      raise 'exception' if something
      ok

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

            return @depth == 0
      Severity: Minor
      Found in lib/action_command/log_parser.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 each_value instead of each.
      Open

            sequences.each do |_k, v|

      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 }

      Dependencies should be sorted in an alphabetical order within their section of the gemspec. Dependency activerecord should appear before rake_command_filter.
      Open

        spec.add_development_dependency 'activerecord', '~> 4.0.0'
      Severity: Minor
      Found in action_command.gemspec by rubocop

      Dependencies in the gemspec should be alphabetically sorted.

      Example:

      # bad
      spec.add_dependency 'rubocop'
      spec.add_dependency 'rspec'
      
      # good
      spec.add_dependency 'rspec'
      spec.add_dependency 'rubocop'
      
      # good
      spec.add_dependency 'rubocop'
      
      spec.add_dependency 'rspec'
      
      # bad
      spec.add_development_dependency 'rubocop'
      spec.add_development_dependency 'rspec'
      
      # good
      spec.add_development_dependency 'rspec'
      spec.add_development_dependency 'rubocop'
      
      # good
      spec.add_development_dependency 'rubocop'
      
      spec.add_development_dependency 'rspec'
      
      # bad
      spec.add_runtime_dependency 'rubocop'
      spec.add_runtime_dependency 'rspec'
      
      # good
      spec.add_runtime_dependency 'rspec'
      spec.add_runtime_dependency 'rubocop'
      
      # good
      spec.add_runtime_dependency 'rubocop'
      
      spec.add_runtime_dependency 'rspec'
      
      # good only if TreatCommentsAsGroupSeparators is true
      # For code quality
      spec.add_dependency 'rubocop'
      # For tests
      spec.add_dependency 'rspec'

      Use params.input_count.zero? instead of params.input_count == 0.
      Open

            params.input(:help, 'Help for this command', OPTIONAL) if params.input_count == 0
      Severity: Minor
      Found in lib/action_command.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
      Severity
      Category
      Status
      Source
      Language