gpt4 book ai didi

c# - 使用 TFS API,我如何找到在代码审查中所做的评论?

转载 作者:IT王子 更新时间:2023-10-29 04:48:32 24 4
gpt4 key购买 nike

我正在尝试找出一种方法来查找有关 TFS2012 中的代码审查请求/响应项的详细信息。

我可以通过以下方式查询所有代码审查请求/响应项:

const string TfsUri = "http://mytfsserver:8080/tfs/Default ProjectCollection";

var tfs = new TfsTeamProjectCollection(new Uri(TfsUri));
var store = tfs.GetService<WorkItemStore>();

var versionStore = tfs.GetService<Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer>();

var queryText = "SELECT [System.Id],
FROM WorkItems
WHERE [System.WorkItemType] = 'Code Review Request'
or [System.WorkItemType] = 'Code Review Response'";
var query = new Query(store, queryText);

var result = query.RunQuery().OfType<WorkItem>();

这为我提供了 WorkItem 类型的列表。当我遍历 result.FirstOrDefault().Fields 属性时,它确实为我提供了一些与代码审查相关的 ShelveSet 的有用信息,即“关联上下文”。使用此信息,我可以查询 ShelveSet:

var versionStore = tfs.GetService<VersionControlServer>();
var shelveset = versionStore.QueryShelvesets("someCodeReviewId_xxxx","someUserName");

这为我提供了一个 ShelveSet 项目,但这是我卡住的地方。

我查看了 Microsoft.TeamFoundation.CodeReview.ComponentsMicrosoft.TeamFoundation.CodeReview.Controls 提供的 Microsoft.TeamFoundation.CodeReview 命名空间 库,但这对我没有进一步的帮助。

我的问题是:如何通过 TFS API 找到代码审查期间对 ShelveSet 所做的实际评论(一般评论和文件评论)?

最佳答案

我们有一个从 TFS 中提取代码审查评论的新要求,这里是我们实现的一个简短示例。 workItemId 必须通过其他方法查询。您甚至可以在 Visual Studio 中或通过 UI 中的 TFS 查询来查找它。这是可用内容和我们正在使用的内容的一小部分。我找到了 this link to be helpful after digging through MSDN .

 public List<CodeReviewComment> GetCodeReviewComments(int workItemId)
{
List<CodeReviewComment> comments = new List<CodeReviewComment>();

Uri uri = new Uri(URL_TO_TFS_COLLECTION);
TeamFoundationDiscussionService service = new TeamFoundationDiscussionService();
service.Initialize(new Microsoft.TeamFoundation.Client.TfsTeamProjectCollection(uri));
IDiscussionManager discussionManager = service.CreateDiscussionManager();

IAsyncResult result = discussionManager.BeginQueryByCodeReviewRequest(workItemId, QueryStoreOptions.ServerAndLocal, new AsyncCallback(CallCompletedCallback), null);
var output = discussionManager.EndQueryByCodeReviewRequest(result);

foreach (DiscussionThread thread in output)
{
if (thread.RootComment != null)
{
CodeReviewComment comment = new CodeReviewComment();
comment.Author = thread.RootComment.Author.DisplayName;
comment.Comment = thread.RootComment.Content;
comment.PublishDate = thread.RootComment.PublishedDate.ToShortDateString();
comment.ItemName = thread.ItemPath;
comments.Add(comment);
}
}

return comments;
}

static void CallCompletedCallback(IAsyncResult result)
{
// Handle error conditions here
}

public class CodeReviewComment
{
public string Author { get; set; }
public string Comment { get; set; }
public string PublishDate { get; set; }
public string ItemName { get; set; }
}

关于c# - 使用 TFS API,我如何找到在代码审查中所做的评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com