This page was machine-translated from English. Report issues.

Como criar um gerador de crachá de cobertura de código do GitHub

Crie uma ferramenta poderosa que gera e atualiza automaticamente crachás de cobertura de código para repositórios do GitHub. Este projeto agiliza o processo de exibir a qualidade do código, incentiva melhores práticas de teste e fornece informações valiosas para desenvolvedores e partes interessadas.

Create your own plan

Learn2Vibe AI

Online

AI

What do you want to build?

Resumo Simples

Um gerador de crachás de cobertura de código do GitHub, fácil de usar, que automatiza o processo de criação e exibição de métricas de cobertura de código, melhorando a transparência do projeto e a garantia de qualidade.

Documento de Requisitos do Produto (PRD)

Objetivos:

  • Desenvolver uma aplicação fácil de usar para gerar crachás de cobertura de código para repositórios do GitHub
  • Automatizar o processo de cálculo e atualização das métricas de cobertura de código
  • Integrar-se perfeitamente com o ecossistema do GitHub
  • Fornecer crachás claros e visualmente atraentes que exibem os percentuais de cobertura

Público-alvo:

  • Desenvolvedores de software e equipes que usam o GitHub para controle de versão
  • Mantenedores de projetos de código aberto
  • Profissionais de garantia de qualidade

Recursos-chave:

  1. Integração com o GitHub para acesso a repositórios e suporte a webhooks
  2. Cálculo automatizado da cobertura de código
  3. Designs de crachás personalizáveis
  4. Acompanhamento e relatórios históricos da cobertura
  5. Suporte a várias linguagens de programação e estruturas de teste
  6. Painel do usuário para gerenciar vários projetos

Requisitos do usuário:

  • Processo de configuração fácil com autenticação OAuth do GitHub
  • Interface intuitiva para configurar as configurações de cobertura e visualizar relatórios
  • Atualizações em tempo real dos crachás com as mudanças no código
  • Capacidade de incorporar crachás em arquivos README e outras documentações

Fluxos de Usuário

  1. Registro do Usuário e Integração com o GitHub:

    • O usuário se inscreve na aplicação
    • Autentica-se com o GitHub OAuth
    • Seleciona os repositórios a serem monitorados para cobertura de código
  2. Geração de Crachá de Cobertura:

    • O usuário configura as configurações de cobertura para um repositório
    • A aplicação calcula a cobertura de código inicial
    • O crachá é gerado e as instruções para incorporá-lo são fornecidas
  3. Visualizando e Gerenciando Relatórios de Cobertura:

    • O usuário acessa o painel para visualizar as métricas de cobertura em todos os projetos
    • Analisa os dados e tendências históricos
    • Ajusta as configurações ou desencadeia atualizações manuais conforme necessário

Especificações Técnicas

  • Frontend: React.js para uma interface do usuário dinâmica e responsiva
  • Backend: Node.js com Express.js para o desenvolvimento da API
  • Banco de Dados: PostgreSQL para armazenar dados de usuários e métricas de cobertura
  • Autenticação: GitHub OAuth para autenticação de usuários
  • Análise de Cobertura: Ferramentas específicas por linguagem (ex.: Jest para JavaScript, Coverage.py para Python)
  • Geração de Crachás: Biblioteca de geração de SVG (ex.: D3.js ou manipulação SVG personalizada)
  • Integração de API: API do GitHub para acesso a repositórios e gerenciamento de webhooks
  • Hospedagem: Plataforma de nuvem como Heroku ou AWS para escalabilidade
  • CI/CD: GitHub Actions para testes automatizados e implantação

Endpoints da API

  • POST /api/auth/github: Lidar com a autenticação OAuth do GitHub
  • GET /api/repositories: Buscar os repositórios do GitHub do usuário
  • POST /api/coverage/configure: Configurar o acompanhamento de cobertura para um repositório
  • GET /api/coverage/:repoId: Recuperar os dados de cobertura atual de um repositório
  • POST /api/coverage/:repoId/update: Desencadear uma atualização manual da cobertura
  • GET /api/badges/:repoId: Gerar e servir o SVG do crachá de cobertura

Esquema do Banco de Dados

Tabela de Usuários:

  • id (PK)
  • github_id
  • username
  • email
  • access_token

