codebar/planner

View on GitHub
app/controllers/admin/workshops_controller.rb

Summary

Maintainability
A
3 hrs
Test Coverage

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

class Admin::WorkshopsController < Admin::ApplicationController
  include  Admin::SponsorConcerns
  include  Admin::WorkshopConcerns

  before_action :set_workshop_by_id, only: %i[show edit destroy update]

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

You can set constructs you want to fold with CountAsOne. Available are: 'array', 'hash', 'heredoc', and 'method_call'. Each construct will be counted as one line regardless of its actual size.

Example: CountAsOne: ['array', 'heredoc', 'method_call']

class Foo
  ARRAY = [         # +1
    1,
    2
  ]

  HASH = {          # +3
    key: 'value'
  }

  MSG = <<~HEREDOC  # +1
    Heredoc
    content.
  HEREDOC

  foo(              # +1
    1,
    2
  )
end                 # 6 points

NOTE: This cop also applies for Struct definitions.

Class WorkshopsController has 28 methods (exceeds 20 allowed). Consider refactoring.
Open

class Admin::WorkshopsController < Admin::ApplicationController
  include  Admin::SponsorConcerns
  include  Admin::WorkshopConcerns

  before_action :set_workshop_by_id, only: %i[show edit destroy update]
Severity: Minor
Found in app/controllers/admin/workshops_controller.rb - About 3 hrs to fix

    Assignment Branch Condition size for create is too high. [<2, 19, 3> 19.34/17]
    Open

      def create
        @workshop = Workshop.new(workshop_params)
        authorize(@workshop)
    
        if workshop_type_valid? && @workshop.save

    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 and https://en.wikipedia.org/wiki/ABC_Software_Metric.

    Interpreting ABC size:

    • <= 17 satisfactory
    • 18..30 unsatisfactory
    • > 30 dangerous

    You can have repeated "attributes" calls count as a single "branch". For this purpose, attributes are any method with no argument; no attempt is meant to distinguish actual attr_reader from other methods.

    Example: CountRepeatedAttributes: false (default is true)

    # `model` and `current_user`, referenced 3 times each,
     # are each counted as only 1 branch each if
     # `CountRepeatedAttributes` is set to 'false'
    
     def search
       @posts = model.active.visible_by(current_user)
                 .search(params[:q])
       @posts = model.some_process(@posts, current_user)
       @posts = model.another_process(@posts, current_user)
    
       render 'pages/search/page'
     end

    This cop also takes into account AllowedMethods (defaults to []) And AllowedPatterns (defaults to [])

    Do not prefix writer method names with set_.
    Open

      def set_organisers(organiser_ids)

    Makes sure that accessor methods are named properly. Applies to both instance and class methods.

    NOTE: Offenses are only registered for methods with the expected arity. Getters (get_attribute) must have no arguments to be registered, and setters (set_attribute(value)) must have exactly one.

    Example:

    # bad
    def set_attribute(value)
    end
    
    # good
    def attribute=(value)
    end
    
    # bad
    def get_attribute
    end
    
    # good
    def attribute
    end
    
    # accepted, incorrect arity for getter
    def get_value(attr)
    end
    
    # accepted, incorrect arity for setter
    def set_value
    end

    Do not prefix writer method names with set_.
    Open

      def set_host(host_id)

    Makes sure that accessor methods are named properly. Applies to both instance and class methods.

    NOTE: Offenses are only registered for methods with the expected arity. Getters (get_attribute) must have no arguments to be registered, and setters (set_attribute(value)) must have exactly one.

    Example:

    # bad
    def set_attribute(value)
    end
    
    # good
    def attribute=(value)
    end
    
    # bad
    def get_attribute
    end
    
    # good
    def attribute
    end
    
    # accepted, incorrect arity for getter
    def get_value(attr)
    end
    
    # accepted, incorrect arity for setter
    def set_value
    end

    There are no issues that match your filters.

    Category
    Status