discourse/discourse

View on GitHub

Showing 1,464 of 1,773 total issues

Method destroy has a Cognitive Complexity of 72 (exceeds 5 allowed). Consider refactoring.
Open

  def destroy(user, opts = {})
    raise Discourse::InvalidParameters.new('user is nil') unless user && user.is_a?(User)
    raise PostsExistError if !opts[:delete_posts] && user.posts.count != 0
    @guardian.ensure_can_delete_user!(user)

Severity: Minor
Found in app/services/user_destroyer.rb - About 1 day 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

Class Post has 76 methods (exceeds 20 allowed). Consider refactoring.
Open

class Post < ActiveRecord::Base
  include RateLimiter::OnCreateRecord
  include Trashable
  include Searchable
  include HasCustomFields
Severity: Major
Found in app/models/post.rb - About 1 day to fix

    Method send_notification_email has a Cognitive Complexity of 69 (exceeds 5 allowed). Consider refactoring.
    Open

      def send_notification_email(opts)
        post = opts[:post]
        title = opts[:title]
    
        allow_reply_by_email = opts[:allow_reply_by_email]
    Severity: Minor
    Found in app/mailers/user_notifications.rb - About 1 day 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

    File application_controller.rb has 604 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    require 'current_user'
    require_dependency 'canonical_url'
    require_dependency 'discourse'
    require_dependency 'custom_renderer'
    require_dependency 'archetype'
    Severity: Major
    Found in app/controllers/application_controller.rb - About 1 day to fix

      File posts_controller.rb has 600 lines of code (exceeds 250 allowed). Consider refactoring.
      Open

      require_dependency 'new_post_manager'
      require_dependency 'post_creator'
      require_dependency 'post_destroyer'
      require_dependency 'post_merger'
      require_dependency 'distributed_memoizer'
      Severity: Major
      Found in app/controllers/posts_controller.rb - About 1 day to fix

        Class Instance has 70 methods (exceeds 20 allowed). Consider refactoring.
        Open

        class Plugin::Instance
        
          attr_accessor :path, :metadata
          attr_reader :admin_route
        
        
        Severity: Major
        Found in lib/plugin/instance.rb - About 1 day to fix

          Method post_process_oneboxes has a Cognitive Complexity of 65 (exceeds 5 allowed). Consider refactoring.
          Open

            def post_process_oneboxes
              limit = SiteSetting.max_oneboxes_per_post
              oneboxes = {}
              inlineOneboxes = {}
          
          
          Severity: Minor
          Found in lib/cooked_post_processor.rb - About 1 day 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

          File group.rb has 589 lines of code (exceeds 250 allowed). Consider refactoring.
          Open

          require_dependency 'enum'
          
          class Group < ActiveRecord::Base
            include HasCustomFields
            include AnonCacheInvalidator
          Severity: Major
          Found in app/models/group.rb - About 1 day to fix

            Method password_reset has a Cognitive Complexity of 63 (exceeds 5 allowed). Consider refactoring.
            Open

              def password_reset
                expires_now
            
                token = params[:token]
            
            
            Severity: Minor
            Found in app/controllers/users_controller.rb - About 1 day 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

            Class PostSerializer has 67 methods (exceeds 20 allowed). Consider refactoring.
            Open

            class PostSerializer < BasicPostSerializer
            
              # To pass in additional information we might need
              INSTANCE_VARS ||= [
                :topic_view,
            Severity: Major
            Found in app/serializers/post_serializer.rb - About 1 day to fix

              File user_notifications.rb has 576 lines of code (exceeds 250 allowed). Consider refactoring.
              Open

              require_dependency 'markdown_linker'
              require_dependency 'email/message_builder'
              require_dependency 'age_words'
              require_dependency 'rtl'
              require_dependency 'discourse_ip_info'
              Severity: Major
              Found in app/mailers/user_notifications.rb - About 1 day to fix

                File track_selector_spec.rb has 571 lines of code (exceeds 250 allowed). Consider refactoring.
                Open

                require 'rails_helper'
                
                describe DiscourseNarrativeBot::TrackSelector do
                  let(:user) { Fabricate(:user) }
                  let(:discobot_user) { User.find(-2) }

                  Method send has a Cognitive Complexity of 61 (exceeds 5 allowed). Consider refactoring.
                  Open

                      def send(is_critical: false)
                        if SiteSetting.disable_emails == "yes" &&
                           @email_type.to_s != "admin_login" &&
                           !is_critical
                  
                  
                  Severity: Minor
                  Found in lib/email/sender.rb - About 1 day 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 show has a Cognitive Complexity of 60 (exceeds 5 allowed). Consider refactoring.
                  Open

                    def show
                      if request.referer
                        flash["referer"] ||= request.referer[0..255]
                      end
                  
                  
                  Severity: Minor
                  Found in app/controllers/topics_controller.rb - About 1 day 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

                  Class TopicView has 64 methods (exceeds 20 allowed). Consider refactoring.
                  Open

                  class TopicView
                    MEGA_TOPIC_POSTS_COUNT = 10000
                  
                    attr_reader :topic, :posts, :guardian, :filtered_posts, :chunk_size, :print, :message_bus_last_id
                    attr_accessor :draft, :draft_key, :draft_sequence, :user_custom_fields, :post_custom_fields, :post_number
                  Severity: Major
                  Found in lib/topic_view.rb - About 1 day to fix

                    Class ApplicationController has 62 methods (exceeds 20 allowed). Consider refactoring.
                    Open

                    class ApplicationController < ActionController::Base
                      include CurrentUser
                      include CanonicalURL::ControllerExtensions
                      include JsonError
                      include GlobalPath
                    Severity: Major
                    Found in app/controllers/application_controller.rb - About 1 day to fix

                      File post_alerter.rb has 541 lines of code (exceeds 250 allowed). Consider refactoring.
                      Open

                      require_dependency 'distributed_mutex'
                      require_dependency 'user_action_creator'
                      
                      class PostAlerter
                        def self.post_created(post, opts = {})
                      Severity: Major
                      Found in app/services/post_alerter.rb - About 1 day to fix

                        Class Report has 61 methods (exceeds 20 allowed). Consider refactoring.
                        Open

                        class Report
                          # Change this line each time report format change
                          # and you want to ensure cache is reset
                          SCHEMA_VERSION = 3
                        
                        
                        Severity: Major
                        Found in app/models/report.rb - About 1 day to fix

                          Class TopicsController has 60 methods (exceeds 20 allowed). Consider refactoring.
                          Open

                          class TopicsController < ApplicationController
                            requires_login only: [
                              :timings,
                              :destroy_timings,
                              :update,
                          Severity: Major
                          Found in app/controllers/topics_controller.rb - About 1 day to fix

                            File post_action.rb has 524 lines of code (exceeds 250 allowed). Consider refactoring.
                            Open

                            require_dependency 'rate_limiter'
                            require_dependency 'system_message'
                            
                            class PostAction < ActiveRecord::Base
                              class AlreadyActed < StandardError; end
                            Severity: Major
                            Found in app/models/post_action.rb - About 1 day to fix
                              Severity
                              Category
                              Status
                              Source
                              Language