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

Como criar um gerador de badge de cobertura de código do GitHub

Crie uma ferramenta poderosa que gera e atualiza automaticamente badges 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 insights valiosos para desenvolvedores e partes interessadas.

Create your own plan

Learn2Vibe AI

Online

AI

What do you want to build?

Riassunto Semplice

Um gerador de badges de cobertura de código para o 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 dei Requisiti del Prodotto (PRD)

Objetivos:

  • Desenvolver uma aplicação fácil de usar para gerar badges 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 badges claros e visualmente atraentes que exibam 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 ao repositório e suporte a webhooks
  2. Cálculo automatizado da cobertura de código
  3. Designs de badges personalizáveis
  4. Acompanhamento histórico e relatórios de 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 do OAuth do GitHub
  • Interface intuitiva para configurar as configurações de cobertura e visualizar relatórios
  • Atualizações em tempo real dos badges em alterações de código
  • Capacidade de incorporar badges em arquivos README e outra documentação

Flussi Utente

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

    • O usuário se cadastra na aplicação
    • Autentica-se com o GitHub OAuth
    • Seleciona os repositórios a serem monitorados para a cobertura de código
  2. Geração de Badge 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 badge é gerado e as instruções para incorporá-lo são fornecidas
  3. Visualização e Gerenciamento de 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 aciona atualizações manuais conforme necessário

Specifiche Tecniche

  • Front-end: React.js para uma interface do usuário dinâmica e responsiva
  • Back-end: Node.js com Express.js para desenvolvimento de 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 da linguagem (por exemplo, Jest para JavaScript, Coverage.py para Python)
  • Geração de Badges: Biblioteca de geração de SVG (por exemplo, D3.js ou manipulação SVG personalizada)
  • Integração de API: GitHub API 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

Endpoint API

  • POST /api/auth/github: Lidar com a autenticação do OAuth do GitHub
  • GET /api/repositories: Buscar os repositórios do GitHub do usuário
  • POST /api/coverage/configure: Configurar o rastreamento 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: Acionar atualização manual da cobertura
  • GET /api/badges/:repoId: Gerar e servir o SVG do badge de cobertura

Schema del Database

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

Struttura dei File

/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

Piano di Implementazione

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

    • Inicializar o front-end React e o back-end 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 do 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 webhooks 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 principal de cálculo de cobertura
  5. Geração de Badges (2-3 dias)

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

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

    • Criar endpoints de API RESTful
    • Implementar 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

Strategia di Distribuzione

  1. Escolha um provedor de nuvem (por exemplo, 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 em produção
  5. Configure monitoramento e registro (por exemplo, Sentry para rastreamento de erros, Datadog para monitoramento de desempenho)
  6. Implemente backups automatizados do 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

Motivazione del Design

  • React.js escolhido para o front-end devido à sua arquitetura baseada em componentes e seu grande ecossistema, facilitando o desenvolvimento rápido de uma interface do usuário dinâmica.
  • Node.js e Express.js selecionados para o back-end para manter uma pilha JavaScript, permitindo o compartilhamento de código e melhorando a produtividade do desenvolvedor.
  • PostgreSQL escolhido como banco de dados devido à sua robustez no manuseio de dados relacionais e suporte a campos JSON, útil para armazenar configurações de cobertura flexíveis.
  • Formato SVG usado para badges 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 fácil expansão no futuro.
  • OAuth do GitHub implementado para uma experiência do usuário fluida e acesso seguro aos dados do repositório.
  • Estratégia de implantação em nuvem escolhida para escalabilidade e facilidade de manutenção, com CI/CD para garantir atualizações confiáveis e frequentes.