Domanda

Sto cercando di avere la copertura del codice in C.Non posso fare affidamento su strumenti come gcov poiché sto lavorando su piattaforme/compilatori diversi.

Fondamentalmente sto cercando una strategia per incorporare la copertura del codice nel mio framework di unit test (la mia implementazione).

È stato utile?

Soluzione

Sarebbe veramente utile se hai aggiornato la tua domanda per descrivere le piattaforme e compilatori che si sta utilizzando.

Una strategia che ho usato è in esecuzione il sistema su un emulatore in grado di tracciare tutte le istruzioni. Questa traccia istruzione può quindi essere utilizzato per elaborare la copertura del codice.

In UNIX si potrebbe anche eseguire un processo utilizzando ptrace () per singolo passo l'applicazione, e quindi catturare le istruzioni eseguite.

Se si desidera solo chiamata di funzione tracciamento si potrebbe fare qualche brutta hacking del tavolo procedura di collegamento per passare a un codice di registrazione specializzato, ma che probabilmente è pazzo.

Ancora una volta, più dettagli sull'ambiente di esecuzione e il livello di dettaglio sarebbero necessari per fornire una soluzione utile.

Altri suggerimenti

Hai così tanti codici specifici della piattaforma che desideri misurare la copertura dei test unitari su ogni piattaforma?Voglio dire che, a meno che tu non abbia molto codice specifico per la piattaforma, la copertura dei test unitari dovrebbe essere simile su tutti i tuoi target, quindi potresti non aver bisogno di misurarla su ogni singolo target che hai.Potrebbe essere interessante spostare il codice specifico della piattaforma in moduli specifici della piattaforma in modo che il livello di copertura del codice comune non venga abbassato dal codice specifico.

Stai cercando la copertura delle filiali o la copertura delle funzioni?In quest'ultimo caso puoi semplicemente usare gcc per strumentare il tuo codice in modo che ciascuna funzione restituisca il suo nome o il suo indirizzo in un file e scriva uno script per aggregare i risultati da tutte le piattaforme.

Scusate se rispondo solo con domande...HTH

Un Pagina sugli strumenti di copertura del codice- dice che qualcosa chiamato GCT da Brian Marick implementa la copertura del codice da traduzione source-to-source, in modo da poter trasformare il vostro codice C e poi costruire con il vostro specifico per la piattaforma del compilatore. Non ho seguito fino dettagli.

Si potrebbe prendere in considerazione la costruzione di una serie di casi di test come parte dell'applicazione stessa, o come un obiettivo di costruzione alternativo. Quindi l'applicazione potrebbe testare se stesso, con l'ulteriore vantaggio di avere accesso a tutti gli "interni", piuttosto che cercare di testare tutti i rami utilizzando tecniche black-box.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top