discourse/discourse

View on GitHub

Showing 1,560 of 1,560 total issues

File topic.rb has 1114 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 143 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 997 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 928 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
            # TODO remove 01-01-2019
            self.ignored_columns = ["percent_rank", "vote_count"]
          
            class UserExists < StandardError; end
          Severity: Major
          Found in app/models/topic.rb - About 1 day to fix

            File receiver.rb has 803 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

              File report.rb has 795 lines of code (exceeds 250 allowed). Consider refactoring.
              Open

              require_dependency 'topic_subtype'
              
              class Report
                attr_accessor :type, :data, :total, :prev30Days, :start_date,
                              :end_date, :category_id, :group_id, :labels, :async,
              Severity: Major
              Found in app/models/report.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 722 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 703 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 681 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

                        File topics_controller.rb has 671 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 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 build has a Cognitive Complexity of 74 (exceeds 5 allowed). Consider refactoring.
                          Open

                              def build
                                return @wizard unless SiteSetting.wizard_enabled? && @wizard.user.try(:staff?)
                          
                                @wizard.append_step('locale') do |step|
                                  step.banner = "welcome.png"
                          Severity: Minor
                          Found in lib/wizard/builder.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 post.rb has 630 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

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

                            Severity
                            Category
                            Status
                            Source
                            Language