Программное получение информации о пути для инструментированных двоичных файлов TFS через хранилище данных

Кто-нибудь знает, как программно (используя TFS API) определить, какие двоичные файлы были настроены для инструментирования как часть сборки на TFS?

Например, после запуска сборки на TFS с покрытием кода в выводе отображается следующее:

...
-> 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
...

Я хотел бы программно определить, что «SomeAssembly.dll» и «SomeExe.exe» — это двоичные файлы, которые были инструментированы как часть этой сборки.

Мне удалось получить командный проект через TFS API, но я не уверен, что это приведет меня туда, куда я хочу:

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

person jd314159    schedule 20.04.2012    source источник


Ответы (1)


Вот решение:

Получить командный проект:

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

Извлеките имена сборок из метаданных Build Coverage:

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);
            }
        }
    }
}
person jd314159    schedule 31.05.2012