Intégration continue (CI)
L'intégration continue (IC) est un aspect essentiel du développement de logiciels qui consiste à intégrer les changements et à les tester automatiquement. L'IC nous permet de maintenir un code de haute qualité en détectant les problèmes tôt et souvent dans le processus de développement. À Ultralytics, nous utilisons divers tests d'intégration continue pour garantir la qualité et l'intégrité de notre base de code.
Actions de l'IC
Voici une brève description de nos actions de CI :
- CI: il s'agit de notre test CI principal qui implique l'exécution de tests unitaires, de vérifications de linting et parfois de tests plus complets en fonction du référentiel.
- Déploiement Docker: Ce test vérifie le déploiement du projet à l'aide de Docker pour s'assurer que le Dockerfile et les scripts associés fonctionnent correctement.
- Liens brisés: Ce test analyse la base de code à la recherche de liens brisés ou morts dans nos fichiers markdown ou HTML.
- CodeQL: CodeQL est un outil de GitHub qui effectue une analyse sémantique de notre code, ce qui permet de trouver d'éventuelles failles de sécurité et de maintenir un code de haute qualité.
- Publication PyPI: ce test vérifie si le projet peut être empaqueté et publié sur PyPi sans aucune erreur.
RĂ©sultats de l'IC
Tu trouveras ci-dessous le tableau montrant l'état de ces tests CI pour nos principaux dépôts :
Dépôt | CI | Déploiement Docker | Liens brisés | CodeQL | Publication PyPI et Docs |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
plaque tournante | |||||
docs |
Chaque badge indique l'état de la dernière exécution du test CI correspondant sur la page main
du référentiel concerné. Si un test échoue, le badge affichera un état "failing", et s'il réussit, il affichera un état "passing".
Si tu remarques qu'un test échoue, il serait très utile que tu le signales par le biais d'un problème GitHub dans le dépôt correspondant.
N'oublie pas qu'un test CI réussi ne signifie pas que tout est parfait. Il est toujours recommandé d'examiner manuellement le code avant de le déployer ou de fusionner les modifications.
Couverture du code
La couverture du code est une mesure qui représente le pourcentage de ta base de code qui est exécuté lorsque tes tests s'exécutent. Elle donne une idée de la façon dont tes tests exercent ton code et peut être cruciale pour identifier les parties non testées de ton application. Un pourcentage élevé de couverture du code est souvent associé à une probabilité plus faible de bogues. Cependant, il est essentiel de comprendre que la couverture du code ne garantit pas l'absence de défauts. Elle indique simplement quelles parties du code ont été exécutées par les tests.
Intégration avec codecov.io
À Ultralytics, nous avons intégré nos dépôts à codecov.io, une plateforme en ligne populaire pour mesurer et visualiser la couverture du code. Codecov fournit des aperçus détaillés, des comparaisons de couverture entre les commits, et des superpositions visuelles directement sur ton code, indiquant quelles lignes ont été couvertes.
En intégrant Codecov, nous visons à maintenir et à améliorer la qualité de notre code en nous concentrant sur les domaines qui pourraient être sujets à des erreurs ou qui nécessitent des tests supplémentaires.
RĂ©sultats de la couverture
Pour avoir rapidement un aperçu de l'état de la couverture du code de l'application ultralytics
python Nous avons inclus un badge et un visuel du soleil dans le paquet. ultralytics
les résultats de la couverture. Ces images montrent le pourcentage de code couvert par nos tests, ce qui permet de mesurer d'un coup d'œil nos efforts en matière de tests. Pour plus de détails, voir https://codecov.io/github/ultralytics/ultralytics.
DĂ©pĂ´t | Couverture du code |
---|---|
ultralytics |
Dans le graphique en forme de soleil ci-dessous, le cercle le plus intérieur représente l'ensemble du projet, en s'éloignant du centre se trouvent les dossiers puis, enfin, un seul fichier. La taille et la couleur de chaque tranche représentent respectivement le nombre de déclarations et la couverture.