2010-03-10 14 views

risposta

0

C'è molto probabilmente un modo per farlo con un'attività di compilazione (in particolare se si desidera eseguire il rollover). Spero che qualcuno pubblichi un codice di esempio per te.

In caso contrario, sono stato impressionato con NDepend per questo tipo di attività. È possibile scrivere in una sintassi di tipo SQL molto intuitiva per determinare tutti i tipi di metriche sul proprio codice e avvisare o fallire una build basata su soglie.

Esempi:

WARN IF Count > 0 IN SELECT METHODS WHERE CodeWasChanged AND PercentageCoverage < 95 
WARN IF Count > 0 IN SELECT METHODS WHERE IsPublic AND IsInOlderBuild AND WasRemoved 
2

Il problema principale è che il file dei risultati di copertura del codice che MSTest produce è in formato binario. Tuttavia, supponendo che le cose non sono cambiate troppo in VS2010, si dovrebbe essere in grado di utilizzare questa utilità per convertirlo in un file XML:

http://codeexperiment.com/file.axd?file=2008%2f9%2fCodeCoverageConverter.zip

NOTA: Avrete probabilmente bisogno di ricompilare contro la versione VS2010 di 'Microsoft.VisualStudio.Coverage.Analysis.dll.

È quindi possibile utilizzare il metodo preferito per analizzare il file XML, eseguendo i calcoli matematici per ciascuno degli assembly strumentati per calcolare un indice di copertura generale. I XPaths che vi interessano (almeno per VS2008) sono:

/CoverageDSPriv/Module/LinesCovered 
/CoverageDSPriv/Module/LinesNotCovered 

Se si vuole fare questo ultimo passo in puro MSBuild, poi il 'XMLRead' e compiti 'matematica' contenuti all'interno dei task MSBuild comunitari biblioteca dovrebbe essere sufficiente:

http://msbuildtasks.tigris.org/

una volta che avete il rapporto complessivo in una proprietà MSBuild, è quindi sufficiente utilizzare un compito condizionale per rompere la build se tale numero è inferiore soglia desiderata.

<Error Condition=" $(CodeCoverageRatio) &lt; $(MinCodeCoverage) " 
     Text="Code Coverage is below required threshold." /> 
0

Domanda antica, ma non contrassegnata come risposta. Date un'occhiata a this

Problemi correlati