2013-02-20 8 views
16

Vorremmo misurare la copertura del codice per il nostro sistema di test di regressione automatico eseguito su un'app nativa abbastanza grande. Si tratta di un sofisticato sistema di test basato su script che utilizza lo scripting integrato della nostra app. Ha migliaia di test e non verrà sostituito dai test dell'unità MSTest.È possibile ottenere la copertura del codice C++ nativo in VS2012 o VS2010 senza MSTest?

Mentre stiamo usando VS2012 (Premium) come IDE attualmente, è ancora compilato con le librerie di compilatori VS2010 &. Questo potrebbe cambiare prima se fosse un prerequisito per ottenere la copertura del codice.

Possiamo fare separata costruisce per questo - strumentazione non è un problema.

sto solo confuso leggendo la documentazione di MS che sembra tutti partono da un presupposto che si sta eseguendo test di unità che utilizzano la loro framework di test integrato. Questo è quando non sto cercando di trovare cose che in realtà parlano del supporto nativo per ALM in primo luogo!

grazie

strumento di copertura di codice
+0

afaik questo è possibile solo con la versione definitiva (o qualunque sia la versione VS più costosa) di Visual Studio. Abbiamo anche studiato su questo (per uccidere le build unix/jenkins facendo la copertura del codice) e bloccato alle coperture UNIX – Najzero

+0

Grazie. Abbiamo Premium ampiamente implementato ma non Ultimate. –

+1

È possibile farlo con VS2012 abbastanza facilmente utilizzando lo strumento da riga di comando CodeCoverage. Controlla se ce l'hai in "% Programmi% \ Microsoft Visual Studio 11.0 \ Strumenti squadra \ Strumenti copertura dinamica del codice". Richiede la presenza di .pdbs per la strumentazione e non sono sicuro che DIA manterrà la retrocompatibilità con il 2010, quindi potrebbe essere necessario avere l'applicazione costruita con il 2010. Vale la pena, comunque. –

risposta

26

Visual Studio 2012 di è completamente separata dal sistema di esecuzione del test (full disclosure: l'ho scritto, ma la squadra che ha ereditato dopo aver lasciato Microsoft ha rimosso alcune funzionalità abbastanza utile). È stato riscritto da zero in VS 2012 per lo strumento dinamico nativo (x86 e x86-64) e il codice gestito (.NET e Silverlight) quando viene caricato nel processo anziché modificare gli eseguibili su disco.

Potete trovare CodeCoverage.exe in "% Programmi% \ Microsoft Visual Studio 11.0 \ Tools \ team dinamico Code Coverage Tools".

per raccogliere i dati:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args 

Un file di configurazione (c'è un predefinito in quella directory chiamata CodeCoverage.config) può essere specificato per controllare la raccolta.

Per analizzare i dati di copertura, è possibile aprire foo.coverage in Visual Studio 2012 o utilizzare lo strumento di copertura stesso per fare l'analisi:

CodeCoverage.exe analyze /output:results.xml foo.coverage 

Nota: per la strumentazione di prendere posto, file PDB deve essere scoperto per i tuoi moduli. Dal momento che stai costruendo con il 2010, potrebbero non funzionare con il DIA del 2012, quindi potresti dover ricostruire il set di strumenti del 2012. Se non si vedono i moduli previsti nell'analisi della copertura, passare /include_skipped_modules al comando analizza; ci sarà un attributo "motivo" che ti dice perché il modulo è stato saltato (escluso, nessuna informazione di debug, ecc.).

Edit: Inoltre, a differenza delle versioni precedenti di Visual Studio, formato di file la copertura del 2012 è completamente autonomo. I moduli e .pdbs non devono essere presenti al momento dell'analisi.

4

Mi rendo conto che questo è un vecchio post, ma credo che la risposta sia ancora pertinente.

Con tutte le cose che ho usato per avere a mia disposizione in C#, non ho davvero come quello che ho visto quando mi sono trasferito a Visual C++. Inoltre, come te, i MSTests hanno funzionato solo parzialmente per me; Sono abituato ad avere anche le mie applicazioni di test.

Fondamentalmente quello che volevo era il seguente:

  • test eseguire MS o un file EXE
  • copertura del codice arrivare subito in Visual Studio.

Dopo aver effettuato alcune ricerche, ho notato che VS Enterprise supporta questa funzionalità oggi con gli adattatori di test.

Se non si è su VSE, ho notato che ci sono altri strumenti, ognuno dei quali fornisce agli utenti un'interfaccia utente indipendente. Personalmente non mi piace; Voglio la mia copertura direttamente in Visual Studio, preferibilmente in Visual Studio Community Edition.

Così ho deciso di costruire questo addin me stesso e - anche se non è sofisticato come VSE - fa il trucco per me.

  • ho scritto uno strumento di copertura di codice su VSIX https://github.com/atlaste/CPPCoverage. Fondamentalmente gestisce l'evidenziazione in Visual Studio, genera un report cliccabile e si integra in Solution Explorer.
  • Per le misurazioni di copertura, usavo https://opencppcoverage.codeplex.com/. Fondamentalmente ciò consente di eseguire test di copertura del codice su qualsiasi eseguibile debugable (nativo). Oggigiorno, sto usando i miei strumenti di misurazione della copertura del codice (che sono aperti anche sopra).
+0

Questo è un grande addon. Sto usando questo con un progetto cmocka c, funziona alla grande. – pogorman

Problemi correlati