Exemplo n.º 1
0
        private async Task <double?> GetCodeCoverageForBuild(String projectId, int buildId)
        {
            _logger.LogInformation($"[{nameof(GetCodeCoverageForBuild)}] BEGIN {{project:{projectId}, buildId:{buildId}}}");
            try
            {
                const string CoverageStatsLabel = "Lines";

                GitHttpClient            gitClient  = _connection.GetClient <GitHttpClient>();
                TestManagementHttpClient testClient = _connection.GetClient <TestManagementHttpClient>();
                //Получить покрытие кода по id билда
                var codeCoverage = await testClient.GetCodeCoverageSummaryAsync(projectId, buildId);

                _logger.LogInformation($"[{nameof(GetCodeCoverageForBuild)}] GetCodeCoverageSummaryAsync(project:{projectId}, buildId:{buildId}) success!");

                CodeCoverageStatistics CoverageStats = null;
                if (codeCoverage.CoverageData.Count > 0)
                {
                    // TODO: Переделать на случай если будет несколько CoverageData
                    CoverageStats = codeCoverage?.CoverageData[0].CoverageStats
                                    .FirstOrDefault(x => x.Label.Equals(CoverageStatsLabel, StringComparison.OrdinalIgnoreCase));
                }

                return(CoverageStats?.Covered * 100.00 / CoverageStats?.Total);
            }
            catch (Exception e)
            {
                _logger.LogError($"[{nameof(GetCodeCoverageForBuild)}] ERROR: {e.ToString()}");
                return(null);
            }
            finally
            {
                _logger.LogInformation($"[{nameof(GetCodeCoverageForBuild)}] COMPLETED");
            }
        }
Exemplo n.º 2
0
        private async Task WriteBuildDetailsForRepository(string projectName, ISink sink)
        {
            IPagedList <Build> builds = await buildClient.GetBuildsAsync2(projectName, null, null, null, null, null, null, null, BuildStatus.Completed);

            foreach (Build build in builds)
            {
                CodeCoverageSummary coverage = await testManagementClient.GetCodeCoverageSummaryAsync(projectName, build.Id);

                List <TestRun> testRuns = await testManagementClient.GetTestRunsAsync(projectName, build.Uri.ToString());

                await WriteBuildDetails(build, testRuns, coverage, sink);
            }
        }