SuperAPI AI 工具集

django-verification

测试与质量

查看项目

更新于 10-15 08:34

技能介绍

用途

django-verification 是一个面向 Django 项目的验证型技能,用于在以下场景中确保应用质量与安全:提交 PR 之前、重大模型变更或迁移更新或依赖升级之后、部署到 staging 或生产之前的验证,以及运行完整的「环境 → 代码检查 → 测试 → 安全 → 部署就绪」流水线。它也可用于验证迁移安全性和测试覆盖率。

主要能力

该技能把验证过程拆分为多个阶段,每个阶段给出具体命令与检查项:

  • 阶段 1:环境检查:验证 Python 版本、虚拟环境(which python、pip list --outdated)、环境变量(如 DJANGO_SECRET_KEY)。若环境配置有误,应停止并修复。
  • 阶段 2:代码质量与格式:mypy 类型检查(--config-file pyproject.toml)、ruff 检查与修复、black 格式检查与自动修复、isort 导入排序检查与修复、以及 Django 专用检查 python manage.py check --deploy。常见问题包括公共函数缺少类型提示、PEP 8 违规、导入未排序、生产配置遗留 DEBUG 设置。
  • 阶段 3:迁移:showmigrations 检查未应用迁移、makemigrations --check 检查缺失迁移、migrate --plan 预演、实际应用迁移、必要时 makemigrations --merge 处理冲突。报告待处理迁移数量、冲突、以及模型变更是否缺少迁移。
  • 阶段 4:测试与覆盖率:pytest 运行全部测试并输出覆盖率(html 与 term-missing),支持按 app 运行、按 marker 运行(如排除 slow、只跑 integration)。报告通过/失败/跳过数量、整体覆盖率与按 app 拆分。覆盖率目标为:模型 90%+、序列化器 85%+、视图 80%+、服务 90%+、整体 80%+。
  • 阶段 5:安全扫描:pip-audit 与 safety check 检查依赖漏洞、manage.py check --deploy、bandit 安全扫描(JSON 输出)、gitleaks 密钥扫描、以及通过 Django settings 检查 DEBUG 状态。报告漏洞依赖、安全配置问题、硬编码密钥、DEBUG 模式状态(生产应为 False)。
  • 阶段 6:Django 管理命令:manage.py check、collectstatic、通过 manage.py shell 创建超级用户、数据库完整性检查、缓存后端连通性验证(如 Redis)。
  • 阶段 7:性能检查:借助 Django Debug Toolbar 或 django-debug-sqlshell 检查 N+1 查询与重复查询,通过 information_schema 查询缺失索引。报告每页查询数量(典型页面建议 < 50)、缺失索引、重复查询。
  • 阶段 8:静态资源:npm audit 与自动修复、npm run build、findstatic 验证静态文件。
  • 阶段 9:配置审查:通过 shell 脚本检查 DEBUG、SECRET_KEY 长度、ALLOWED_HOSTS、HTTPS 重定向、HSTS、数据库是否非 SQLite 等关键项。
  • 阶段 10:日志配置:测试 logging 输出、查看日志文件。
  • 阶段 11:API 文档(若使用 DRF):generateschema 生成 OpenAPI、校验 JSON 有效性、访问 Swagger UI。
  • 阶段 12:差异审查:git diff 统计与内容、检查 TODO/FIXME/HACK/XXX、print 调试语句、DEBUG = True、import pdb 等。检查清单包含无调试语句、无硬编码密钥、模型变更含迁移、配置变更已记录、外部调用有错误处理、必要时有事务管理。

该技能还提供输出报告模板(包含各阶段 ✓/✗ 状态与建议)、部署前检查清单,以及 GitHub Actions 持续集成示例,示例中安装依赖并依次执行代码质量检查、安全扫描和 pytest 覆盖率测试,并上传覆盖率。

使用方式

在触发该技能的场景下,按阶段依次执行文中列出的命令,并参照输出模板汇总报告;若有未通过项,按推荐步骤处理(如更新有漏洞的依赖后重跑安全扫描)。还可集成到 CI 中,如使用提供的 GitHub Actions 工作流。文中提示:自动化验证能捕获常见问题,但不能替代人工代码审查与 staging 环境测试。

适用场景

Django 项目的 PR 前检查、模型与迁移变更后的验证、依赖升级后的验证、部署前就绪检查,以及 CI 流水线中的质量与安全门禁。

限制

具体功能依赖项目实际安装和配置的工具(如 mypy、ruff、black、isort、pytest、pytest-django、pytest-cov、pip-audit、safety、bandit、gitleaks、Django Debug Toolbar、django-debug-sqlshell、drf-yasg 等);部分命令仅在对应工具或环境存在时才可用。性能检查与缓存验证需在具备相应配置的环境运行。