IotaSpencer/cloud_party

View on GitHub
lib/cloud_party/nodes/dns_records.rb

Summary

Maintainability
A
2 hrs
Test Coverage

Method has too many lines. [29/22]
Open

      def add(type, name, content, opts, zone:)
        zone_id = nil
        options = {
            type: type,
            name: name,

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 add is too high. [24.86/23]
Open

      def add(type, name, content, opts, zone:)
        zone_id = nil
        options = {
            type: type,
            name: name,

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 add has 29 lines of code (exceeds 25 allowed). Consider refactoring.
Open

      def add(type, name, content, opts, zone:)
        zone_id = nil
        options = {
            type: type,
            name: name,
Severity: Minor
Found in lib/cloud_party/nodes/dns_records.rb - About 1 hr to fix

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

          def add(type, name, content, opts, zone:)
            zone_id = nil
            options = {
                type: type,
                name: name,
    Severity: Minor
    Found in lib/cloud_party/nodes/dns_records.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 id_by_name has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
    Open

          def self.id_by_name(zone)
            options = {
                match: 'all',
                name: zone,
                order: 'name'
    Severity: Minor
    Found in lib/cloud_party/nodes/dns_records.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 options[:proxied] = proxied instead of options.merge!(proxied: proxied).
    Open

            options.merge!(proxied: proxied) unless proxied.nil?

    This cop identifies places where Hash#merge! can be replaced by Hash#[]=.

    Example:

    hash.merge!(a: 1)
    hash.merge!({'key' => 'value'})
    hash.merge!(a: 1, b: 2)

    Use options[:priority] = priority instead of options.merge!(priority: priority).
    Open

            options.merge!(priority: priority) unless priority.nil?

    This cop identifies places where Hash#merge! can be replaced by Hash#[]=.

    Example:

    hash.merge!(a: 1)
    hash.merge!({'key' => 'value'})
    hash.merge!(a: 1, b: 2)

    Use options[:ttl] = ttl instead of options.merge!(ttl: ttl).
    Open

            options.merge!(ttl: ttl) unless ttl.nil?

    This cop identifies places where Hash#merge! can be replaced by Hash#[]=.

    Example:

    hash.merge!(a: 1)
    hash.merge!({'key' => 'value'})
    hash.merge!(a: 1, b: 2)

    Trailing whitespace detected.
    Open

    # 

    Trailing whitespace detected.
    Open

    # 

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

                                raise CloudParty::Errors::ResultError.new()

    This cop checks for unwanted parentheses in parameterless method calls.

    Example:

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

    Use 2 (not 7) spaces for indentation.
    Open

                              if zone.size > 1

    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

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

                @options)

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

    When using the symmetrical (default) style:

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

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

    When using the new_line style:

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

    When using the same_line style:

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

    Example:

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

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

                       if zone.is_a?(Array)

    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

    Provide an exception class and message as arguments to raise.
    Open

                                raise CloudParty::Errors::ResultError.new()

    This cop checks the args passed to fail and raise. For exploded style (default), it recommends passing the exception class and message to raise, rather than construct an instance of the error. It will still allow passing just a message, or the construction of an error with more than one argument.

    The exploded style works identically, but with the addition that it will also suggest constructing error objects when the exception is passed multiple arguments.

    Example: EnforcedStyle: exploded (default)

    # bad
    raise StandardError.new("message")
    
    # good
    raise StandardError, "message"
    fail "message"
    raise MyCustomError.new(arg1, arg2, arg3)
    raise MyKwArgError.new(key1: val1, key2: val2)

    Example: EnforcedStyle: compact

    # bad
    raise StandardError, "message"
    raise RuntimeError, arg1, arg2, arg3
    
    # good
    raise StandardError.new("message")
    raise MyCustomError.new(arg1, arg2, arg3)
    fail "message"

    Indent the first parameter one step more than the start of the previous line.
    Open

                :post,

    This cop checks the indentation of the first parameter in a method call. Parameters after the first one are checked by Style/AlignParameters, not by this cop.

    Example:

    # bad
    some_method(
    first_param,
    second_param)
    
    # good
    some_method(
      first_param,
    second_param)

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

                              if zone.size > 1

    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

    Missing magic comment # frozen_string_literal: true.
    Open

    # 

    This cop is designed to help upgrade to Ruby 3.0. It will add the comment # frozen_string_literal: true to the top of files to enable frozen string literals. Frozen string literals may be default in Ruby 3.0. The comment will be added below a shebang and encoding comment. The frozen string literal comment is only valid in Ruby 2.3+.

    Example: EnforcedStyle: when_needed (default)

    # The `when_needed` style will add the frozen string literal comment
    # to files only when the `TargetRubyVersion` is set to 2.3+.
    # bad
    module Foo
      # ...
    end
    
    # good
    # frozen_string_literal: true
    
    module Foo
      # ...
    end

    Example: EnforcedStyle: always

    # The `always` style will always add the frozen string literal comment
    # to a file, regardless of the Ruby version or if `freeze` or `<<` are
    # called on a string literal.
    # bad
    module Bar
      # ...
    end
    
    # good
    # frozen_string_literal: true
    
    module Bar
      # ...
    end

    Example: EnforcedStyle: never

    # The `never` will enforce that the frozen string literal comment does
    # not exist in a file.
    # bad
    # frozen_string_literal: true
    
    module Baz
      # ...
    end
    
    # good
    module Baz
      # ...
    end

    Use empty lines between method definitions.
    Open

          def rem(id, zone: nil)

    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

    Indent ) the same as the start of the line where ( is.
    Open

                )

    This cops checks the indentation of hanging closing parentheses in method calls, method definitions, and grouped expressions. A hanging closing parenthesis means ) preceded by a line break.

    Example:

    # good: when x is on its own line, indent this way
    func(
      x,
      y
    )
    
    # good: when x follows opening parenthesis, align parentheses
    a = b * (x +
             y
            )
    
    # bad
    def func(
      x,
      y
      )
    end

    Indent the first parameter one step more than the start of the previous line.
    Open

                :delete,

    This cop checks the indentation of the first parameter in a method call. Parameters after the first one are checked by Style/AlignParameters, not by this cop.

    Example:

    # bad
    some_method(
    first_param,
    second_param)
    
    # good
    some_method(
      first_param,
    second_param)

    Inconsistent indentation detected.
    Open

                       if zone.is_a?(Array)
                              if zone.size > 1
                                raise CloudParty::Errors::ResultError.new()
                              else
                                zone.first.fetch(:id, nil)

    This cops checks for inconsistent indentation.

    Example:

    class A
      def test
        puts 'hello'
         puts 'world'
      end
    end

    Use 2 spaces for indentation in a hash, relative to the start of the line where the left curly brace is.
    Open

                match: 'all',

    This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

    By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

    Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

    This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

    Example: EnforcedStyle: specialinsideparentheses (default)

    # The `special_inside_parentheses` style enforces that the first key
    # in a hash literal where the opening brace and the first key are on
    # separate lines is indented one step (two spaces) more than the
    # position inside the opening parentheses.
    
    # bad
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
                         })
    
    # good
    special_inside_parentheses
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                         })

    Example: EnforcedStyle: consistent

    # The `consistent` style enforces that the first key in a hash
    # literal where the opening brace and the first key are on
    # seprate lines is indented the same as a hash literal which is not
    # defined inside a method call.
    
    # bad
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                          })
    
    # good
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
    })

    Example: EnforcedStyle: align_braces

    # The `align_brackets` style enforces that the opening and closing
    # braces are indented to the same position.
    
    # bad
    and_now_for_something = {
                              completely: :different
    }
    
    # good
    and_now_for_something = {
                              completely: :different
                            }

    Use empty lines between method definitions.
    Open

          def initialize(options = {})

    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

    Use 2 spaces for indentation in a hash, relative to the start of the line where the left curly brace is.
    Open

                type: type,

    This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

    By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

    Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

    This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

    Example: EnforcedStyle: specialinsideparentheses (default)

    # The `special_inside_parentheses` style enforces that the first key
    # in a hash literal where the opening brace and the first key are on
    # separate lines is indented one step (two spaces) more than the
    # position inside the opening parentheses.
    
    # bad
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
                         })
    
    # good
    special_inside_parentheses
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                         })

    Example: EnforcedStyle: consistent

    # The `consistent` style enforces that the first key in a hash
    # literal where the opening brace and the first key are on
    # seprate lines is indented the same as a hash literal which is not
    # defined inside a method call.
    
    # bad
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                          })
    
    # good
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
    })

    Example: EnforcedStyle: align_braces

    # The `align_brackets` style enforces that the opening and closing
    # braces are indented to the same position.
    
    # bad
    and_now_for_something = {
                              completely: :different
    }
    
    # good
    and_now_for_something = {
                              completely: :different
                            }

    Use 2 spaces for indentation in a hash, relative to the start of the line where the left curly brace is.
    Open

                  match: 'all',

    This cops checks the indentation of the first key in a hash literal where the opening brace and the first key are on separate lines. The other keys' indentations are handled by the AlignHash cop.

    By default, Hash literals that are arguments in a method call with parentheses, and where the opening curly brace of the hash is on the same line as the opening parenthesis of the method call, shall have their first key indented one step (two spaces) more than the position inside the opening parenthesis.

    Other hash literals shall have their first key indented one step more than the start of the line where the opening curly brace is.

    This default style is called 'specialinsideparentheses'. Alternative styles are 'consistent' and 'align_braces'. Here are examples:

    Example: EnforcedStyle: specialinsideparentheses (default)

    # The `special_inside_parentheses` style enforces that the first key
    # in a hash literal where the opening brace and the first key are on
    # separate lines is indented one step (two spaces) more than the
    # position inside the opening parentheses.
    
    # bad
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
                         })
    
    # good
    special_inside_parentheses
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                         })

    Example: EnforcedStyle: consistent

    # The `consistent` style enforces that the first key in a hash
    # literal where the opening brace and the first key are on
    # seprate lines is indented the same as a hash literal which is not
    # defined inside a method call.
    
    # bad
    hash = {
      key: :value
    }
    but_in_a_method_call({
                           its_like: :this
                          })
    
    # good
    hash = {
      key: :value
    }
    and_in_a_method_call({
      no: :difference
    })

    Example: EnforcedStyle: align_braces

    # The `align_brackets` style enforces that the opening and closing
    # braces are indented to the same position.
    
    # bad
    and_now_for_something = {
                              completely: :different
    }
    
    # good
    and_now_for_something = {
                              completely: :different
                            }

    Extra empty line detected at method body end.
    Open

    
          end

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

    Example:

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

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

          def get(id)

    This cop checks for unused method arguments.

    Example:

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

    Example:

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

    There are no issues that match your filters.

    Category
    Status