smudge/sojourn

View on GitHub

Showing 26 of 26 total issues

Assignment Branch Condition size for fetch_default_properties is too high. [25.32/15]
Open

    def fetch_default_properties(properties = {})
      if Sojourn.config.default_properties_block
        @ctx.define_singleton_method :sojourn_event_properties,
                                     Sojourn.config.default_properties_block
      end
Severity: Minor
Found in lib/sojourn/tracker.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

Class Request has 23 methods (exceeds 20 allowed). Consider refactoring.
Open

  class Request
    KEYS = %w(uuid referer host path controller action params method ip_address user_agent)

    attr_reader :request

Severity: Minor
Found in lib/sojourn/request.rb - About 2 hrs to fix

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

      def change
        create_table :sojourn_events do |t|
          t.string :sojourner_uuid, limit: 36, null: false
          t.string :name
          t.column :properties, :jsonb

    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.

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

        def referer_data
          return @referer_data if @referer_data
          p = RefererParser::Parser.new.parse(sanitized_referer)
          @referer_data = {
            known: p[:known],
    Severity: Minor
    Found in lib/sojourn/request.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.

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

    Gem::Specification.new do |spec|
      spec.name          = 'sojourn'
      spec.version       = Sojourn::VERSION
      spec.authors       = ['Smudge']
      spec.email         = ['nathan@ngriffith.com']
    Severity: Minor
    Found in sojourn.gemspec by rubocop

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

    Use properties[:referer] = request.referer_data instead of properties.merge! referer: request.referer_data.
    Open

          properties.merge! referer: request.referer_data if request.referer_data.any?
    Severity: Minor
    Found in lib/sojourn/tracker.rb by rubocop

    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)

    Freeze mutable objects assigned to constants.
    Open

        DEFAULT_FIELDS = %i(id sojourner_uuid name properties user_id created_at)
    Severity: Minor
    Found in lib/sojourn/event.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

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

      spec.add_dependency 'addressable', '~> 2.3.1'
    Severity: Minor
    Found in sojourn.gemspec by rubocop

    Dependencies in the gemspec should be alphabetically sorted.

    Example:

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

    Extra empty line detected at block body beginning.
    Open

    
      # A new '!sojourning' event is created whenever:

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

    Example: EnforcedStyle: empty_lines

    # good
    
    foo do |bar|
    
      # ...
    
    end

    Example: EnforcedStyle: noemptylines (default)

    # good
    
    foo do |bar|
      # ...
    end

    Use properties[:request] = request.raw_data instead of properties.merge! request: request.raw_data.
    Open

          properties.merge! request: request.raw_data
    Severity: Minor
    Found in lib/sojourn/tracker.rb by rubocop

    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)

    Avoid rescuing without specifying an error class.
    Open

        rescue
    Severity: Minor
    Found in lib/sojourn/request.rb by rubocop

    This cop checks for rescuing StandardError. There are two supported styles implicit and explicit. This cop will not register an offense if any error other than StandardError is specified.

    Example: EnforcedStyle: implicit

    # `implicit` will enforce using `rescue` instead of
    # `rescue StandardError`.
    
    # bad
    begin
      foo
    rescue StandardError
      bar
    end
    
    # good
    begin
      foo
    rescue
      bar
    end
    
    # good
    begin
      foo
    rescue OtherError
      bar
    end
    
    # good
    begin
      foo
    rescue StandardError, SecurityError
      bar
    end

    Example: EnforcedStyle: explicit (default)

    # `explicit` will enforce using `rescue StandardError`
    # instead of `rescue`.
    
    # bad
    begin
      foo
    rescue
      bar
    end
    
    # good
    begin
      foo
    rescue StandardError
      bar
    end
    
    # good
    begin
      foo
    rescue OtherError
      bar
    end
    
    # good
    begin
      foo
    rescue StandardError, SecurityError
      bar
    end

    Use %i or %I for an array of symbols.
    Open

        self.campaign_params = [:utm_source, :utm_medium, :utm_term, :utm_content, :utm_campaign]
    Severity: Minor
    Found in lib/sojourn/configuration.rb by rubocop

    This cop can check for array literals made up of symbols that are not using the %i() syntax.

    Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

    Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

    Example: EnforcedStyle: percent (default)

    # good
    %i[foo bar baz]
    
    # bad
    [:foo, :bar, :baz]

    Example: EnforcedStyle: brackets

    # good
    [:foo, :bar, :baz]
    
    # bad
    %i[foo bar baz]

    %w-literals should be delimited by [ and ].
    Open

        @tables_exist ||= %w(sojourn_events sojourn_requests)
    Severity: Minor
    Found in lib/sojourn.rb by rubocop

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

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

    Example:

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

    Dependencies should be sorted in an alphabetical order within their section of the gemspec. Dependency rails should appear before referer-parser.
    Open

      spec.add_dependency 'rails', '~> 3.2.0'
    Severity: Minor
    Found in sojourn.gemspec by rubocop

    Dependencies in the gemspec should be alphabetically sorted.

    Example:

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

    Use tr instead of gsub.
    Open

    sojourn tracks the referer, utm data, and logged-in user (if any)).gsub("\n", ' ')
    Severity: Minor
    Found in sojourn.gemspec by rubocop

    This cop identifies places where gsub can be replaced by tr or delete.

    Example:

    # bad
    'abc'.gsub('b', 'd')
    'abc'.gsub('a', '')
    'abc'.gsub(/a/, 'd')
    'abc'.gsub!('a', 'd')
    
    # good
    'abc'.gsub(/.*/, 'a')
    'abc'.gsub(/a+/, 'd')
    'abc'.tr('b', 'd')
    'a b c'.delete(' ')

    Use properties[:browser] = request.browser_data instead of properties.merge! browser: request.browser_data.
    Open

          properties.merge! browser: request.browser_data
    Severity: Minor
    Found in lib/sojourn/tracker.rb by rubocop

    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)

    Extra empty line detected at block body end.
    Open

    
    end

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

    Example: EnforcedStyle: empty_lines

    # good
    
    foo do |bar|
    
      # ...
    
    end

    Example: EnforcedStyle: noemptylines (default)

    # good
    
    foo do |bar|
      # ...
    end

    %w-literals should be delimited by [ and ].
    Open

        KEYS = %w(uuid referer host path controller action params method ip_address user_agent)
    Severity: Minor
    Found in lib/sojourn/request.rb by rubocop

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

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

    Example:

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

    %i-literals should be delimited by [ and ].
    Open

        DEFAULT_FIELDS = %i(id sojourner_uuid name properties user_id created_at)
    Severity: Minor
    Found in lib/sojourn/event.rb by rubocop

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

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

    Example:

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

    Use properties[:campaign] = request.tracked_params instead of properties.merge! campaign: request.tracked_params.
    Open

          properties.merge! campaign: request.tracked_params if request.tracked_params.any?
    Severity: Minor
    Found in lib/sojourn/tracker.rb by rubocop

    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)
    Severity
    Category
    Status
    Source
    Language