Link to this sectionIntegrazione Continua (CI)#
L'Integrazione Continua (CI) è un aspetto essenziale dello sviluppo software che prevede l'integrazione delle modifiche e il loro test automatico. La CI ci consente di mantenere un codice di alta qualità individuando i problemi precocemente e frequentemente nel processo di sviluppo. In Ultralytics, utilizziamo vari test di CI per garantire la qualità e l'integrità del nostro codebase.
Link to this sectionAzioni CI#
Ecco una breve descrizione delle nostre azioni CI:
- CI: Questo è il nostro test CI principale che prevede l'esecuzione di unit test, controlli di linting e, a volte, test più completi a seconda del repository.
- Docker Deployment: Questo test verifica il deployment del progetto utilizzando Docker per garantire che il Dockerfile e gli script correlati funzionino correttamente.
- Broken Links: Questo test scansiona il codebase alla ricerca di link interrotti o non funzionanti nei nostri file markdown o HTML.
- CodeQL: CodeQL è uno strumento di GitHub che esegue un'analisi semantica sul nostro codice, aiutandoci a trovare potenziali vulnerabilità di sicurezza e a mantenere un codice di alta qualità.
- PyPI Publishing: Questo test verifica se il progetto può essere pacchettizzato e pubblicato su PyPI senza errori.
Link to this sectionRisultati CI#
Di seguito è riportata la tabella che mostra lo stato di questi test CI per i nostri repository principali:
| Repository | CI | Docker Deployment | Broken Links | CodeQL | PyPI and Docs Publishing |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Ogni badge mostra lo stato dell'ultima esecuzione del relativo test CI sul branch main del rispettivo repository. Se un test fallisce, il badge visualizzerà uno stato di "failing", mentre se viene superato, visualizzerà uno stato di "passing".
Se noti un test che fallisce, sarebbe di grande aiuto se potessi segnalarlo tramite una GitHub issue nel rispettivo repository.
Ricorda, un test CI riuscito non significa che tutto sia perfetto. Si consiglia sempre di rivedere manualmente il codice prima del deployment o del merge delle modifiche.
Link to this sectionCode Coverage#
La code coverage è una metrica che rappresenta la percentuale del tuo codebase che viene eseguita quando i tuoi test sono in esecuzione. Fornisce informazioni su quanto bene i tuoi test esercitano il tuo codice e può essere fondamentale per identificare parti non testate della tua applicazione. Una percentuale elevata di code coverage è spesso associata a una minore probabilità di bug. Tuttavia, è essenziale comprendere che la code coverage non garantisce l'assenza di difetti. Indica semplicemente quali parti del codice sono state eseguite dai test.
Link to this sectionIntegrazione con codecov.io#
In Ultralytics, abbiamo integrato i nostri repository con codecov.io, una popolare piattaforma online per misurare e visualizzare la code coverage. Codecov fornisce dettagli approfonditi, confronti della copertura tra i commit e overlay visivi direttamente sul tuo codice, indicando quali righe sono state coperte.
Integrandoci con Codecov, miriamo a mantenere e migliorare la qualità del nostro codice concentrandoci sulle aree che potrebbero essere soggette a errori o che necessitano di ulteriori test.
Link to this sectionRisultati della copertura#
Per dare una rapida occhiata allo stato della code coverage del pacchetto Python ultralytics, abbiamo incluso un badge e un grafico sunburst dei risultati della copertura di ultralytics. Queste immagini mostrano la percentuale di codice coperta dai nostri test, offrendo una metrica immediata dei nostri sforzi di test. Per tutti i dettagli, visita il report Ultralytics Codecov.
| Repository | Code Coverage |
|---|---|
| ultralytics |
Nel grafico sunburst qui sotto, il cerchio più interno rappresenta l'intero progetto, allontanandosi dal centro ci sono le cartelle e, infine, un singolo file. La dimensione e il colore di ogni fetta rappresentano rispettivamente il numero di istruzioni e la copertura.
Link to this sectionFAQ#
Link to this sectionChe cos'è l'Integrazione Continua (CI) in Ultralytics?#
L'Integrazione Continua (CI) in Ultralytics prevede l'integrazione e il test automatici delle modifiche al codice per garantire standard di alta qualità. La nostra configurazione CI include l'esecuzione di unit test, controlli di linting e test completi. Inoltre, eseguiamo il deployment Docker, controlli dei link interrotti, analisi CodeQL per le vulnerabilità di sicurezza e pubblicazione su PyPI per pacchettizzare e distribuire il nostro software.
Link to this sectionCome controlla Ultralytics la presenza di link interrotti nella documentazione e nel codice?#
Ultralytics utilizza una specifica azione CI per controllare i link interrotti all'interno dei nostri file markdown e HTML. Questo aiuta a mantenere l'integrità della nostra documentazione scansionando e identificando link non funzionanti o inesistenti, assicurando che tu abbia sempre accesso a risorse accurate e aggiornate.
Link to this sectionPerché l'analisi CodeQL è importante per il codebase di Ultralytics?#
L'analisi CodeQL è fondamentale per Ultralytics in quanto esegue un'analisi semantica del codice per trovare potenziali vulnerabilità di sicurezza e mantenere standard di alta qualità. Con CodeQL, possiamo identificare e mitigare in modo proattivo i rischi nel nostro codice, aiutandoci a fornire soluzioni software robuste e sicure.
Link to this sectionCome utilizza Ultralytics Docker per il deployment?#
Ultralytics impiega Docker per convalidare il deployment dei nostri progetti attraverso un'azione CI dedicata. Questo processo garantisce che il nostro Dockerfile e gli script associati funzionino correttamente, consentendo ambienti di deployment coerenti e riproducibili, fondamentali per soluzioni IA scalabili e affidabili.
Link to this sectionQual è il ruolo della pubblicazione automatizzata su PyPI in Ultralytics?#
La pubblicazione su PyPI automatizzata garantisce che i nostri progetti possano essere pacchettizzati e pubblicati senza errori. Questo passaggio è essenziale per distribuire i pacchetti Python di Ultralytics, consentendoti di installare e utilizzare facilmente i nostri strumenti tramite il Python Package Index (PyPI).
Link to this sectionCome misura Ultralytics la code coverage e perché è importante?#
Ultralytics misura la code coverage integrandosi con Codecov, fornendo informazioni su quanto del codebase viene eseguito durante i test. Una copertura elevata può indicare un codice ben testato, aiutando a scoprire aree non testate che potrebbero essere soggette a bug. Le metriche dettagliate della code coverage possono essere esplorate tramite i badge visualizzati sui nostri repository principali o direttamente su Codecov.