Extra Guia de Ferramentas • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 9.1 — Configuração de Recomendações de Extensões (.vscode/extensions.json)

Contexto: Criar o arquivo de governança que solicita automaticamente a instalação de extensões essenciais para um projeto Python/FastAPI no VS Code.

Extensões Requeridas:

  1. ms-python.python
  2. charliermarsh.ruff
  3. eamodio.gitlens
  4. usernamehw.errorlens

Resultado Esperado

{
  "recommendations": [
    "ms-python.python",
    "charliermarsh.ruff",
    "eamodio.gitlens",
    "usernamehw.errorlens"
  ]
}

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: extensions_SeuNome.json
  2. Envie na tarefa: Atividade Cap 09 - VS Code Profissional
🔑 Gabarito de Código & Solução Comentada
{
  "recommendations": [
    "ms-python.python",
    "charliermarsh.ruff",
    "eamodio.gitlens",
    "usernamehw.errorlens"
  ]
}

Comentário: Ao abrir o repositório, o VS Code exibe uma notificação para instalar todas as extensões recomendadas com um clique.


🎯 Nível 2: Prática

Problema 9.2 — Arquivo de Configuração de Workspace (.vscode/settings.json)

Escreva o settings.json com formatação automática ao salvar com o Ruff, régua visual na coluna 88 e 120, e exclusão de indexação de pastas pesadas.

🔑 Gabarito de Código & Solução Comentada
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "charliermarsh.ruff",
  "editor.rulers": [88, 120],
  "editor.bracketPairColorization.enabled": true,
  "files.exclude": {
    "**/.git": true,
    "**/.venv": true,
    "**/__pycache__": true,
    "**/.pytest_cache": true
  }
}

🎯 Nível 3: Integração

Problema 9.3 — Configuração de Depuração com Múltiplos Perfis (.vscode/launch.json)

Configure o launch.json com 2 configurações de depuração:

  1. FastAPI Local Server (executa uvicorn main:app --reload).
  2. Pytest Current File (executa os testes do arquivo ativo aberto no editor).
🔑 Gabarito de Código & Solução Comentada
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "FastAPI: Uvicorn Server",
      "type": "debugpy",
      "request": "launch",
      "module": "uvicorn",
      "args": ["src.main:app", "--reload", "--port", "8000"],
      "jinja": true,
      "justMyCode": true
    },
    {
      "name": "Pytest: Current File",
      "type": "debugpy",
      "request": "launch",
      "module": "pytest",
      "args": ["${file}", "-v"],
      "console": "integratedTerminal",
      "justMyCode": false
    }
  ]
}

🎯 Nível 4: Desafio

Problema 9.4 — Configuração Completa de Dev Container (.devcontainer/devcontainer.json)

Crie uma especificação de Dev Container para desenvolvimento em Python 3.12 com Docker in Docker (DinD), porta 8000 encaminhada, extensões pré-instaladas e script pós-criação (pip install -e .).

🔑 Gabarito de Código & Solução Comentada
// .devcontainer/devcontainer.json
{
  "name": "Python 3.12 Dev Environment",
  "image": "mcr.microsoft.com/devcontainers/python:3.12-bookworm",
  "features": {
    "ghcr.io/devcontainers/features/docker-in-docker:2": {}
  },
  "forwardPorts": [8000],
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "charliermarsh.ruff",
        "tamasfe.even-better-toml",
        "rangav.vscode-thunder-client"
      ],
      "settings": {
        "editor.formatOnSave": true,
        "python.defaultInterpreterPath": "/usr/local/bin/python"
      }
    }
  },
  "postCreateCommand": "pip install --upgrade pip && pip install -r requirements.txt"
}