django/django

View on GitHub
django/db/migrations/autodetector.py

Summary

Maintainability
F
2 wks
Test Coverage

File autodetector.py has 1659 lines of code (exceeds 250 allowed). Consider refactoring.
Open

import functools
import re
from collections import defaultdict, namedtuple
from enum import Enum
from graphlib import TopologicalSorter
Severity: Major
Found in django/db/migrations/autodetector.py - About 4 days to fix

    Function _build_migration_list has a Cognitive Complexity of 83 (exceeds 5 allowed). Consider refactoring.
    Open

        def _build_migration_list(self, graph=None):
            """
            Chop the lists of operations up into migrations with dependencies on
            each other. Do this by going through an app's list of operations until
            one is found that has an outgoing dependency that isn't in another
    Severity: Minor
    Found in django/db/migrations/autodetector.py - 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

    Function generate_created_models has a Cognitive Complexity of 58 (exceeds 5 allowed). Consider refactoring.
    Open

        def generate_created_models(self):
            """
            Find all new models (both managed and unmanaged) and make create
            operations for them as well as separate operations to create any
            foreign key or M2M relationships (these are optimized later, if
    Severity: Minor
    Found in django/db/migrations/autodetector.py - 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

    Function generate_altered_fields has a Cognitive Complexity of 44 (exceeds 5 allowed). Consider refactoring.
    Open

        def generate_altered_fields(self):
            """
            Make AlterField operations, or possibly RemovedField/AddField if alter
            isn't possible.
            """
    Severity: Minor
    Found in django/db/migrations/autodetector.py - About 6 hrs 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

    MigrationAutodetector has 48 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class MigrationAutodetector:
        """
        Take a pair of ProjectStates and compare them to see what the first would
        need doing to make it match the second (the second usually being the
        project's current state).
    Severity: Minor
    Found in django/db/migrations/autodetector.py - About 6 hrs to fix

      Consider simplifying this complex logical expression.
      Open

              if (
                  dependency.field_name is None
                  and dependency.type == OperationDependency.Type.CREATE
              ):
                  return (
      Severity: Critical
      Found in django/db/migrations/autodetector.py - About 6 hrs to fix

        Function create_altered_indexes has a Cognitive Complexity of 34 (exceeds 5 allowed). Consider refactoring.
        Open

            def create_altered_indexes(self):
                option_name = operations.AddIndex.option_name
                self.renamed_index_together_values = defaultdict(list)
        
                for app_label, model_name in sorted(self.kept_model_keys):
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 5 hrs 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

        Function arrange_for_graph has a Cognitive Complexity of 32 (exceeds 5 allowed). Consider refactoring.
        Open

            def arrange_for_graph(self, changes, graph, migration_name=None):
                """
                Take a result from changes() and a MigrationGraph, and fix the names
                and dependencies of the changes so they extend the graph from the leaf
                nodes for each app.
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 4 hrs 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

        Function generate_deleted_models has a Cognitive Complexity of 31 (exceeds 5 allowed). Consider refactoring.
        Open

            def generate_deleted_models(self):
                """
                Find all deleted models (managed and unmanaged) and make delete
                operations for them as well as separate operations to delete any
                foreign key or M2M relationships (these are optimized later, if
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 4 hrs 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

        Function generate_renamed_models has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
        Open

            def generate_renamed_models(self):
                """
                Find any renamed models, generate the operations for them, and remove
                the old entry from the model lists. Must be run before other
                model-level generation.
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 4 hrs 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

        Function create_renamed_fields has a Cognitive Complexity of 27 (exceeds 5 allowed). Consider refactoring.
        Open

            def create_renamed_fields(self):
                """Work out renamed fields."""
                self.renamed_operations = []
                old_field_keys = self.old_field_keys.copy()
                for app_label, model_name, field_name in sorted(
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 3 hrs 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

        Function check_dependency has a Cognitive Complexity of 25 (exceeds 5 allowed). Consider refactoring.
        Open

            def check_dependency(self, operation, dependency):
                """
                Return True if the given operation depends on the given dependency,
                False otherwise.
                """
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 3 hrs 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

        Function _get_altered_foo_together_operations has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
        Open

            def _get_altered_foo_together_operations(self, option_name):
                for app_label, model_name in sorted(self.kept_model_keys):
                    old_model_name = self.renamed_models.get(
                        (app_label, model_name), model_name
                    )
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 2 hrs 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

        Function _detect_changes has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
        Open

            def _detect_changes(self, convert_apps=None, graph=None):
                """
                Return a dict of migration plans which will achieve the
                change from from_state to to_state. The dict has app labels
                as keys and a list of migrations as values.
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 2 hrs 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

        Function _detect_changes has 45 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            def _detect_changes(self, convert_apps=None, graph=None):
                """
                Return a dict of migration plans which will achieve the
                change from from_state to to_state. The dict has app labels
                as keys and a list of migrations as values.
        Severity: Minor
        Found in django/db/migrations/autodetector.py - About 1 hr to fix

          Function _generate_added_field has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
          Open

              def _generate_added_field(self, app_label, model_name, field_name):
                  field = self.to_state.models[app_label, model_name].get_field(field_name)
                  # Adding a field always depends at least on its removal.
                  dependencies = [
                      OperationDependency(
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 1 hr 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

          Function _sort_migrations has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
          Open

              def _sort_migrations(self):
                  """
                  Reorder to make things possible. Reordering may be needed so FKs work
                  nicely inside the same app.
                  """
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 1 hr 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

          Function _get_dependencies_for_foreign_key has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
          Open

              def _get_dependencies_for_foreign_key(app_label, model_name, field, project_state):
                  remote_field_model = None
                  if hasattr(field.remote_field, "model"):
                      remote_field_model = field.remote_field.model
                  else:
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 1 hr 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

          Function deep_deconstruct has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
          Open

              def deep_deconstruct(self, obj):
                  """
                  Recursive deconstruction for a field and its arguments.
                  Used for full comparison for rename/alter; sometimes a single-level
                  deconstruction will not compare correctly.
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 1 hr 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

          Function _trim_to_apps has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
          Open

              def _trim_to_apps(self, changes, app_labels):
                  """
                  Take changes from arrange_for_graph() and set of app labels, and return
                  a modified set of changes which trims out as many migrations that are
                  not in app_labels as possible. Note that some other migrations may
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 1 hr 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

          Function _optimize_migrations has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
          Open

              def _optimize_migrations(self):
                  # Add in internal dependencies among the migrations
                  for app_label, migrations in self.migrations.items():
                      for m1, m2 in zip(migrations, migrations[1:]):
                          m2.dependencies.append((app_label, m1.name))
          Severity: Minor
          Found in django/db/migrations/autodetector.py - About 55 mins 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

          Avoid deeply nested control flow statements.
          Open

                                  if dep.app_label != app_label:
                                      # External app dependency. See if it's not yet
                                      # satisfied.
                                      for other_operation in self.generated_operations.get(
                                          dep.app_label, []
          Severity: Major
          Found in django/db/migrations/autodetector.py - About 45 mins to fix

            Avoid deeply nested control flow statements.
            Open

                                    if old_rel_to in self.renamed_models_rel:
                                        old_field_dec[2]["to"] = self.renamed_models_rel[old_rel_to]
                                old_field.set_attributes_from_name(rem_field_name)
            Severity: Major
            Found in django/db/migrations/autodetector.py - About 45 mins to fix

              Avoid deeply nested control flow statements.
              Open

                                      if self.questioner.ask_rename(
                                          model_name, rem_field_name, field_name, field
                                      ):
                                          self.renamed_operations.append(
                                              (
              Severity: Major
              Found in django/db/migrations/autodetector.py - About 45 mins to fix

                Avoid deeply nested control flow statements.
                Open

                                        if new_default is not models.NOT_PROVIDED:
                                            field.default = new_default
                                            preserve_default = False
                                    else:
                Severity: Major
                Found in django/db/migrations/autodetector.py - About 45 mins to fix

                  Avoid deeply nested control flow statements.
                  Open

                                          if field.primary_key:
                                              primary_key_rel = field.remote_field.model
                                          elif not field.remote_field.parent_link:
                                              related_fields[field_name] = field
                                      if getattr(field.remote_field, "through", None):
                  Severity: Major
                  Found in django/db/migrations/autodetector.py - About 45 mins to fix

                    Avoid deeply nested control flow statements.
                    Open

                                            if field.remote_field and field.remote_field.model:
                                                dependencies.extend(
                                                    self._get_dependencies_for_foreign_key(
                                                        app_label,
                                                        model_name,
                    Severity: Major
                    Found in django/db/migrations/autodetector.py - About 45 mins to fix

                      Avoid deeply nested control flow statements.
                      Open

                                              if self.questioner.ask_rename_model(
                                                  rem_model_state, model_state
                                              ):
                                                  dependencies = []
                                                  fields = list(model_state.fields.values()) + [
                      Severity: Major
                      Found in django/db/migrations/autodetector.py - About 45 mins to fix

                        Avoid deeply nested control flow statements.
                        Open

                                                for removed_base_field in removed_base_fields:
                                                    dependencies.append(
                                                        OperationDependency(
                                                            base_app_label,
                                                            base_name,
                        Severity: Major
                        Found in django/db/migrations/autodetector.py - About 45 mins to fix

                          Avoid deeply nested control flow statements.
                          Open

                                                  if (
                                                      not args
                                                      and new_index.fields == list(removed_index_together)
                                                      and set(kwargs) == {"name", "fields"}
                                                  ):
                          Severity: Major
                          Found in django/db/migrations/autodetector.py - About 45 mins to fix

                            Function generate_created_proxies has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                            Open

                                def generate_created_proxies(self):
                                    """
                                    Make CreateModel statements for proxy models. Use the same statements
                                    as that way there's less code duplication, but for proxy models it's
                                    safe to skip all the pointless field stuff and chuck out an operation.
                            Severity: Minor
                            Found in django/db/migrations/autodetector.py - About 35 mins 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

                            Avoid too many return statements within this function.
                            Open

                                        return RegexObject(obj)
                            Severity: Major
                            Found in django/db/migrations/autodetector.py - About 30 mins to fix

                              Avoid too many return statements within this function.
                              Open

                                          return obj
                              Severity: Major
                              Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                Avoid too many return statements within this function.
                                Open

                                            return (
                                Severity: Major
                                Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                  Avoid too many return statements within this function.
                                  Open

                                              return (
                                  Severity: Major
                                  Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                    Avoid too many return statements within this function.
                                    Open

                                                return (
                                    Severity: Major
                                    Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                      Avoid too many return statements within this function.
                                      Open

                                                  return obj
                                      Severity: Major
                                      Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                        Avoid too many return statements within this function.
                                        Open

                                                    return (
                                        Severity: Major
                                        Found in django/db/migrations/autodetector.py - About 30 mins to fix

                                          Function _generate_through_model_map has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                              def _generate_through_model_map(self):
                                                  """Through model map generation."""
                                                  for app_label, model_name in sorted(self.old_model_keys):
                                                      old_model_name = self.renamed_models.get(
                                                          (app_label, model_name), model_name
                                          Severity: Minor
                                          Found in django/db/migrations/autodetector.py - About 25 mins 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

                                          Function _generate_removed_altered_foo_together has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                              def _generate_removed_altered_foo_together(self, operation):
                                                  for (
                                                      old_value,
                                                      new_value,
                                                      app_label,
                                          Severity: Minor
                                          Found in django/db/migrations/autodetector.py - About 25 mins 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

                                          Function generate_altered_order_with_respect_to has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                          Open

                                              def generate_altered_order_with_respect_to(self):
                                                  for app_label, model_name in sorted(self.kept_model_keys):
                                                      old_model_name = self.renamed_models.get(
                                                          (app_label, model_name), model_name
                                                      )
                                          Severity: Minor
                                          Found in django/db/migrations/autodetector.py - About 25 mins 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

                                          There are no issues that match your filters.

                                          Category
                                          Status