Repository Analysis

cookiecutter/cookiecutter-django

Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.

13.3 Low AI signal View on GitHub
13.3
Adjusted Score
13.3
Raw Score
100%
Time Factor
2026-05-30
Last Push
13,526
Stars
Python
Language
23,089
Lines of Code
167
Files
135
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 3MEDIUM 64LOW 68

Pattern Findings

135 matches across 11 categories. Click a row to expand file-level details.

Decorative Section Separators59 hits · 206 pts
SeverityFileLineSnippet
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py10# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py22# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py32# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py54# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py60# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py93 # ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py103# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py109# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py120# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/local.py125# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py10# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py20# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py25# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py30# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py34# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py40# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/test.py45# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py231# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py236# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py245# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py255# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py21# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py48# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py65# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py72# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py115# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py120# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py134# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py154# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py175# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py189# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py196# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py267# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py294# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py336# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py360# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py367# -------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py393# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/config/settings/base.py405# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py26# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py33# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py37# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py52# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py118# ------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py214# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py230# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py235# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py302# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py330# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py335# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py412# ------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py442# -------------------------------------------------------------------------------
MEDIUM…kiecutter.project_slug}}/config/settings/production.py450# ------------------------------------------------------------------------------
MEDIUM…ookiecutter.project_slug}}/requirements/production.txt18# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/requirements/base.txt24# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/requirements/local.txt13# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/requirements/local.txt23# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/requirements/local.txt28# ------------------------------------------------------------------------------
MEDIUM{{cookiecutter.project_slug}}/requirements/local.txt35# ------------------------------------------------------------------------------
Hyper-Verbose Identifiers38 hits · 42 pts
SeverityFileLineSnippet
LOWtests/test_cookiecutter_generation.py223def test_django_upgrade_passes(cookies, context_override):
LOWtests/test_cookiecutter_generation.py281def test_travis_invokes_pytest(cookies, context, use_docker, expected_test_script):
LOWtests/test_cookiecutter_generation.py306def test_gitlab_invokes_precommit_and_pytest(cookies, context, use_docker, expected_test_script):
LOWtests/test_cookiecutter_generation.py333def test_github_invokes_linter_and_pytest(cookies, context, use_docker, expected_test_script):
LOWtests/test_cookiecutter_generation.py372def test_error_if_incompatible(cookies, context, invalid_context):
LOWtests/test_cookiecutter_generation.py389def test_pycharm_docs_removed(cookies, context, editor, pycharm_docs_exist):
LOWtests/test_cookiecutter_generation.py442def test_pre_commit_without_heroku(cookies, context):
LOWtests/test_hooks.py21def test_append_to_gitignore_file(working_directory):
LOWhooks/post_gen_project.py40def remove_custom_user_manager_files():
LOWhooks/post_gen_project.py74def remove_nginx_docker_files():
LOWhooks/post_gen_project.py200def remove_prettier_pre_commit():
LOWhooks/post_gen_project.py204def remove_repo_from_pre_commit_config(repo_to_remove: str):
LOWhooks/post_gen_project.py244def remove_dotgitlabciyml_file():
LOWhooks/post_gen_project.py349def set_celery_flower_password(file_path, value=None):
LOWhooks/post_gen_project.py386def set_flags_in_settings_files():
LOWhooks/post_gen_project.py391def remove_envs_and_associated_files():
LOWhooks/post_gen_project.py397def remove_celery_compose_dirs():
LOWhooks/post_gen_project.py415def remove_ninja_starter_files():
LOWscripts/node_version.py21def get_version_from_dockerfile() -> str:
LOWscripts/node_version.py34def get_version_from_package_json() -> str:
LOWscripts/node_version.py39def update_package_json_version(old_version: str, new_version: str) -> None:
LOWscripts/node_version.py48def update_production_node_version(old_version: str, new_version: str) -> None:
LOWscripts/ruff_version.py26def get_requirements_txt_version() -> str:
LOWscripts/ruff_version.py34def get_pyproject_toml_version() -> str:
LOWscripts/update_changelog.py86def group_pulls_by_change_type(
LOWscripts/create_django_issue.py88def get_all_latest_django_versions(
LOW…{cookiecutter.project_slug}}/users/tests/test_forms.py20 def test_username_validation_error_msg(self, user: User):
LOW…okiecutter.project_slug}}/users/tests/test_managers.py32 def test_create_superuser_username_ignored(self):
LOW…okiecutter.project_slug}}/users/tests/test_managers.py41def test_createsuperuser_command():
LOW…cookiecutter.project_slug}}/users/tests/test_models.py9def test_user_get_absolute_url(user: User):
LOW…ecutter.project_slug}}/users/tests/api/test_openapi.py7def test_api_docs_accessible_by_admin(admin_client):
LOW…ecutter.project_slug}}/users/tests/api/test_openapi.py18def test_api_docs_not_accessible_by_anonymous_users(client):
LOW…ecutter.project_slug}}/users/tests/api/test_openapi.py31def test_api_schema_generated_successfully(admin_client):
LOW…kiecutter.project_slug}}/users/tests/api/test_views.py71def test_list_users_as_anonymous_user(client: Client):
LOW…kiecutter.project_slug}}/users/tests/api/test_views.py77def test_list_users_as_authenticated_user(client: Client, user: User):
LOW…kiecutter.project_slug}}/users/tests/api/test_views.py100def test_retrieve_current_user(client: Client, user: User):
LOW…kiecutter.project_slug}}/users/tests/api/test_views.py131def test_retrieve_current_user(client: Client, user: User):
LOW…kiecutter.project_slug}}/users/tests/api/test_views.py164def test_retrieve_another_user(client: Client, user: User):
Over-Commented Block15 hits · 14 pts
SeverityFileLineSnippet
LOWCHANGELOG.md8641## [2018-02-16]
LOWdocs/conf.py1# cookiecutter-django documentation build configuration file.
LOWdocs/conf.py41master_doc = "index"
LOWdocs/conf.py61# non-false value, then it is used:
LOWdocs/conf.py81# output. They are ignored by default.
LOWdocs/conf.py101
LOWdocs/conf.py121# Add any paths that contain custom static files (such as style sheets) here,
LOWdocs/conf.py141# If false, no module index is generated.
LOWdocs/conf.py161# base URL from which the finished HTML is served.
LOWdocs/conf.py201
LOW{{cookiecutter.project_slug}}/config/settings/test.py21# https://docs.djangoproject.com/en/dev/ref/settings/#password-hashers
LOW{{cookiecutter.project_slug}}/config/settings/base.py21# ------------------------------------------------------------------------------
LOW{{cookiecutter.project_slug}}/config/settings/base.py301CELERY_BROKER_USE_SSL = {"ssl_cert_reqs": ssl.CERT_NONE} if REDIS_SSL else None
LOW{{cookiecutter.project_slug}}/docs/conf.py61# a list of builtin themes.
LOW…ecutter.project_slug}}/.devcontainer/devcontainer.json61 },
Excessive Try-Catch Wrapping5 hits · 12 pts
SeverityFileLineSnippet
MEDIUMhooks/post_gen_project.py557 print(f"Error building Docker image: {e}", file=sys.stderr)
MEDIUMhooks/post_gen_project.py571 print(f"Error installing production dependencies: {e}", file=sys.stderr)
MEDIUMhooks/post_gen_project.py578 print(f"Error installing local dependencies: {e}", file=sys.stderr)
LOWhooks/post_gen_project.py586 except Exception as e: # noqa: BLE001
MEDIUMhooks/post_gen_project.py587 print(f"Error removing 'requirements' folder: {e}", file=sys.stderr)
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippet
HIGHscripts/update_changelog.py159 repo.git.push(server, GIT_BRANCH)
HIGHscripts/update_changelog.py160 repo.git.push("--tags", server, GIT_BRANCH)
Unused Imports6 hits · 6 pts
SeverityFileLineSnippet
LOWscripts/node_version.py1
LOWscripts/ruff_version.py1
LOWscripts/create_django_issue.py10
LOW…r.project_slug}}/merge_production_dotenvs_in_dotenv.py1
LOW…lug}}/tests/test_merge_production_dotenvs_in_dotenv.py1
LOW…slug}}/{{cookiecutter.project_slug}}/users/managers.py7
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippet
HIGHdocs/6-about/generative-ai.md17Maintainers may close issues and PRs that are not useful or productive, including those that are fully generated by AI.
Fake / Example Data3 hits · 4 pts
SeverityFileLineSnippet
LOW…{cookiecutter.project_slug}}/users/tests/test_admin.py51 user = User.objects.get(email="admin@example.com")
LOW…okiecutter.project_slug}}/users/tests/test_managers.py24 email="admin@example.com",
LOW…okiecutter.project_slug}}/users/tests/test_managers.py27 assert user.email == "admin@example.com"
Deep Nesting3 hits · 3 pts
SeverityFileLineSnippet
LOWtests/test_cookiecutter_generation.py333
LOWscripts/update_changelog.py86
LOWscripts/create_django_issue.py154
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMdocs/conf.py3# This file is execfile()d with the current directory set to its containing dir.
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippet
LOWscripts/create_django_issue.py289 # Check if there are any djs
LOW…tter.project_slug}}/utility/install_os_dependencies.sh9# Check if a requirements file exist for the current distribution.