Continue integratie (CI)
Continuous Integration (CI) is een essentieel aspect van softwareontwikkeling waarbij wijzigingen automatisch worden geïntegreerd en getest. Met CI kunnen we code van hoge kwaliteit behouden door problemen vroeg en vaak in het ontwikkelproces op te sporen. Bij Ultralytics gebruiken we verschillende CI-tests om de kwaliteit en integriteit van onze codebase te waarborgen.
CI acties
Hier volgt een korte beschrijving van onze CI-acties:
- CI: Dit is onze primaire CI-test die bestaat uit het uitvoeren van unit tests, linting controles en soms uitgebreidere tests, afhankelijk van de repository.
- Docker Uitrol: Deze test controleert de implementatie van het project met behulp van Docker om er zeker van te zijn dat het Dockerbestand en de bijbehorende scripts correct werken.
- Gebroken koppelingen: Deze test scant de codebase op gebroken of dode links in onze markdown of HTML-bestanden.
- CodeQL: CodeQL is een tool van GitHub die semantische analyses uitvoert op onze code en helpt bij het vinden van potentiële beveiligingslekken en het onderhouden van code van hoge kwaliteit.
- PyPI publiceren: Deze test controleert of het project zonder fouten kan worden verpakt en gepubliceerd naar PyPi.
CI-resultaten
Hieronder staat de tabel met de status van deze CI-tests voor onze belangrijkste repositories:
Archief | CI | Docker implementatie | Gebroken koppelingen | CodeQL | PyPI en Docs publiceren |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
naaf | |||||
docs |
Elke badge toont de status van de laatste run van de corresponderende CI-test op de main
tak van het betreffende archief. Als een test mislukt, zal de badge een "failing" status weergeven en als hij slaagt een "passing" status.
Als je merkt dat een test mislukt, zou het enorm helpen als je dit zou kunnen melden via een GitHub issue in de betreffende repository.
Onthoud dat een geslaagde CI-test niet betekent dat alles perfect is. Het is altijd aan te raden om de code handmatig te controleren voordat je deze implementeert of wijzigingen samenvoegt.
Code dekking
Code coverage is een metriek die staat voor het percentage van je codebase dat wordt uitgevoerd wanneer je tests draaien. Het geeft inzicht in hoe goed je tests je code uitvoeren en kan cruciaal zijn bij het identificeren van niet-geteste delen van je applicatie. Een hoog code coverage percentage wordt vaak geassocieerd met een lagere kans op bugs. Het is echter essentieel om te begrijpen dat codedekking geen garantie is voor de afwezigheid van defecten. Het geeft alleen aan welke delen van de code zijn uitgevoerd door de tests.
Integratie met codecov.io
Op Ultralytics hebben we onze repositories geïntegreerd met codecov.io, een populair online platform voor het meten en visualiseren van codedekking. Codecov biedt gedetailleerde inzichten, dekkingsvergelijkingen tussen commits en visuele overlays direct op je code, die aangeven welke regels zijn gedekt.
Door te integreren met Codecov willen we de kwaliteit van onze code behouden en verbeteren door ons te richten op gebieden die vatbaar zijn voor fouten of die verder getest moeten worden.
Dekking Resultaten
Om snel een glimp op te vangen van de code coverage status van de ultralytics
python pakket hebben we een badge en een sunburst-visual van de ultralytics
dekkingsresultaten. Deze afbeeldingen laten het percentage code zien dat door onze tests wordt gedekt en geven in één oogopslag een beeld van onze testinspanningen. Zie voor volledige details https://codecov.io/github/ultralytics/ultralytics.
Archief | Code dekking |
---|---|
ultralytics |
In de onderstaande zonnestraal is de binnenste cirkel het hele project, verder weg van het midden zijn mappen en uiteindelijk een enkel bestand. De grootte en kleur van elke slice geeft respectievelijk het aantal verklaringen en de dekking weer.