2012-04-20 2 views
2

Est-ce que quelqu'un sait comment programmer (en utilisant l'API TFS) quels binaires ont été configurés pour être instrumentés dans le cadre d'une construction sur TFS?Récupération par programme des informations de chemin pour les "binaires instrumentés" TFS via l'entrepôt de données

Par exemple, après l'exécution d'une construction sur TFS avec une couverture de code, il montre ceci dans la sortie:

... 
-> 2 binaries instrumented - 62% of all code blocks covered 
     SomeAssembly.dll - 392 blocks covered, 368 blocks not covered 
     SomeExe.exe - 584 blocks covered, 241 blocks not covered 
... 

je voudrais déterminer que programatically « SomeAssembly.dll » et « SomeExe.exe » sont les les binaires qui ont été instrumentés dans le cadre de cette construction.

J'ai été aussi loin que récupérer le projet d'équipe via l'API TFS, mais je ne suis pas sûr que me fait où je veux aller:

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(new Uri(versionControlURIRoot + defaultProjectDirectory)) 
var testManagementService = collection.GetService<ITestManagementService>(); 
ITestManagementTeamProject teamProject = testManagementService.GetTeamProject(projectName); 

Répondre

2

Voici la solution:

Obtenez l'équipe projet:

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(new Uri(versionControlURIRoot + defaultProjectDirectory)); 
    var testManagementService = collection.GetService<ITestManagementService>(); 
    ITestManagementTeamProject teamProject = testManagementService.GetTeamProject(projectName); 

Extrait les noms d'assemblage à partir des métadonnées de couverture de construction:

List<string> assemblyNames = new List<string>(); 
if (teamProject != null) { 
    ICoverageAnalysisManager coverageAnalysisManager = teamProject.CoverageAnalysisManager; 
    if (coverageAnalysisManager != null) { 
     IBuildCoverage[] buildCoverage = coverageAnalysisManager.QueryBuildCoverage(buildURI, CoverageQueryFlags.Modules); 
     List<string> assemblyNames = new List<string>(); 
     foreach (IBuildCoverage buildCoverageDetails in buildCoverage) { 
      foreach (IModuleCoverage module in buildCoverageDetails.Modules) { 
        assemblyNames.Add(module.Name); 
      } 
     } 
    } 
} 
Questions connexes