Tabela de Repositórios:

  • id (PK)
  • user_id (FK para Usuários)
  • github_repo_id
  • name
  • coverage_config (JSON)

Tabela de Métricas de Cobertura:

  • id (PK)
  • repository_id (FK para Repositórios)
  • timestamp
  • coverage_percentage
  • lines_covered
  • total_lines

Estrutura de Arquivos

/src /components Header.js Footer.js Dashboard.js RepositoryList.js CoverageChart.js BadgeConfigurator.js /pages Home.js Login.js Dashboard.js RepositorySettings.js /api github.js coverage.js badges.js /utils svgGenerator.js coverageCalculator.js /styles global.css components.css /public /assets logo.svg favicon.ico /server /routes auth.js repositories.js coverage.js badges.js /models user.js repository.js coverageMetric.js /services githubService.js coverageService.js server.js README.md package.json .env

Plano de Implementação

  1. Configuração do Projeto (1-2 dias)

    • Inicializar o frontend React e o backend Node.js
    • Configurar o controle de versão e a estrutura do projeto
  2. Autenticação e Integração com o GitHub (3-4 dias)

    • Implementar o fluxo de autenticação OAuth do GitHub
    • Criar funcionalidade de registro e login de usuários
  3. Gerenciamento de Repositórios (2-3 dias)

    • Desenvolver recursos de listagem e seleção de repositórios
    • Implementar a configuração de webhook para os repositórios selecionados
  4. Mecanismo de Cálculo de Cobertura (4-5 dias)

    • Criar um sistema modular para diferentes linguagens de programação
    • Implementar a lógica central de cálculo de cobertura
  5. Geração de Crachás (2-3 dias)

    • Desenvolver a geração de SVG para crachás
    • Criar opções de personalização para a aparência do crachá
  6. Painel do Usuário (3-4 dias)

    • Construir a interface principal do painel
    • Implementar histórico de cobertura e visualizações de tendências
  7. Desenvolvimento de API (3-4 dias)

    • Criar endpoints de API RESTful
    • Implementar a persistência de dados com PostgreSQL
  8. Testes e Garantia de Qualidade (2-3 dias)

    • Escrever testes unitários e de integração
    • Realizar testes manuais e corrigir bugs
  9. Documentação e Implantação (2-3 dias)

    • Escrever documentação para usuários e desenvolvedores
    • Configurar o pipeline de CI/CD e implantar em produção

Estratégia de Implantação

  1. Escolha um provedor de nuvem (ex.: Heroku ou AWS) para hospedar a aplicação
  2. Configure um serviço de banco de dados PostgreSQL gerenciado
  3. Configure as variáveis de ambiente para informações confidenciais
  4. Implemente um pipeline de CI/CD usando o GitHub Actions:
    • Execute testes a cada push para o branch principal
    • Implante automaticamente no ambiente de teste após a conclusão bem-sucedida dos testes
    • Aprovação manual para implantação de produção
  5. Configure monitoramento e registro (ex.: Sentry para rastreamento de erros, Datadog para monitoramento de desempenho)
  6. Implemente backups automatizados para o banco de dados
  7. Use uma CDN para servir ativos estáticos para melhorar o desempenho
  8. Configure certificados SSL para conexões HTTPS seguras

Justificativa do Design

  • React.js escolhido para o frontend devido à sua arquitetura baseada em componentes e amplo ecossistema, facilitando o desenvolvimento rápido de uma interface do usuário dinâmica.
  • Node.js e Express.js selecionados para o backend para manter uma pilha JavaScript, permitindo o compartilhamento de código e melhorando a produtividade do desenvolvedor.
  • PostgreSQL escolhido como banco de dados por sua robustez no tratamento de dados relacionais e suporte a campos JSON, úteis para armazenar configurações de cobertura flexíveis.
  • Formato SVG usado para crachás para garantir gráficos de alta qualidade e escaláveis, adequados para vários contextos de exibição.
  • Abordagem modular de cálculo de cobertura adotada para dar suporte a várias linguagens de programação e expansão fácil no futuro.
  • OAuth do GitHub implementado para uma experiência do usuário perfeita e acesso seguro aos dados do repositório.
  • Estratégia de implantação em nuvem escolhida por escalabilidade e facilidade de manutenção, com CI/CD para garantir atualizações confiáveis e frequentes.