Come testare la copertura del codice utilizzando il comando Linux GCOV

Come testare la copertura del codice utilizzando il comando Linux GCOV
Come parte del test delle prestazioni del codice, il comando GCOV porta l'ottimizzazione del codice al livello successivo consentendo di controllare la copertura. Il GCOV, quando eseguito su un programma, visualizza un rapporto che mostra quali sezioni del codice vengono eseguite e quali non lo sono. Puoi visualizzare una percentuale della copertura del codice. In questo modo, puoi migliorare le prestazioni del tuo programma.

Questa guida copre un esempio in cui un programma C controlla la sua copertura del codice utilizzando il comando GCOV Linux.

Come utilizzare il comando GCOV in Linux

Un comando GCOV è uno strumento utile, in particolare per gli sviluppatori, e offre vari vantaggi, tra cui:

  • Ottimizzazione delle prestazioni del codice
  • Modifica quali parti del codice stanno rallentando i programmi
  • Verifica se il programma provoca perdite di memoria
  • Verifica se il programma invoca correttamente le funzioni

Il comando GCOV viene utilizzato con i file eseguiti compilati utilizzando G ++ o GCC. Pertanto, il comando funziona meglio con C o c++ programmi. Il programma è compilato con flag specifici per consentire a GCOV di raccogliere dati di copertura. Una volta compilato, vari file vengono generati contenenti i file delle note.

Da lì, si esegue il comando GCOV con il file eseguibile per ottenere il report della copertura dei dati.

Ad esempio, utilizzeremo un programma C che controlla e stampa i numeri divisibili per numeri specifici in un determinato intervallo. Per impostazione predefinita, il comando GCOV viene preinstallato. Per compilare il programma, utilizzare la sintassi di seguito e sostituire il nome del file per abbinare il tuo. Per questo esempio, il nostro file lo è GCOV-Test1.C come mostrato di seguito:

$ gcc -wall -fprofile -arcs -ftest -cove -test -test.C

Una volta compilato il codice, dovresti ottenere vari output come nell'immagine precedente. La compilazione del codice crea un eseguibile strumentata che consente a GCOV di calcolare le righe del codice utilizzate. IL -Ftest-Coverage consente a GCOV di calcolare le righe del codice eseguite. D'altra parte, il -fprofile-arcs incorpora altri condizionali e è possibile eseguire l'eseguibile strumentato, come mostrato con il seguente comando. Il nostro strumento eseguibile è il UN.fuori file, ma se si specifica un file di output durante la compilazione del codice, si dispierebbe un file strumentato diverso.

$ ./UN.fuori

Il comando esegue il programma e fornisce l'output previsto, che nel nostro caso è elencare i numeri divisibili all'interno dell'intervallo impostato.

Una volta eseguito il codice, la cosa successiva è controllare la copertura del codice utilizzando il comando GCOV Linux. Prima di allora, noterai più file creati. Contengono i file di note su cui GCOV si basa per generare il rapporto.

Qui, devi aggiungere il nome del programma come argomento a GCOV nel comando seguente:

$ GCOV GCOV-Test1.C

La nostra produzione sarà:

Si noti che tutte le righe nel nostro codice sono state eseguite, il che significa che il nostro codice è ben ottimizzato. Inoltre, un nuovo file GCOV-Test1.C.GCOV è stata creata. Contiene il numero di volte in cui ogni riga del nostro programma è stata eseguita, come mostrato nell'immagine seguente. Qualsiasi riga non eseguita avrebbe il ###### che lo precede e il numero a sinistra mostra i tempi in cui la singola linea è stata eseguita. Utilizzando questi dettagli, è possibile determinare le modifiche da apportare per ottimizzare il programma ed eseguirlo più velocemente.

Se vengono visualizzate le righe come non eseguite utilizzando un debugger, potresti risolverlo. L'obiettivo è garantire che tutte le righe vengano eseguite per raggiungere il 100% e consentire al codice di funzionare più velocemente.

Conclusione

Questo articolo copre il controllo della copertura del codice utilizzando il comando GCOV Linux. Durante i programmi di codifica, scriviamo più righe, ma non tutti vengono eseguiti. Quindi, sapere quali linee eseguono e quelle che non lo fanno è necessario. Le informazioni aiutano a correggere o rimuovere quelle righe che non vengono eseguite, rendendo il codice più veloce ed è un buon modo per ottimizzare il programma.