✅ Linting e Formatting no CI/CD - Implementado
Data: 2025-12-01
Status: ✅ IMPLEMENTADO
🎯 Objetivo
Garantir que todo código Python siga os padrões de formatação e linting antes de ser mergeado, falhando o pipeline CI/CD se não passar.
✅ Implementação
GitHub Actions
Criado workflow .github/workflows/lint-and-format.yml que:
- ✅ Executa em push e pull requests para
mainedevelop - ✅ Verifica formatação com Black (
--check) - ✅ Verifica ordenação de imports com isort (
--check-only) - ✅ Executa linting com Flake8
- ✅ Executa type checking com mypy (opcional, não falha o pipeline)
- ✅ Comenta em PRs quando há falhas
- ✅ Falha o pipeline se qualquer check falhar (
continue-on-error: false)
GitLab CI
Atualizado .gitlab-ci.yml para:
- ✅ Remover
|| truedos comandos de linting/formatting - ✅ Definir
allow_failure: falseno job de lint - ✅ Executar checks em
common/,scripts/,tests/ - ✅ Falhar o pipeline se qualquer check falhar
🔧 Ferramentas Configuradas
Black (Formatação)
- Configuração:
pyproject.toml - Linha máxima: 100 caracteres
- Comando:
black --check common/ scripts/ tests/ --line-length=100
isort (Ordenação de Imports)
- Configuração:
pyproject.toml - Profile: black (compatível com Black)
- Linha máxima: 100 caracteres
- Comando:
isort --check-only common/ scripts/ tests/ --profile=black --line-length=100
Flake8 (Linting)
- Configuração:
.flake8 - Linha máxima: 100 caracteres
- Ignorar: E203, W503, E501 (compatível com Black)
- Comando:
flake8 common/ scripts/ tests/ --max-line-length=100 --extend-ignore=E203,W503,E501
mypy (Type Checking)
- Configuração:
pyproject.toml - Modo: Opcional (não falha o pipeline)
- Comando:
mypy common/ --ignore-missing-imports --no-strict-optional
📋 Como Usar
Localmente
Antes de fazer commit, execute:
# Formatar código
make format
# Verificar formatação (sem modificar)
make format-check
# Verificar linting
make lint
# Ou manualmente:
black common/ scripts/ tests/ --line-length=100
isort common/ scripts/ tests/ --profile=black --line-length=100
flake8 common/ scripts/ tests/ --max-line-length=100 --extend-ignore=E203,W503,E501
No CI/CD
O pipeline executa automaticamente em:
- Push para main ou develop
- Pull requests para main ou develop
- Quando arquivos Python são modificados
Se o pipeline falhar:
1. Execute make format localmente
2. Execute make lint para verificar
3. Faça commit das correções
4. Push novamente
🎯 Benefícios
- Consistência - Todo código segue o mesmo padrão
- Qualidade - Problemas são detectados antes do merge
- Produtividade - Menos tempo em code review de formatação
- Automação - Não precisa lembrar de formatar manualmente
📝 Notas
- O pipeline falha se formatação ou linting não passar
- mypy é opcional e não falha o pipeline (pode ser habilitado depois)
- Comentários automáticos em PRs ajudam desenvolvedores a corrigir problemas
- Makefile fornece comandos convenientes para desenvolvimento local
🔄 Próximos Passos
- ⏳ Adicionar pre-commit hooks para validação local antes do commit
- ⏳ Habilitar mypy como obrigatório quando type hints estiverem completos
- ⏳ Adicionar validação de linting/formatting para outros apps (4c, csuite-executive, etc.)
Última atualização: 2025-12-01