discourse/discourse

View on GitHub

Showing 1,264 of 1,529 total issues

File topic.rb has 1090 lines of code (exceeds 250 allowed). Consider refactoring.
Open

require_dependency 'slug'
require_dependency 'avatar_lookup'
require_dependency 'topic_view'
require_dependency 'rate_limiter'
require_dependency 'text_sentinel'
Severity: Major
Found in app/models/topic.rb - About 2 days to fix

    Class User has 137 methods (exceeds 20 allowed). Consider refactoring.
    Open

    class User < ActiveRecord::Base
      include Searchable
      include Roleable
      include HasCustomFields
      include SecondFactorManager
    Severity: Major
    Found in app/models/user.rb - About 2 days to fix

      File user.rb has 969 lines of code (exceeds 250 allowed). Consider refactoring.
      Open

      require_dependency 'jobs/base'
      require_dependency 'email'
      require_dependency 'email_token'
      require_dependency 'email_validator'
      require_dependency 'trust_level'
      Severity: Major
      Found in app/models/user.rb - About 2 days to fix

        File users_controller.rb has 867 lines of code (exceeds 250 allowed). Consider refactoring.
        Open

        require_dependency 'discourse_hub'
        require_dependency 'user_name_suggester'
        require_dependency 'rate_limiter'
        require_dependency 'wizard'
        require_dependency 'wizard/builder'
        Severity: Major
        Found in app/controllers/users_controller.rb - About 2 days to fix

          Class Topic has 102 methods (exceeds 20 allowed). Consider refactoring.
          Open

          class Topic < ActiveRecord::Base
            class UserExists < StandardError; end
            include ActionView::Helpers::SanitizeHelper
            include RateLimiter::OnCreateRecord
            include HasCustomFields
          Severity: Major
          Found in app/models/topic.rb - About 1 day to fix

            File receiver.rb has 777 lines of code (exceeds 250 allowed). Consider refactoring.
            Open

            require "digest"
            require_dependency "new_post_manager"
            require_dependency "post_action_creator"
            require_dependency "html_to_markdown"
            require_dependency "plain_text_to_markdown"
            Severity: Major
            Found in lib/email/receiver.rb - About 1 day to fix

              Method extract_from has a Cognitive Complexity of 87 (exceeds 5 allowed). Consider refactoring.
              Open

                def self.extract_from(post)
                  return if post.blank? || post.whisper?
              
                  added_urls = []
                  TopicLink.transaction do
              Severity: Minor
              Found in app/models/topic_link.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 topic_query.rb has 744 lines of code (exceeds 250 allowed). Consider refactoring.
              Open

              require_dependency 'topic_list'
              require_dependency 'suggested_topics_builder'
              require_dependency 'topic_query_sql'
              require_dependency 'avatar_lookup'
              
              
              Severity: Major
              Found in lib/topic_query.rb - About 1 day to fix

                Method to_html has a Cognitive Complexity of 85 (exceeds 5 allowed). Consider refactoring.
                Open

                  def to_html
                    do_quotes = do_backticks = do_dashes = do_ellipses = nil
                
                    if @options.include?(0)
                      # Do nothing.
                Severity: Minor
                Found in lib/html_prettify.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 search.rb has 712 lines of code (exceeds 250 allowed). Consider refactoring.
                Open

                require_dependency 'search/grouped_search_results'
                
                class Search
                  INDEX_VERSION = 2.freeze
                
                
                Severity: Major
                Found in lib/search.rb - About 1 day to fix

                  File new_user_narrative_spec.rb has 685 lines of code (exceeds 250 allowed). Consider refactoring.
                  Open

                  require 'rails_helper'
                  
                  describe DiscourseNarrativeBot::NewUserNarrative do
                    let!(:welcome_topic) { Fabricate(:topic, title: 'Welcome to Discourse') }
                    let(:discobot_user) { User.find(-2) }

                    File routes.rb has 668 lines of code (exceeds 250 allowed). Consider refactoring.
                    Open

                    require "sidekiq/web"
                    require_dependency "scheduler/web"
                    require_dependency "admin_constraint"
                    require_dependency "staff_constraint"
                    require_dependency "homepage_constraint"
                    Severity: Major
                    Found in config/routes.rb - About 1 day to fix

                      Method default_results has a Cognitive Complexity of 75 (exceeds 5 allowed). Consider refactoring.
                      Open

                          def default_results(options = {})
                            options.reverse_merge!(@options)
                            options.reverse_merge!(per_page: per_page_setting)
                      
                            # Whether to return visible topics
                      Severity: Minor
                      Found in lib/topic_query.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 posts_query has a Cognitive Complexity of 72 (exceeds 5 allowed). Consider refactoring.
                      Open

                          def posts_query(limit, opts = nil)
                            opts ||= {}
                            posts = Post.where(post_type: Topic.visible_post_types(@guardian.user))
                              .joins(:post_search_data, :topic)
                              .joins("LEFT JOIN categories ON categories.id = topics.category_id")
                      Severity: Minor
                      Found in lib/search.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 topics_controller.rb has 639 lines of code (exceeds 250 allowed). Consider refactoring.
                      Open

                      require_dependency 'topic_view'
                      require_dependency 'promotion'
                      require_dependency 'url_helper'
                      require_dependency 'topics_bulk_action'
                      require_dependency 'discourse_event'
                      Severity: Major
                      Found in app/controllers/topics_controller.rb - About 1 day to fix

                        Method destroy has a Cognitive Complexity of 69 (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

                        Method vote has a Cognitive Complexity of 68 (exceeds 5 allowed). Consider refactoring.
                        Open

                              def vote(post_id, poll_name, options, user)
                                DistributedMutex.synchronize("#{PLUGIN_NAME}-#{post_id}") do
                                  user_id = user.id
                                  post = Post.find_by(id: post_id)
                        
                        
                        Severity: Minor
                        Found in plugins/poll/plugin.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 post.rb has 606 lines of code (exceeds 250 allowed). Consider refactoring.
                        Open

                        require_dependency 'pretty_text'
                        require_dependency 'rate_limiter'
                        require_dependency 'post_revisor'
                        require_dependency 'enum'
                        require_dependency 'post_analyzer'
                        Severity: Major
                        Found in app/models/post.rb - About 1 day to fix

                          Class Post has 70 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

                            Class Receiver has 69 methods (exceeds 20 allowed). Consider refactoring.
                            Open

                              class Receiver
                                include ActionView::Helpers::NumberHelper
                            
                                # If you add a new error, you need to
                                #   * add it to Email::Processor#handle_failure()
                            Severity: Major
                            Found in lib/email/receiver.rb - About 1 day to fix
                              Severity
                              Category
                              Status
                              Source
                              Language