lib/csv/parser.rb

Summary

Maintainability
F
1 wk
Test Coverage
B
86%

File parser.rb has 1095 lines of code (exceeds 250 allowed). Consider refactoring.
Open

require "strscan"

require_relative "input_record_separator"
require_relative "row"
require_relative "table"
Severity: Major
Found in lib/csv/parser.rb - About 2 days to fix

    Class Parser has 54 methods (exceeds 20 allowed). Consider refactoring.
    Open

      class Parser
        #
        # A CSV::Parser is m17n aware. The parser works in the Encoding of the IO
        # or String object being read from or written to. Your data is never transcoded
        # (unless you ask Ruby to transcode it for you) and will literally be parsed in
    Severity: Major
    Found in lib/csv/parser.rb - About 7 hrs to fix

      Method parse_quoted_column_value has a Cognitive Complexity of 37 (exceeds 5 allowed). Consider refactoring.
      Open

          def parse_quoted_column_value
            quotes = @scanner.scan_all(@quotes)
            return nil unless quotes
      
            @quoted_column_value = true
      Severity: Minor
      Found in lib/csv/parser.rb - About 5 hrs 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 parse_quotable_robust has a Cognitive Complexity of 36 (exceeds 5 allowed). Consider refactoring.
      Open

          def parse_quotable_robust(&block)
            row = []
            quoted_fields = []
            skip_needless_lines
            start_row
      Severity: Minor
      Found in lib/csv/parser.rb - About 5 hrs 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 each_line has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
      Open

            def each_line(row_separator)
              return enum_for(__method__, row_separator) unless block_given?
              buffer = nil
              input = @scanner.rest
              position = @scanner.pos
      Severity: Minor
      Found in lib/csv/parser.rb - About 4 hrs 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 parse_quotable_loose has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
      Open

          def parse_quotable_loose(&block)
            @scanner.keep_start
            @scanner.each_line(@row_separator) do |line|
              if @skip_lines and skip_line?(line)
                @scanner.keep_drop
      Severity: Minor
      Found in lib/csv/parser.rb - About 4 hrs 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 resolve_row_separator has a Cognitive Complexity of 27 (exceeds 5 allowed). Consider refactoring.
      Open

          def resolve_row_separator(separator)
            if separator == :auto
              cr = "\r".encode(@encoding)
              lf = "\n".encode(@encoding)
              if @input.is_a?(StringIO)
      Severity: Minor
      Found in lib/csv/parser.rb - About 3 hrs 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 parse_column_value has a Cognitive Complexity of 23 (exceeds 5 allowed). Consider refactoring.
      Open

          def parse_column_value
            if @liberal_parsing
              quoted_value = parse_quoted_column_value
              if quoted_value
                @scanner.scan_all(@strip_value) if @strip_value
      Severity: Minor
      Found in lib/csv/parser.rb - About 3 hrs 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 parse_no_quote has a Cognitive Complexity of 21 (exceeds 5 allowed). Consider refactoring.
      Open

          def parse_no_quote(&block)
            @scanner.each_line(@row_separator) do |line|
              next if @skip_lines and skip_line?(line)
              original_line = line
              line = line.delete_suffix(@row_separator)
      Severity: Minor
      Found in lib/csv/parser.rb - About 2 hrs 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 read_chunk has a Cognitive Complexity of 21 (exceeds 5 allowed). Consider refactoring.
      Open

            def read_chunk
              return false if @last_scanner
      
              adjust_last_keep
      
      
      Severity: Minor
      Found in lib/csv/parser.rb - About 2 hrs 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 parse_quotable_robust has 67 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          def parse_quotable_robust(&block)
            row = []
            quoted_fields = []
            skip_needless_lines
            start_row
      Severity: Major
      Found in lib/csv/parser.rb - About 2 hrs to fix

        Method parse_unquoted_column_value has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring.
        Open

            def parse_unquoted_column_value
              value = @scanner.scan_all(@unquoted_value)
              return nil unless value
        
              @unquoted_column_value = true
        Severity: Minor
        Found in lib/csv/parser.rb - About 2 hrs 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 parse has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
        Open

            def parse(&block)
              return to_enum(__method__) unless block_given?
        
              if @return_headers and @headers and @raw_headers
                headers = Row.new(@headers, @raw_headers, true)
        Severity: Minor
        Found in lib/csv/parser.rb - About 2 hrs 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 parse_quotable_loose has 56 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            def parse_quotable_loose(&block)
              @scanner.keep_start
              @scanner.each_line(@row_separator) do |line|
                if @skip_lines and skip_line?(line)
                  @scanner.keep_drop
        Severity: Major
        Found in lib/csv/parser.rb - About 2 hrs to fix

          Method build_scanner has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
          Open

                def build_scanner
                  string = nil
                  if @samples.empty? and @input.is_a?(StringIO)
                    string = @input.read
                  elsif @samples.size == 1 and
          Severity: Minor
          Found in lib/csv/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 each_line has 42 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

                def each_line(row_separator)
                  return enum_for(__method__, row_separator) unless block_given?
                  buffer = nil
                  input = @scanner.rest
                  position = @scanner.pos
          Severity: Minor
          Found in lib/csv/parser.rb - About 1 hr to fix

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

                def prepare_separators
                  column_separator = @options[:column_separator]
                  @column_separator = column_separator.to_s.encode(@encoding)
                  if @column_separator.size < 1
                    message = ":col_sep must be 1 or more characters: "
            Severity: Minor
            Found in lib/csv/parser.rb - About 1 hr to fix

              Method keep_back has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
              Open

                    def keep_back
                      # trace(__method__, :start)
                      scanner, start, buffer = @keeps.pop
                      if buffer
                        # trace(__method__, :rescan, start, buffer)
              Severity: Minor
              Found in lib/csv/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 parse_quoted_column_value has 37 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  def parse_quoted_column_value
                    quotes = @scanner.scan_all(@quotes)
                    return nil unless quotes
              
                    @quoted_column_value = true
              Severity: Minor
              Found in lib/csv/parser.rb - About 1 hr to fix

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

                    def parse(&block)
                      return to_enum(__method__) unless block_given?
                
                      if @return_headers and @headers and @raw_headers
                        headers = Row.new(@headers, @raw_headers, true)
                Severity: Minor
                Found in lib/csv/parser.rb - About 1 hr to fix

                  Method read_chunk has 32 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                        def read_chunk
                          return false if @last_scanner
                  
                          adjust_last_keep
                  
                  
                  Severity: Minor
                  Found in lib/csv/parser.rb - About 1 hr to fix

                    Method detect_row_separator has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
                    Open

                        def detect_row_separator(sample, cr, lf)
                          lf_index = sample.index(lf)
                          if lf_index
                            cr_index = sample[0, lf_index].index(cr)
                          else
                    Severity: Minor
                    Found in lib/csv/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 emit_row has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
                    Open

                        def emit_row(row, quoted_fields, &block)
                          @lineno += 1
                    
                          raw_row = row
                          if @use_headers
                    Severity: Minor
                    Found in lib/csv/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 keep_back has 30 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                          def keep_back
                            # trace(__method__, :start)
                            scanner, start, buffer = @keeps.pop
                            if buffer
                              # trace(__method__, :rescan, start, buffer)
                    Severity: Minor
                    Found in lib/csv/parser.rb - About 1 hr to fix

                      Method prepare_strip has 30 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          def prepare_strip
                            @strip = @options[:strip]
                            @escaped_strip = nil
                            @strip_value = nil
                            @rstrip_value = nil
                      Severity: Minor
                      Found in lib/csv/parser.rb - About 1 hr to fix

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

                            def resolve_row_separator(separator)
                              if separator == :auto
                                cr = "\r".encode(@encoding)
                                lf = "\n".encode(@encoding)
                                if @input.is_a?(StringIO)
                        Severity: Minor
                        Found in lib/csv/parser.rb - About 1 hr to fix

                          Method parse_column_value has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                              def parse_column_value
                                if @liberal_parsing
                                  quoted_value = parse_quoted_column_value
                                  if quoted_value
                                    @scanner.scan_all(@strip_value) if @strip_value
                          Severity: Minor
                          Found in lib/csv/parser.rb - About 1 hr to fix

                            Method parse_no_quote has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                                def parse_no_quote(&block)
                                  @scanner.each_line(@row_separator) do |line|
                                    next if @skip_lines and skip_line?(line)
                                    original_line = line
                                    line = line.delete_suffix(@row_separator)
                            Severity: Minor
                            Found in lib/csv/parser.rb - About 1 hr to fix

                              Method build_scanner has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                              Open

                                    def build_scanner
                                      string = nil
                                      if @samples.empty? and @input.is_a?(StringIO)
                                        string = @input.read
                                      elsif @samples.size == 1 and
                              Severity: Minor
                              Found in lib/csv/parser.rb - About 1 hr to fix

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

                                    def skip_needless_lines
                                      return unless @skip_lines
                                
                                      until @scanner.eos?
                                        @scanner.keep_start
                                Severity: Minor
                                Found in lib/csv/parser.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 adjust_last_keep has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                                Open

                                      def adjust_last_keep
                                        # trace(__method__, :start)
                                
                                        keep = @keeps.last
                                        # trace(__method__, :done, :empty) if keep.nil?
                                Severity: Minor
                                Found in lib/csv/parser.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

                                Avoid deeply nested control flow statements.
                                Open

                                            if liberal_parsing? and (new_line = @scanner.check(@line_end))
                                              message =
                                                "Illegal end-of-line sequence outside of a quoted field " +
                                                "<#{new_line.inspect}>"
                                            else
                                Severity: Major
                                Found in lib/csv/parser.rb - About 45 mins to fix

                                  Avoid deeply nested control flow statements.
                                  Open

                                                if quoted_value.empty? # %Q{""...} case
                                                  return @quote_character + unquoted_value
                                                end
                                  Severity: Major
                                  Found in lib/csv/parser.rb - About 45 mins to fix

                                    Method prepare_strip has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                                    Open

                                        def prepare_strip
                                          @strip = @options[:strip]
                                          @escaped_strip = nil
                                          @strip_value = nil
                                          @rstrip_value = nil
                                    Severity: Minor
                                    Found in lib/csv/parser.rb - About 45 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 prepare_separators has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                                    Open

                                        def prepare_separators
                                          column_separator = @options[:column_separator]
                                          @column_separator = column_separator.to_s.encode(@encoding)
                                          if @column_separator.size < 1
                                            message = ":col_sep must be 1 or more characters: "
                                    Severity: Minor
                                    Found in lib/csv/parser.rb - About 45 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

                                    Avoid deeply nested control flow statements.
                                    Open

                                              elsif @unquoted_column_value and
                                                    (new_line = @scanner.scan(@line_end))
                                                ignore_broken_line
                                                message = "Unquoted fields do not allow new line " +
                                                          "<#{new_line.inspect}>"
                                    Severity: Major
                                    Found in lib/csv/parser.rb - About 45 mins to fix

                                      Method strip_value has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                                      Open

                                          def strip_value(value)
                                            return value unless @strip
                                            return value if value.nil?
                                      
                                            case @strip
                                      Severity: Minor
                                      Found in lib/csv/parser.rb - About 45 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

                                      Avoid deeply nested control flow statements.
                                      Open

                                                    if @scanner.scan(@escaped_quote)
                                                      value << @quote_character
                                                    else
                                                      value << @backslash_character
                                                    end
                                      Severity: Major
                                      Found in lib/csv/parser.rb - About 45 mins to fix

                                        Avoid deeply nested control flow statements.
                                        Open

                                                      if n_quotes.zero?
                                                        quoted_fields << false
                                                        # no quote
                                                      elsif n_quotes == 2 and
                                                           column.start_with?(@quote_character) and
                                        Severity: Major
                                        Found in lib/csv/parser.rb - About 45 mins to fix

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

                                              def validate_strip_and_col_sep_options
                                                return unless @strip
                                          
                                                if @strip.is_a?(String)
                                                  if @column_separator.start_with?(@strip) || @column_separator.end_with?(@strip)
                                          Severity: Minor
                                          Found in lib/csv/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 prepare_quoted has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                              def prepare_quoted
                                                if @quote_character
                                                  @quotes = Regexp.new(@escaped_quote_character +
                                                                       "+".encode(@encoding))
                                                  no_quoted_values = @escaped_quote_character.dup
                                          Severity: Minor
                                          Found in lib/csv/parser.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 build_scanner has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                                def build_scanner
                                                  inputs = @samples.collect do |sample|
                                                    UnoptimizedStringIO.new(sample)
                                                  end
                                                  if @input.is_a?(StringIO)
                                          Severity: Minor
                                          Found in lib/csv/parser.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 keep_drop has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                                def keep_drop
                                                  _, _, buffer = @keeps.pop
                                                  # trace(__method__, :done, :empty) unless buffer
                                                  return unless buffer
                                          
                                          
                                          Severity: Minor
                                          Found in lib/csv/parser.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

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

                                              def parse_column_end
                                                return true if @scanner.scan(@column_end)
                                                return false unless @column_ends
                                          
                                                @scanner.keep_start
                                          Severity: Minor
                                          Found in lib/csv/parser.rb and 1 other location - About 25 mins to fix
                                          lib/csv/parser.rb on lines 1214..1223

                                          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 30.

                                          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 parse_row_end
                                                return true if @scanner.scan(@row_end)
                                                return false unless @row_ends
                                                @scanner.keep_start
                                                if @row_ends.all? {|row_end| @scanner.scan(row_end)}
                                          Severity: Minor
                                          Found in lib/csv/parser.rb and 1 other location - About 25 mins to fix
                                          lib/csv/parser.rb on lines 1200..1210

                                          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 30.

                                          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

                                          There are no issues that match your filters.

                                          Category
                                          Status