AzureDevOps Build Rest API:如何在构建任务中获取所有警告计数,超过10个限制

问题描述 投票:0回答:1

我正在尝试在AzureDevOps项目上获取构建任务的警告数量。但是我仍然只收到前10条警告。你怎么做的?我特别需要警告的数量,不一定是警告的详细信息

var credential = new VssBasicCredential(string.Empty, myPat);
var connection = new VssConnection(new Uri(myCollection), credential);
var buildClient = connection.GetClient<BuildHttpClient>();
var timeline = buildClient.GetBuildTimelineAsync(myProject, myBuildId).Result;
var vsTask= timeline.Records.FirstOrDefault(p => p?.Task?.Name == "VSBuild");
// always 10 utmost  : warning and issues !!
var warning = vsTask.WarningCount;
var issues =  vsTask.Issues;
tfs azure-devops azure-pipelines tfsbuild azure-pipelines-build-task
1个回答
0
投票

这确实很奇怪,但是看起来您不能超越此处显示的内容

enter image description here

有解决方法(但是有点难看)。您可以加载日志页面并计算警告解析页面的警告。

static void Main(string[] args)
{
    var credential = new VssBasicCredential(string.Empty, "PAT");
    var connection = new VssConnection(new Uri("https://dev.azure.com/your-organization/"), credential);
    var buildClient = connection.GetClient<BuildHttpClient>();
    var timeline = buildClient.GetBuildTimelineAsync("yoyr project", 377).Result;

    var vsTask = timeline.Records.FirstOrDefault(p => p?.Task?.Name == "VSBuild");
    // always 10 utmost  : warning and issues !!
    var warning = vsTask.WarningCount;
    var issues = vsTask.Issues;
    Console.WriteLine(warning);


    HttpClient client = new HttpClient();
    var response =  client.GetAsync(vsTask.Log.Url);
    var pageContents = response.Result.Content.ReadAsStringAsync().Result;
    var realNumberOfWarnings = AllIndexesOf(pageContents, "##[warning]");
    Console.WriteLine(realNumberOfWarnings.Count);
    Console.ReadLine();
}

public static List<int> AllIndexesOf(string str, string value)
{
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    List<int> indexes = new List<int>();
    for (int index = 0; ; index += value.Length)
    {
        index = str.IndexOf(value, index);
        if (index == -1)
            return indexes;
        indexes.Add(index);
    }
}

我希望它会有所帮助。

[请检查黄廷洛[MSFT]写了here

我们只应计算并存储10个错误/警告(我想我们有一些计数错误,所以我们数到11),这些问题就存储在我们的后端数据库,用于驱动构建摘要页面呈现。我们不想自大多数时间以来,存储的错误/警告过多错误/警告是解决问题的关键,而其余的只是噪音。

© www.soinside.com 2019 - 2024. All rights reserved.