Azure DevOps 中的拉取请求中的 Surface 编译警告

Surface Compile Warnings in Pull Request in Azure DevOps

我的目标是在拉取请求中出现警告,例如实际编译警告或 clang-tidy 输出。

输出已正确注释,并且在构建中警告都显示在显着位置。但不幸的是,大多数开发人员不检查构建,他们主要关心它是否是绿色的。警告错误并非在所有情况下都可行。

我想提出需要主动确认的警告评论意见。我会将其实现为一个小型服务,该服务侦听网络挂钩并获取输出并通过 REST API 发布到 PR。 (出于其他原因,我已经有一项服务可以做类似的事情。)

对我来说,这听起来像是一个应该已经解决的问题,就像在现有插件中一样。有没有简单的解决方案?

Is there a simple drop in solution for this?

据我所知,目前没有开箱即用的方法(现有任务或扩展)将警告发送到拉取请求评论。

如你所说,可以用web hook + Rest API来实现

另一种方法是使用 Rest API:Timeline - Get to get the warning message and use another Rest API :Pull Request Thread Comments - Create 在 Pull Request 上创建评论。

然后在 Pipeline (Pull Reuqest Trigger) 中,您可以将 Powershell 任务同时添加到 运行 两个 Rest API。

例如:

- task: PowerShell@2
  condition: eq(variables['Build.Reason'], 'PullRequest')
  displayName: Post Message to PR
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)  
  inputs:
      targetType: filePath
      filePath: Comment.ps1

在这种情况下,当 Pipeline 被 Pull Reuqest 触发时,任务将 运行 并发送 Warning 消息给评论。

用于获取警告消息示例的 Powershell:

$token = "PAT"

$url="https://dev.azure.com/{OrganizationNAME}/{ProjectName}/_apis/build/builds/{Build.buildid}/timeline?api-version=6.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))


$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method GET  -ContentType application/json

echo $response.records.issues.message 

..... Send the message to PR Comment....
...

这里是,你可以参考一下

另一方面,这个要求很有价值。

您可以在 our UserVoice site 上添加对此功能的请求,这是我们提供产品建议的主要论坛。希望这个功能可以成为开箱即用的工具。