wrstudios/frodata

View on GitHub
lib/frodata/service.rb

Summary

Maintainability
B
5 hrs
Test Coverage

Class has too many lines. [153/100]
Open

  class Service
    # The Faraday connection object used by the service to make requests
    attr_reader :connection
    # The FrOData Service's URL
    attr_reader :service_url
Severity: Minor
Found in lib/frodata/service.rb by rubocop

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

Class Service has 25 methods (exceeds 20 allowed). Consider refactoring.
Open

  class Service
    # The Faraday connection object used by the service to make requests
    attr_reader :connection
    # The FrOData Service's URL
    attr_reader :service_url
Severity: Minor
Found in lib/frodata/service.rb - About 2 hrs to fix

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

        def read_metadata
          # From file, good for debugging
          if options[:metadata_file]
            data = File.read(options[:metadata_file])
            ::Nokogiri::XML(data).remove_namespaces!
    Severity: Minor
    Found in lib/frodata/service.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 read_metadata is too high. [16.55/15]
    Open

        def read_metadata
          # From file, good for debugging
          if options[:metadata_file]
            data = File.read(options[:metadata_file])
            ::Nokogiri::XML(data).remove_namespaces!
    Severity: Minor
    Found in lib/frodata/service.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 read_metadata has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

        def read_metadata
          # From file, good for debugging
          if options[:metadata_file]
            data = File.read(options[:metadata_file])
            ::Nokogiri::XML(data).remove_namespaces!
    Severity: Minor
    Found in lib/frodata/service.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

    FrOData::Service#enum_types contains iterators nested 2 deep
    Open

            schema.enum_types.map do |name, enum_type|
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A Nested Iterator occurs when a block contains another block.

    Example

    Given

    class Duck
      class << self
        def duck_names
          %i!tick trick track!.each do |surname|
            %i!duck!.each do |last_name|
              puts "full name is #{surname} #{last_name}"
            end
          end
        end
      end
    end

    Reek would report the following warning:

    test.rb -- 1 warning:
      [5]:Duck#duck_names contains iterators nested 2 deep (NestedIterators)

    FrOData::Service#entity_types contains iterators nested 2 deep
    Open

            schema.entity_types.map do |entity_type|
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A Nested Iterator occurs when a block contains another block.

    Example

    Given

    class Duck
      class << self
        def duck_names
          %i!tick trick track!.each do |surname|
            %i!duck!.each do |last_name|
              puts "full name is #{surname} #{last_name}"
            end
          end
        end
      end
    end

    Reek would report the following warning:

    test.rb -- 1 warning:
      [5]:Duck#duck_names contains iterators nested 2 deep (NestedIterators)

    FrOData::Service has at least 24 methods
    Open

      class Service
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Too Many Methods is a special case of LargeClass.

    Example

    Given this configuration

    TooManyMethods:
      max_methods: 3

    and this code:

    class TooManyMethods
      def one; end
      def two; end
      def three; end
      def four; end
    end

    Reek would emit the following warning:

    test.rb -- 1 warning:
      [1]:TooManyMethods has at least 4 methods (TooManyMethods)

    FrOData::Service#read_metadata has approx 8 statements
    Open

        def read_metadata
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A method with Too Many Statements is any method that has a large number of lines.

    Too Many Statements warns about any method that has more than 5 statements. Reek's smell detector for Too Many Statements counts +1 for every simple statement in a method and +1 for every statement within a control structure (if, else, case, when, for, while, until, begin, rescue) but it doesn't count the control structure itself.

    So the following method would score +6 in Reek's statement-counting algorithm:

    def parse(arg, argv, &error)
      if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
        return nil, block, nil                                         # +1
      end
      opt = (val = parse_arg(val, &error))[1]                          # +2
      val = conv_arg(*val)                                             # +3
      if opt and !arg
        argv.shift                                                     # +4
      else
        val[0] = nil                                                   # +5
      end
      val                                                              # +6
    end

    (You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)

    FrOData::Service#complex_types contains iterators nested 2 deep
    Open

            schema.complex_types.map do |name, complex_type|
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A Nested Iterator occurs when a block contains another block.

    Example

    Given

    class Duck
      class << self
        def duck_names
          %i!tick trick track!.each do |surname|
            %i!duck!.each do |last_name|
              puts "full name is #{surname} #{last_name}"
            end
          end
        end
      end
    end

    Reek would report the following warning:

    test.rb -- 1 warning:
      [5]:Duck#duck_names contains iterators nested 2 deep (NestedIterators)

    FrOData::Service tests 'namespace.nil? || namespace.empty?' at least 3 times
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
          schemas[namespace].get_property_type(entity_name, property_name)
        end
    
        # Get the primary key for the supplied Entity.
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Repeated Conditional is a special case of Simulated Polymorphism. Basically it means you are checking the same value throughout a single class and take decisions based on this.

    Example

    Given

    class RepeatedConditionals
      attr_accessor :switch
    
      def repeat_1
        puts "Repeat 1!" if switch
      end
    
      def repeat_2
        puts "Repeat 2!" if switch
      end
    
      def repeat_3
        puts "Repeat 3!" if switch
      end
    end

    Reek would emit the following warning:

    test.rb -- 4 warnings:
      [5, 9, 13]:RepeatedConditionals tests switch at least 3 times (RepeatedConditional)

    If you get this warning then you are probably not using the right abstraction or even more probable, missing an additional abstraction.

    Complex method FrOData::Service#read_metadata (23.8)
    Open

        def read_metadata
          # From file, good for debugging
          if options[:metadata_file]
            data = File.read(options[:metadata_file])
            ::Nokogiri::XML(data).remove_namespaces!
    Severity: Minor
    Found in lib/frodata/service.rb by flog

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

    You can read more about ABC metrics or the flog tool

    FrOData::Service#read_metadata calls 'options[:metadata_file]' 2 times
    Open

          if options[:metadata_file]
            data = File.read(options[:metadata_file])
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    FrOData::Service#read_metadata calls 'response.timed_out?' 2 times
    Open

              break unless response.timed_out?
            end
            raise "Metadata Timeout" if response.timed_out?
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    FrOData::Service#register_custom_types calls '::FrOData::PropertyRegistry.add(name, type.property_class)' 2 times
    Open

            ::FrOData::PropertyRegistry.add(name, type.property_class)
          end
    
          enum_types.each do |name, type|
            ::FrOData::PropertyRegistry.add(name, type.property_class)
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    FrOData::Service#register_custom_types calls 'type.property_class' 2 times
    Open

            ::FrOData::PropertyRegistry.add(name, type.property_class)
          end
    
          enum_types.each do |name, type|
            ::FrOData::PropertyRegistry.add(name, type.property_class)
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    Complex method FrOData::Service#default_connection (21.2)
    Open

        def default_connection(&block)
          Faraday.new(service_url, options[:connection] || {}) do |conn|
            conn.request :url_encoded
            conn.response :logger, logger
            yield conn if block_given?
    Severity: Minor
    Found in lib/frodata/service.rb by flog

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

    You can read more about ABC metrics or the flog tool

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

        def default_connection(&block)
          Faraday.new(service_url, options[:connection] || {}) do |conn|
            conn.request :url_encoded
            conn.response :logger, logger
            yield conn if block_given?
    Severity: Minor
    Found in lib/frodata/service.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

    FrOData::Service#properties_for_entity performs a nil-check
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A NilCheck is a type check. Failures of NilCheck violate the "tell, don't ask" principle.

    Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.

    Example

    Given

    class Klass
      def nil_checker(argument)
        if argument.nil?
          puts "argument isn't nil!"
        end
      end
    end

    Reek would emit the following warning:

    test.rb -- 1 warning:
      [3]:Klass#nil_checker performs a nil-check. (NilCheck)

    FrOData::Service#get_property_type performs a nil-check
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A NilCheck is a type check. Failures of NilCheck violate the "tell, don't ask" principle.

    Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.

    Example

    Given

    class Klass
      def nil_checker(argument)
        if argument.nil?
          puts "argument isn't nil!"
        end
      end
    end

    Reek would emit the following warning:

    test.rb -- 1 warning:
      [3]:Klass#nil_checker performs a nil-check. (NilCheck)

    FrOData::Service#primary_key_for performs a nil-check
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by reek

    A NilCheck is a type check. Failures of NilCheck violate the "tell, don't ask" principle.

    Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.

    Example

    Given

    class Klass
      def nil_checker(argument)
        if argument.nil?
          puts "argument isn't nil!"
        end
      end
    end

    Reek would emit the following warning:

    test.rb -- 1 warning:
      [3]:Klass#nil_checker performs a nil-check. (NilCheck)

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

        def enum_types
          @enum_types ||= schemas.map do |namespace, schema|
            schema.enum_types.map do |name, enum_type|
              [ "#{namespace}.#{name}", enum_type ]
            end.to_h
    Severity: Minor
    Found in lib/frodata/service.rb and 1 other location - About 15 mins to fix
    lib/frodata/service.rb on lines 125..131

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 26.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

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

        def complex_types
          @complex_types ||= schemas.map do |namespace, schema|
            schema.complex_types.map do |name, complex_type|
              [ "#{namespace}.#{name}", complex_type ]
            end.to_h
    Severity: Minor
    Found in lib/frodata/service.rb and 1 other location - About 15 mins to fix
    lib/frodata/service.rb on lines 135..141

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 26.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

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

        def properties_for_entity(entity_name)
          namespace, _, entity_name = entity_name.rpartition('.')
          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
          schemas[namespace].properties_for_entity(entity_name)
    Severity: Minor
    Found in lib/frodata/service.rb and 1 other location - About 15 mins to fix
    lib/frodata/service.rb on lines 173..176

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 25.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

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

        def primary_key_for(entity_name)
          namespace, _, entity_name = entity_name.rpartition('.')
          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
          schemas[namespace].primary_key_for(entity_name)
    Severity: Minor
    Found in lib/frodata/service.rb and 1 other location - About 15 mins to fix
    lib/frodata/service.rb on lines 184..187

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 25.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Do not use space inside array brackets.
    Open

              [ "#{namespace}.#{name}", complex_type ]
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Checks that brackets used for array literals have or don't have surrounding space depending on configuration.

    Example: EnforcedStyle: space

    # The `space` style enforces that array literals have
    # surrounding space.
    
    # bad
    array = [a, b, c, d]
    
    # good
    array = [ a, b, c, d ]

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that array literals have
    # no surrounding space.
    
    # bad
    array = [ a, b, c, d ]
    
    # good
    array = [a, b, c, d]

    Example: EnforcedStyle: compact

    # The `compact` style normally requires a space inside
    # array brackets, with the exception that successive left
    # or right brackets are collapsed together in nested arrays.
    
    # bad
    array = [ a, [ b, c ] ]
    
    # good
    array = [ a, [ b, c ]]

    Line is too long. [84/80]
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    end at 203, 6 is not aligned with if at 199, 38.
    Open

          end
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks whether the end keywords are aligned properly.

    Three modes are supported through the EnforcedStyleAlignWith configuration parameter:

    If it's set to keyword (which is the default), the end shall be aligned with the start of the keyword (if, class, etc.).

    If it's set to variable the end shall be aligned with the left-hand-side of the variable assignment, if there is one.

    If it's set to start_of_line, the end shall be aligned with the start of the line where the matching keyword appears.

    Example: EnforcedStyleAlignWith: keyword (default)

    # bad
    
    variable = if true
        end
    
    # good
    
    variable = if true
               end

    Example: EnforcedStyleAlignWith: variable

    # bad
    
    variable = if true
        end
    
    # good
    
    variable = if true
    end

    Example: EnforcedStyleAlignWith: startofline

    # bad
    
    variable = if true
        end
    
    # good
    
    puts(if true
    end)

    Do not use space inside array brackets.
    Open

              [ "#{namespace}.#{name}", enum_type ]
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Checks that brackets used for array literals have or don't have surrounding space depending on configuration.

    Example: EnforcedStyle: space

    # The `space` style enforces that array literals have
    # surrounding space.
    
    # bad
    array = [a, b, c, d]
    
    # good
    array = [ a, b, c, d ]

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that array literals have
    # no surrounding space.
    
    # bad
    array = [ a, b, c, d ]
    
    # good
    array = [a, b, c, d]

    Example: EnforcedStyle: compact

    # The `compact` style normally requires a space inside
    # array brackets, with the exception that successive left
    # or right brackets are collapsed together in nested arrays.
    
    # bad
    array = [ a, [ b, c ] ]
    
    # good
    array = [ a, [ b, c ]]

    Do not use space inside array brackets.
    Open

              [ "#{namespace}.#{name}", complex_type ]
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Checks that brackets used for array literals have or don't have surrounding space depending on configuration.

    Example: EnforcedStyle: space

    # The `space` style enforces that array literals have
    # surrounding space.
    
    # bad
    array = [a, b, c, d]
    
    # good
    array = [ a, b, c, d ]

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that array literals have
    # no surrounding space.
    
    # bad
    array = [ a, b, c, d ]
    
    # good
    array = [a, b, c, d]

    Example: EnforcedStyle: compact

    # The `compact` style normally requires a space inside
    # array brackets, with the exception that successive left
    # or right brackets are collapsed together in nested arrays.
    
    # bad
    array = [ a, [ b, c ] ]
    
    # good
    array = [ a, [ b, c ]]

    Use 2 (not -30) spaces for indentation.
    Open

            Rails.logger
          else
            default_logger
    Severity: Minor
    Found in lib/frodata/service.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

    Do not use space inside array brackets.
    Open

              [ "#{namespace}.#{name}", enum_type ]
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Checks that brackets used for array literals have or don't have surrounding space depending on configuration.

    Example: EnforcedStyle: space

    # The `space` style enforces that array literals have
    # surrounding space.
    
    # bad
    array = [a, b, c, d]
    
    # good
    array = [ a, b, c, d ]

    Example: EnforcedStyle: no_space

    # The `no_space` style enforces that array literals have
    # no surrounding space.
    
    # bad
    array = [ a, b, c, d ]
    
    # good
    array = [a, b, c, d]

    Example: EnforcedStyle: compact

    # The `compact` style normally requires a space inside
    # array brackets, with the exception that successive left
    # or right brackets are collapsed together in nested arrays.
    
    # bad
    array = [ a, [ b, c ] ]
    
    # good
    array = [ a, [ b, c ]]

    Line is too long. [96/80]
    Open

          "#<#{self.class.name}:#{self.object_id} name='#{name}' service_url='#{self.service_url}'>"
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

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

            raise "Metadata Timeout" if response.timed_out?
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

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

    Example: EnforcedStyle: double_quotes

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

    Use attr_writer to define trivial writer methods.
    Open

        def logger=(custom_logger)
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop looks for trivial reader/writer methods, that could have been created with the attr_* family of functions automatically.

    Example:

    # bad
    def foo
      @foo
    end
    
    def bar=(val)
      @bar = val
    end
    
    def self.baz
      @baz
    end
    
    # good
    attr_reader :foo
    attr_writer :bar
    
    class << self
      attr_reader :baz
    end

    Freeze mutable objects assigned to constants.
    Open

        MIME_TYPES = {
          atom:  'application/atom+xml',
          json:  'application/json',
          xml:   'application/xml',
          plain: 'text/plain'
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

    Example:

    # bad
    CONST = [1, 2, 3]
    
    # good
    CONST = [1, 2, 3].freeze

    Redundant self detected.
    Open

          "#<#{self.class.name}:#{self.object_id} name='#{name}' service_url='#{self.service_url}'>"
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks for redundant uses of self.

    The usage of self is only needed when:

    • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

    • Calling an attribute writer to prevent an local variable assignment.

    Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

    Note we allow uses of self with operators because it would be awkward otherwise.

    Example:

    # bad
    def foo(bar)
      self.baz
    end
    
    # good
    def foo(bar)
      self.bar  # Resolves name clash with the argument.
    end
    
    def foo
      bar = 1
      self.bar  # Resolves name clash with the local variable.
    end
    
    def foo
      %w[x y z].select do |bar|
        self.bar == bar  # Resolves name clash with argument of the block.
      end
    end

    Freeze mutable objects assigned to constants.
    Open

        METADATA_TIMEOUTS = [20, 60]
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

    Example:

    # bad
    CONST = [1, 2, 3]
    
    # good
    CONST = [1, 2, 3].freeze

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

        def default_connection(&block)
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks for unused method arguments.

    Example:

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

    Example:

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

    Line is too long. [84/80]
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Redundant self detected.
    Open

          "#<#{self.class.name}:#{self.object_id} name='#{name}' service_url='#{self.service_url}'>"
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop checks for redundant uses of self.

    The usage of self is only needed when:

    • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

    • Calling an attribute writer to prevent an local variable assignment.

    Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

    Note we allow uses of self with operators because it would be awkward otherwise.

    Example:

    # bad
    def foo(bar)
      self.baz
    end
    
    # good
    def foo(bar)
      self.bar  # Resolves name clash with the argument.
    end
    
    def foo
      bar = 1
      self.bar  # Resolves name clash with the local variable.
    end
    
    def foo
      %w[x y z].select do |bar|
        self.bar == bar  # Resolves name clash with argument of the block.
      end
    end

    Line is too long. [84/80]
    Open

            conn.adapter Faraday.default_adapter unless conn.builder.send(:adapter_set?)
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Align else with if.
    Open

          else
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cops checks the alignment of else keywords. Normally they should be aligned with an if/unless/while/until/begin/def keyword, but there are special cases when they should follow the same rules as the alignment of end.

    Example:

    # bad
    if something
      code
     else
      code
    end
    
    # bad
    if something
      code
     elsif something
      code
    end
    
    # good
    if something
      code
    else
      code
    end

    Line is too long. [84/80]
    Open

          raise ArgumentError, 'Namespace missing' if namespace.nil? || namespace.empty?
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    Use the -> { ... } lambda literal syntax for single line lambdas.
    Open

          @metadata ||= lambda { read_metadata }.call
    Severity: Minor
    Found in lib/frodata/service.rb by rubocop

    This cop (by default) checks for uses of the lambda literal syntax for single line lambdas, and the method call syntax for multiline lambdas. It is configurable to enforce one of the styles for both single line and multiline lambdas as well.

    Example: EnforcedStyle: linecountdependent (default)

    # bad
    f = lambda { |x| x }
    f = ->(x) do
          x
        end
    
    # good
    f = ->(x) { x }
    f = lambda do |x|
          x
        end

    Example: EnforcedStyle: lambda

    # bad
    f = ->(x) { x }
    f = ->(x) do
          x
        end
    
    # good
    f = lambda { |x| x }
    f = lambda do |x|
          x
        end

    Example: EnforcedStyle: literal

    # bad
    f = lambda { |x| x }
    f = lambda do |x|
          x
        end
    
    # good
    f = ->(x) { x }
    f = ->(x) do
          x
        end

    There are no issues that match your filters.

    Category
    Status