public override async Task <IntegerData> GetDataAsync(CancellationToken cancellationToken)
        {
            try
            {
                var azureDevOpsHelper   = new AzureDevOpsHelper(ConfigProvider, RootConfig);
                var codeCoverageDetails = await azureDevOpsHelper.GetCodeCoverageResultForLastGreenBuildAsync(cancellationToken);

                if (codeCoverageDetails == null)
                {
                    return(IntegerData.NoUpdate());
                }

                var linesCoverageData = codeCoverageDetails.CoverageData.First().CoverageStats.Single(x => x.Label == "Lines");
                return(new IntegerData(linesCoverageData.Total, Status.OK));
            }
            catch (Exception ex)
            {
                return(IntegerData.Error(ex.Message));
            }
        }
        public override async Task <MetricData> GetDataAsync(CancellationToken cancellationToken)
        {
            try
            {
                var azureDevOpsHelper   = new AzureDevOpsHelper(ConfigProvider, RootConfig);
                var codeCoverageDetails = await azureDevOpsHelper.GetCodeCoverageResultForLastGreenBuildAsync(cancellationToken);

                if (codeCoverageDetails == null)
                {
                    return(MetricData.NoUpdate());
                }

                var linesCoverageData  = codeCoverageDetails.CoverageData.First().CoverageStats.Single(x => x.Label == "Lines");
                var percentageCoverage = Math.Round(100m * linesCoverageData.Covered / linesCoverageData.Total, 1);

                return(new MetricData(percentageCoverage, MetricType.Percentage, Status.OK));
            }
            catch (Exception ex)
            {
                return(MetricData.Error(ex.Message));
            }
        }