Obrigado por considerar contribuir com o app do MacMagazine! Este guia detalha todo o processo, desde a configuração do ambiente até a aprovação do seu Pull Request.
- Pré-requisitos
- Configuração do ambiente
- Fluxo de trabalho
- Padrões de código
- Executando testes
- Criando um Pull Request
- Validações automáticas
- Processo de revisão
Antes de começar, certifique-se de ter:
- Xcode: Última versão disponível na App Store
- Swift: Versão incluída no Xcode mais recente
- SwiftLint: Para validação de código
brew install swiftlint
- Git: Para controle de versão
- Conta no GitHub: Para criar forks e pull requests
# Fork o repositório no GitHub primeiro, depois clone seu fork
git clone https://github.com/SEU_USUARIO/app-iOS.git
cd app-iOS
# Adicione o repositório original como upstream
git remote add upstream https://github.com/MacMagazine/app-iOS.gitO projeto usa Firebase para analytics. Execute o script de configuração:
./Support/Scripts/setup-firebase.shIsso cria um arquivo de configuração local com valores de placeholder. O app funciona normalmente sem credenciais reais do Firebase.
Para mais detalhes, consulte Support/FIREBASE.md.
open MacMagazine/MacMagazine.xcodeprojO Xcode resolverá automaticamente os Swift Packages na primeira abertura. Aguarde o download completar.
- Scheme:
MacMagazine - Dispositivo: Simulador iOS 26+ (iPhone ou iPad)
Pressione Cmd + B para verificar se o projeto compila corretamente.
Antes de começar qualquer trabalho, sincronize com o repositório principal:
git fetch upstream
git checkout release/v5
git merge upstream/release/v5
git push origin release/v5Use o padrão de nomenclatura adequado:
| Tipo | Prefixo | Exemplo |
|---|---|---|
| Bug fix | hotfix/ |
hotfix/fix-91-tableview-crash |
| Nova funcionalidade | feature/ |
feature/add-dark-mode-toggle |
| Documentação | docs/ |
docs/update-readme |
| Refatoração | refactor/ |
refactor/improve-feed-parser |
# Para bug fixes (inclua o número da issue)
git checkout -b hotfix/fix-123-descricao-curta
# Para novas funcionalidades
git checkout -b feature/nome-da-feature- Faça commits pequenos e frequentes
- Escreva mensagens de commit descritivas
- Mantenha o escopo focado na issue/feature
Antes de criar o PR, certifique-se de que:
- O código compila sem erros
- SwiftLint não reporta erros
- Todos os testes passam
- Você testou manualmente a funcionalidade
O projeto usa SwiftLint para manter a consistência do código.
# Verificar erros de lint
swiftlint lint
# Corrigir automaticamente quando possível
swiftlint lint --fixSeguimos o Swift Style Guide do Ray Wenderlich. Principais pontos:
- Use
camelCasepara variáveis e funções - Use
PascalCasepara tipos - Prefira
letsobrevarquando possível - Use
guardpara early exits - Documente APIs públicas
- O projeto é modular usando Swift Package Manager
- Cada feature tem seu próprio package em
MacMagazine/Features/ - Use SwiftUI para novas views
- Use Swift Concurrency (
async/await) para código assíncrono
- Selecione o scheme
MacMagazine - Pressione
Cmd + Upara rodar todos os testes - Ou use
Product > Test Plan > MacMagazinepara o test plan completo
xcodebuild test \
-project MacMagazine/MacMagazine.xcodeproj \
-scheme MacMagazine \
-testPlan MacMagazine \
-destination "platform=iOS Simulator,name=iPhone 16 Pro" \
-skipPackagePluginValidation \
-skipMacroValidationgit push origin sua-branchVá ao GitHub e clique em "Compare & pull request".
O título DEVE seguir o formato Conventional Commits:
<tipo>[escopo opcional]: <descrição>
| Tipo | Descrição |
|---|---|
feat |
Nova funcionalidade |
fix |
Correção de bug |
docs |
Apenas documentação |
style |
Formatação, sem mudança de código |
refactor |
Refatoração de código |
perf |
Melhoria de performance |
test |
Adição ou correção de testes |
chore |
Tarefas de manutenção |
build |
Mudanças no sistema de build |
ci |
Mudanças em CI/CD |
revert |
Reverter commit anterior |
feat: add push notification settings screen
fix(#123): resolve crash on feed refresh
docs: update contribution guidelines
refactor: improve date parsing performance
PRs do tipo fix DEVEM incluir o número da issue:
fix(#123): resolve authentication timeout
O PR template será carregado automaticamente. Preencha todas as seções:
- Description: Descreva suas mudanças
- Type of Change: Marque o tipo apropriado
- Related Issue: Link para a issue (ex:
Fixes #123) - Screenshots/Videos: Adicione evidências visuais
- Testing: Descreva como testou
- Checklist: Marque os itens completados
Certifique-se de que o PR aponta para a branch correta:
release/v5para a maioria das contribuiçõesdeveloppara desenvolvimento ativo
Quando você abre um PR, o GitHub Actions executa validações automáticas:
Sua branch deve estar sincronizada com a branch base. Se não estiver:
git fetch origin release/v5
git rebase origin/release/v5
git push --force-with-lease origin sua-branchO título deve seguir Conventional Commits (veja seção anterior).
O código deve passar em todas as verificações do SwiftLint:
swiftlint lint --strictTodos os testes devem passar. Verifique localmente antes de criar o PR.
| Status | Significado |
|---|---|
| Passing (verde) | Todas as verificações passaram |
| Failing (vermelho) | Alguma verificação falhou - veja os logs |
| Pending (amarelo) | Verificações em andamento |
Se alguma verificação falhar, clique em "Details" para ver os logs e corrigir o problema.
Um membro da equipe revisará seu PR. Isso pode incluir:
- Feedback sobre código
- Sugestões de melhorias
- Perguntas sobre implementação
- Responda a todos os comentários
- Faça as alterações solicitadas
- Marque conversas como resolvidas quando apropriado
Após fazer alterações:
git add .
git commit -m "address review feedback"
git push origin sua-branch- Após aprovação, um maintainer fará o merge
- Não faça squash de commits antes do merge (usamos squash merge)
- Sua branch será deletada automaticamente após o merge
- Abra uma issue para perguntas
- Consulte issues existentes para ver se sua dúvida já foi respondida
Obrigado por contribuir!
Equipe MM :-)