Kontinuierliche Integration (CI)
Die kontinuierliche Integration (Continuous Integration, CI) ist ein wesentlicher Aspekt der Softwareentwicklung, bei dem Änderungen automatisch integriert und getestet werden. KI ermöglicht es uns, qualitativ hochwertigen Code zu erhalten, indem Probleme frühzeitig und häufig im Entwicklungsprozess erkannt werden. Bei Ultralytics verwenden wir verschiedene CI-Tests, um die Qualität und Integrität unserer Codebasis zu gewährleisten.
CI-Aktionen
Hier ist eine kurze Beschreibung unserer CI-Aktionen:
- CI: Dies ist unser primärer CI-Test, bei dem Unit-Tests, Linting-Checks und je nach Repository manchmal auch umfassendere Tests durchgeführt werden.
- Docker-Bereitstellung: Dieser Test überprüft die Bereitstellung des Projekts mit Docker, um sicherzustellen, dass die Dockerdatei und die zugehörigen Skripte korrekt funktionieren.
- Defekte Links: Bei diesem Test wird die Codebasis auf defekte oder tote Links in unseren markdown oder HTML-Dateien überprüft.
- CodeQL: CodeQL ist ein Tool von GitHub, das eine semantische Analyse unseres Codes durchführt und dabei hilft, potenzielle Sicherheitsschwachstellen zu finden und qualitativ hochwertigen Code zu erhalten.
- PyPI Publishing: Dieser Test prüft, ob das Projekt ohne Fehler gepackt und auf PyPi veröffentlicht werden kann.
CI-Ergebnisse
Die folgende Tabelle zeigt den Status dieser CI-Tests für unsere wichtigsten Repositories:
Repository | CI | Docker-Bereitstellung | Defekte Links | CodeQL | PyPI und Docs veröffentlichen |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
Nabe | |||||
mkdocs | |||||
thop | |||||
Aktionen | |||||
docs | |||||
handbuch |
Jedes Abzeichen zeigt den Status des letzten Laufs des entsprechenden CI-Tests auf dem main
Zweig des jeweiligen Repositorys. Wenn ein Test fehlschlägt, zeigt die Plakette den Status "fehlgeschlagen" an, und wenn er bestanden wird, zeigt sie den Status "bestanden" an.
Wenn Sie bemerken, dass ein Test fehlschlägt, wäre es eine große Hilfe, wenn Sie dies über ein GitHub-Problem im entsprechenden Repository melden könnten.
Denken Sie daran, dass ein erfolgreicher CI-Test nicht bedeutet, dass alles perfekt ist. Es wird immer empfohlen, den Code vor der Bereitstellung oder Zusammenführung von Änderungen manuell zu überprüfen.
Code-Abdeckung
Die Codeabdeckung ist eine Kennzahl, die den Prozentsatz Ihrer Codebasis angibt, der bei der Ausführung Ihrer Tests ausgeführt wird. Sie gibt Aufschluss darüber, wie gut Ihre Tests Ihren Code trainieren und kann entscheidend sein, um ungetestete Teile Ihrer Anwendung zu identifizieren. Ein hoher Prozentsatz der Codeabdeckung wird oft mit einer geringeren Wahrscheinlichkeit von Fehlern in Verbindung gebracht. Es ist jedoch wichtig zu verstehen, dass die Codeabdeckung keine Garantie für die Abwesenheit von Fehlern ist. Sie zeigt lediglich an, welche Teile des Codes von den Tests ausgeführt wurden.
Integration mit codecov.io
Auf Ultralytics haben wir unsere Repositories mit codecov.io integriert, einer beliebten Online-Plattform zur Messung und Visualisierung der Codeabdeckung. Codecov bietet detaillierte Einblicke, Abdeckungsvergleiche zwischen Commits und visuelle Überlagerungen direkt auf Ihrem Code, die anzeigen, welche Zeilen abgedeckt wurden.
Durch die Integration von Codecov wollen wir die Qualität unseres Codes aufrechterhalten und verbessern, indem wir uns auf Bereiche konzentrieren, die fehleranfällig sind oder weitere Tests erfordern.
Erfassungsergebnisse
Um schnell einen Überblick über den Codeabdeckungsstatus der ultralytics
python Paket haben wir ein Abzeichen und ein Sonnenschliffbild des ultralytics
Abdeckungsergebnisse. Diese Bilder zeigen den Prozentsatz des Codes, der von unseren Tests abgedeckt wird, und bieten einen Überblick über unsere Testbemühungen. Alle Einzelheiten finden Sie unter https://codecov.io/github/ultralytics/ultralytics.
Repository | Code-Abdeckung |
---|---|
ultralytics |
In der nachstehenden Sunburst-Grafik ist der innerste Kreis das gesamte Projekt, vom Zentrum aus gesehen sind es Ordner und schließlich eine einzelne Datei. Die Größe und die Farbe der einzelnen Scheiben stehen für die Anzahl der Anweisungen bzw. den Umfang.
FAQ
Was ist kontinuierliche Integration (CI) in Ultralytics?
Continuous Integration (CI) in Ultralytics beinhaltet die automatische Integration und das Testen von Codeänderungen, um hohe Qualitätsstandards zu gewährleisten. Unser CI-Setup umfasst die Durchführung von Unit-Tests, Linting-Checks und umfassenden Tests. Darüber hinaus führen wir die Docker-Bereitstellung, Prüfungen auf defekte Links, CodeQL-Analysen auf Sicherheitslücken und die Veröffentlichung in PyPI durch, um unsere Software zu verpacken und zu verteilen.
Wie prüft Ultralytics auf fehlerhafte Links in Dokumentation und Code?
Ultralytics verwendet eine spezielle CI-Aktion, um unsere markdown und HTML-Dateien auf defekte Links zu überprüfen. Dies trägt dazu bei, die Integrität unserer Dokumentation aufrechtzuerhalten, indem tote oder defekte Links gescannt und identifiziert werden, um sicherzustellen, dass die Benutzer immer Zugang zu korrekten und aktuellen Ressourcen haben.
Warum ist die CodeQL-Analyse wichtig für die Codebasis von Ultralytics?
Die CodeQL-Analyse ist für Ultralytics von entscheidender Bedeutung, da sie semantische Code-Analysen durchführt, um potenzielle Sicherheitsschwachstellen zu finden und hochwertige Standards aufrechtzuerhalten. Mit CodeQL können wir proaktiv Risiken in unserem Code identifizieren und abmildern, was uns hilft, robuste und sichere Softwarelösungen zu liefern.
Wie nutzt Ultralytics Docker für die Bereitstellung?
Ultralytics setzt Docker ein, um die Bereitstellung unserer Projekte durch eine spezielle CI-Aktion zu validieren. Dieser Prozess stellt sicher, dass unser Dockerfile und die zugehörigen Skripte korrekt funktionieren und ermöglicht konsistente und reproduzierbare Bereitstellungsumgebungen, die für skalierbare und zuverlässige KI-Lösungen entscheidend sind.
Welche Rolle spielt die automatische Veröffentlichung von PyPI in Ultralytics?
Die automatisierte PyPI-Veröffentlichung stellt sicher, dass unsere Projekte ohne Fehler gepackt und veröffentlicht werden können. Dieser Schritt ist für die Verteilung von Ultralytics' Python Paketen unerlässlich, damit Nutzer unsere Tools einfach über den Python Package Index (PyPI) installieren und nutzen können.
Wie misst Ultralytics die Codeabdeckung und warum ist sie wichtig?
Ultralytics misst die Codeabdeckung durch die Integration mit Codecov und gibt Aufschluss darüber, wie viel von der Codebasis während der Tests ausgeführt wird. Eine hohe Codeabdeckung kann auf gut getesteten Code hindeuten und hilft dabei, ungetestete Bereiche aufzudecken, die für Fehler anfällig sein könnten. Detaillierte Metriken zur Codeabdeckung können über Badges in unseren Haupt-Repositories oder direkt auf Codecov eingesehen werden.