Wie man einen GitHub-Code-Coverage-Badge-Generator erstellt
Erstellen Sie ein leistungsfähiges Tool, das automatisch Code-Coverage-Badges für GitHub-Repositorys generiert und aktualisiert. Dieses Projekt vereinfacht den Prozess der Präsentation der Codequalität, fördert bessere Testpraktiken und liefert wertvolle Erkenntnisse für Entwickler und Stakeholder.
Learn2Vibe AI
Online
What do you want to build?
Einfache Zusammenfassung
Ein benutzerfreundlicher Code-Coverage-Badge-Generator für GitHub, der den Prozess des Erstellens und Anzeigen von Code-Coverage-Metriken automatisiert und so die Transparenz und Qualitätssicherung von Projekten verbessert.
Produktanforderungsdokument (PRD)
Ziele:
- Entwicklung einer benutzerfreundlichen Anwendung zur Generierung von Code-Coverage-Badges für GitHub-Repositorys
- Automatisierung des Prozesses der Berechnung und Aktualisierung von Code-Coverage-Metriken
- Nahtlose Integration in das GitHub-Ökosystem
- Bereitstellung klarer, optisch ansprechender Badges, die Deckungsquoten anzeigen
Zielgruppe:
- Softwareentwickler und -teams, die GitHub für die Versionskontrolle verwenden
- Open-Source-Projektverantwortliche
- Qualitätssicherungsprofis
Schlüsselmerkmale:
- GitHub-Integration für den Repositoryzugriff und Webhook-Unterstützung
- Automatische Code-Coverage-Berechnung
- Anpassbare Badge-Designs
- Historische Coverage-Verfolgung und -Berichterstattung
- Unterstützung für mehrere Programmiersprachen und Testframeworks
- Benutzerdashboard für das Management mehrerer Projekte
Benutzeranforderungen:
- Einfacher Einrichtungsprozess mit GitHub OAuth-Authentifizierung
- Intuitive Benutzeroberfläche zum Konfigurieren von Coverage-Einstellungen und Anzeigen von Berichten
- Echtzeitaktualisierung von Badges bei Codeänderungen
- Möglichkeit, Badges in README-Dateien und andere Dokumentation einzubinden
Benutzerflüsse
-
Benutzerregistrierung und GitHub-Integration:
- Der Benutzer meldet sich für die Anwendung an
- Authentifiziert sich über GitHub OAuth
- Wählt Repositorys aus, die für die Code-Coverage überwacht werden sollen
-
Generierung des Coverage-Badges:
- Der Benutzer konfiguriert die Coverage-Einstellungen für ein Repository
- Die Anwendung berechnet die anfängliche Code-Coverage
- Das Badge wird generiert und die Einbettungsanweisungen werden bereitgestellt
-
Anzeigen und Verwalten von Coverage-Berichten:
- Der Benutzer greift auf das Dashboard zu, um Coverage-Metriken über Projekte hinweg zu betrachten
- Analysiert historische Daten und Trends
- Passt die Einstellungen an oder löst manuelle Updates nach Bedarf aus
Technische Spezifikationen
- Frontend: React.js für eine dynamische und responsive Benutzeroberfläche
- Backend: Node.js mit Express.js für die API-Entwicklung
- Datenbank: PostgreSQL für die Speicherung von Benutzerdaten und Coverage-Metriken
- Authentifizierung: GitHub OAuth für die Benutzerauthentifizierung
- Coverage-Analyse: Sprachspezifische Tools (z. B. Jest für JavaScript, Coverage.py für Python)
- Badge-Generierung: SVG-Generierungsbibliothek (z. B. D3.js oder benutzerdefinierte SVG-Manipulation)
- API-Integration: GitHub-API für den Repositoryzugriff und das Webhook-Management
- Hosting: Cloud-Plattform wie Heroku oder AWS für die Skalierbarkeit
- CI/CD: GitHub Actions für automatisierte Tests und Bereitstellung
API-Endpunkte
- POST /api/auth/github: Verarbeiten der GitHub OAuth-Authentifizierung
- GET /api/repositories: Abrufen der GitHub-Repositorys des Benutzers
- POST /api/coverage/configure: Einrichten der Coverage-Verfolgung für ein Repository
- GET /api/coverage/:repoId: Abrufen der aktuellen Coverage-Daten für ein Repository
- POST /api/coverage/:repoId/update: Auslösen eines manuellen Coverage-Updates
- GET /api/badges/:repoId: Generieren und Bereitstellen des Coverage-Badge-SVG
Datenbankschema
Tabelle Benutzer:
- id (PK)
- github_id
- username
- access_token
Tabelle Repositorys:
- id (PK)
- user_id (FK zu Benutzer)
- github_repo_id
- name
- coverage_config (JSON)
Tabelle CoverageMetriken:
- id (PK)
- repository_id (FK zu Repositorys)
- timestamp
- coverage_percentage
- lines_covered
- total_lines
Dateistruktur
/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
Implementierungsplan
-
Projekteinrichtung (1-2 Tage)
- Initialisierung des React-Frontends und des Node.js-Backends
- Einrichtung der Versionskontrolle und Projektstruktur
-
Authentifizierung und GitHub-Integration (3-4 Tage)
- Implementierung des GitHub OAuth-Flows
- Erstellen von Benutzerregistrierung und Login-Funktionalität
-
Repositoryverwaltung (2-3 Tage)
- Entwicklung von Repository-Auflistungs- und Auswahlmerkmalen
- Implementierung der Webhook-Einrichtung für ausgewählte Repositorys
-
Coverage-Berechnungsmotor (4-5 Tage)
- Erstellen eines modularen Systems für verschiedene Programmiersprachen
- Implementierung der zentralen Coverage-Berechnungslogik
-
Badge-Generierung (2-3 Tage)
- Entwicklung der SVG-Generierung für Badges
- Erstellen von Anpassungsoptionen für das Badge-Erscheinungsbild
-
Benutzerdashboard (3-4 Tage)
- Aufbau der Hauptdashboard-Oberfläche
- Implementierung von Coverage-Verlauf und Trendvisualisierungen
-
API-Entwicklung (3-4 Tage)
- Erstellen von RESTful-API-Endpunkten
- Implementierung der Datenpersistenz mit PostgreSQL
-
Tests und Qualitätssicherung (2-3 Tage)
- Schreiben von Unit- und Integrationstests
- Durchführen von manuellen Tests und Fehlerbehebung
-
Dokumentation und Bereitstellung (2-3 Tage)
- Schreiben von Benutzer- und Entwicklerdokumentation
- Einrichten der CI/CD-Pipeline und Bereitstellung in der Produktion
Bereitstellungsstrategie
- Wählen Sie einen Cloud-Anbieter (z. B. Heroku oder AWS) für das Hosting der Anwendung aus
- Richten Sie einen verwalteten PostgreSQL-Datenbankdienst ein
- Konfigurieren Sie Umgebungsvariablen für sensible Informationen
- Implementieren Sie eine CI/CD-Pipeline mit GitHub Actions:
- Führen Sie Tests bei jedem Push zum Hauptzweig durch
- Stellen Sie bei erfolgreichem Testabschluss automatisch in der Staging-Umgebung bereit
- Manuelle Genehmigung für die Produktionsbereitstellung
- Richten Sie Überwachung und Protokollierung ein (z. B. Sentry für Fehlererfassung, Datadog für Leistungsüberwachung)
- Implementieren Sie automatische Sicherungen für die Datenbank
- Verwenden Sie ein CDN zum Bereitstellen statischer Assets, um die Leistung zu verbessern
- Richten Sie SSL-Zertifikate für sichere HTTPS-Verbindungen ein
Designbegründung
- React.js für das Frontend ausgewählt aufgrund seiner komponentenbasierten Architektur und des großen Ökosystems, was die schnelle Entwicklung einer dynamischen Benutzeroberfläche erleichtert.
- Node.js und Express.js für das Backend ausgewählt, um einen JavaScript-Stack beizubehalten, was den Codesharing und die Steigerung der Entwicklerproduktivität ermöglicht.
- PostgreSQL als Datenbank ausgewählt aufgrund seiner Robustheit bei der Handhabung relationaler Daten und der Unterstützung von JSON-Feldern, die für die Speicherung flexibler Coverage-Konfigurationen nützlich sind.
- SVG-Format für Badges verwendet, um hochwertige, skalierbare Grafiken zu gewährleisten, die für verschiedene Anzeigeumgebungen geeignet sind.
- Modularer Coverage-Berechnungsansatz übernommen, um mehrere Programmiersprachen zu unterstützen und eine einfache Erweiterung in der Zukunft zu ermöglichen.
- GitHub OAuth implementiert für ein nahtloses Benutzererlebnis und sicheren Zugriff auf Repositorydaten.
- Cloud-Bereitstellungsstrategie für Skalierbarkeit und einfache Wartung gewählt, mit CI/CD, um zuverlässige und häufige Updates zu gewährleisten.