Code coverage per le richieste pull
Azure DevOps Services
Il code coverage è una metrica di qualità importante e consente di misurare la percentuale del codice del progetto da testare. Per garantire che la qualità del progetto migliori nel tempo (o almeno non regredisca), è necessario testare correttamente il nuovo codice nel sistema. Quando gli sviluppatori generano richieste pull, sapere se le modifiche sono coperte dai test consente di collegare eventuali fori di test prima che le modifiche vengano unite nel ramo di destinazione. I proprietari del repository possono anche voler impostare criteri per impedire l'unione di modifiche non test di grandi dimensioni.
Copertura completa, copertura delle differenze
La copertura completa è quando la copertura viene misurata per l'intera codebase di un progetto. Tuttavia, nel contesto delle richieste pull, gli sviluppatori sono incentrati sulle modifiche apportate e vogliono sapere se le righe specifiche di codice aggiunte o modificate vengono trattate. Questo tipo di copertura è diff coverage.
Prerequisiti
Per ottenere le metriche di copertura per una richiesta pull, configurare prima di tutto una pipeline che convalida le richieste pull. In questa pipeline configurare lo strumento di test usato per raccogliere le metriche di code coverage. I risultati della copertura devono quindi essere pubblicati nel server per la creazione di report.
Per altre informazioni sulla raccolta e la pubblicazione di risultati di code coverage per il linguaggio preferito, vedere la sezione Ecosistemi . Ad esempio, raccogliere e pubblicare code coverage per le app .NET Core.
Nota
Sebbene sia possibile raccogliere e pubblicare risultati di code coverage per molti linguaggi diversi usando Azure Pipelines, la funzionalità code coverage per le richieste pull descritta in questo documento è attualmente disponibile solo per i progetti .NET e .NET Core usando il formato dei risultati di code coverage di Visual Studio (estensione di file coverage). Il supporto per altri linguaggi e formati di copertura verrà aggiunto nelle attività cardine future.
Stato di copertura, dettagli e indicatori
Dopo aver configurato una pipeline che raccoglie e pubblica il code coverage, pubblica uno stato di code coverage quando viene generata una richiesta pull. Per impostazione predefinita, il server verifica la presenza del 70% delle righe modificate coperte dai test. La destinazione della soglia di copertura delle differenze può essere modificata in un valore di propria scelta. Per altre informazioni, vedere la sezione relativa alla configurazione delle impostazioni di seguito.
Il controllo dello stato valuta il valore di copertura delle differenze per tutti i file di codice nella richiesta pull. Se si desidera visualizzare il valore % diff coverage per ognuno dei file, è possibile attivare i dettagli come indicato nella sezione di configurazione. Attivare i dettagli dei post come commento nella richiesta pull.
Nella visualizzazione dei file modificati di una richiesta pull, anche le righe modificate vengono annotate con indicatori di copertura per indicare se tali righe sono coperte.
Nota
Sebbene sia possibile compilare codice da un'ampia gamma di sistemi di controllo della versione supportati da Azure Pipelines, la funzionalità code coverage per le richieste pull descritte in questo documento è attualmente disponibile solo per Azure Repos.
Configurazione delle impostazioni di copertura
Se si desidera modificare le impostazioni predefinite dell'esperienza di code coverage per le richieste pull, è necessario includere un file YAML di configurazione denominato azurepipelines-coverage.yml nella radice del repository. Impostare i valori desiderati in questo file e verrà usato automaticamente alla successiva esecuzione della pipeline.
Le impostazioni che possono essere modificate sono:
Impostazione | Descrizione | Predefinito | Valori consentiti |
---|---|---|---|
status | Indica se il controllo dello stato del code coverage deve essere inserito nelle richieste pull. Se si disattiva questa opzione, i controlli di copertura e le annotazioni di copertura non verranno visualizzate nella visualizzazione dei file modificati. |
in | on, off |
target | Il valore soglia di destinazione per la copertura delle differenze deve essere soddisfatto affinché venga pubblicato uno stato di copertura con esito positivo. | 70% | Numero % desiderato |
comments | Indica se un commento contenente i dettagli di copertura per ogni file di codice deve essere pubblicato nella richiesta pull | spento | on, off |
Configurazione di esempio:
coverage:
status: # Code coverage status will be posted to pull requests based on targets defined below.
comments: on # Off by default. When on, details about coverage for each file changed will be posted as a pull request comment.
diff: # Diff coverage is code coverage only for the lines changed in a pull request.
target: 60% # Set this to a desired percentage. Default is 70 percent
Altri esempi con i dettagli sono disponibili nel repository di esempi YAML di code coverage.
Nota
Gli indicatori di copertura si illuminano nella visualizzazione dei file modificati indipendentemente dal fatto che i dettagli del commento della richiesta pull siano attivati.
Suggerimento
Le impostazioni di copertura YAML sono diverse da una pipeline YAML. Ciò è dovuto al fatto che le impostazioni di copertura si applicano al repository e verranno usate indipendentemente dalla pipeline che compila il codice. Questa separazione significa anche che se si usano le pipeline di compilazione basate sulla finestra di progettazione classica, si otterrà il controllo dello stato del code coverage per le richieste pull.
Proteggere un ramo usando un criterio di code coverage
Il controllo dello stato del code coverage per le richieste pull è solo un suggerimento per gli sviluppatori e non impedisce l'unione delle richieste pull con bassa code coverage nel ramo di destinazione. Se si gestisce un repository in cui si vuole impedire agli sviluppatori di unire le modifiche che non soddisfano una soglia di copertura, è necessario configurare un criterio di ramo usando il controllo dello stato di copertura.
Suggerimento
Lo stato di code coverage inviato da una pipeline segue la convenzione {name-of-your-pipeline/codecoverage}
di denominazione .
Nota
I criteri di ramo in Azure Repos (anche i criteri facoltativi) impediscono il completamento automatico delle richieste pull in caso di esito negativo. Questo comportamento non è specifico dei criteri di code coverage.
Domande frequenti
Quali strumenti di copertura e formati di risultati possono essere usati per convalidare il code coverage nelle richieste pull?
Il code coverage per la funzionalità delle richieste pull è attualmente disponibile solo per i formati di code coverage (con estensione coverage) di Visual Studio. Questa operazione può essere usata se si pubblica il code coverage usando l'attività Test di Visual Studio, il verbo di test dell'attività dotnet core e l'opzione TRX dell'attività pubblica risultati test. Il supporto per altri strumenti di copertura e formati di risultati verrà aggiunto nelle attività cardine future.
Se vengono attivate più pipeline quando viene generata una richiesta pull, la copertura verrà unita tra le pipeline?
Se vengono attivate più pipeline quando viene generata una richiesta pull, il code coverage non verrà unito. La funzionalità è attualmente progettata per una singola pipeline che raccoglie e pubblica il code coverage per le richieste pull. Se è necessaria la possibilità di unire i dati di coverage tra le pipeline, inviare una richiesta di funzionalità nella community degli sviluppatori.
Guida e supporto
- Vedere la pagina relativa alla risoluzione dei problemi
- Ottenere consigli su Stack Overflow e ottenere supporto tramite il Developer Community
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per