And*_*ita 2 .net tfs tfs-sdk revision-history
当我们的应用程序(工作中)抛出异常时,我正试图找出一些方法来确定谁应该"责备".它可能是我当然造成它但我可以接受:).但要做到这一点,我需要TFS中的文件的历史记录,以便我可以检查谁最后在异常行进行了更改.它当然并不总是插入错误更改的异常行,所以我可能还需要检查对同一文件的任何更改,最后是最近进行的任何签入.我不确定如何解决这个问题,但我想先咨询社区,看看是否有现成的解决方案?我没有使用TFS API的经验,所以我无法告诉什么是可能的,什么不是.我想我会在未处理的例外处理程序中将它集成到我们的应用程序中.当找到异常的一些候选人时,我需要通过电子邮件通知他们.在这个过程中,记录内部网上任何用户抛出某个异常的次数,谁,何时,如何等等都会很好.它可以为我们节省大量的时间(和金钱).
我喜欢这种精神!TFS API功能非常强大,您可以深入了解您感兴趣的信息.
您可以创建一个App,让我们调用您的应用TFS API应用,查看如何以编程方式连接到TFS http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to -tfs-2010-programmaticallyndashpart-1.aspx.
TFS API允许您查询TFS以查找对文件所做的所有更改(更改集).因此,假设ClassAbc.cs引发异常,如果您有一个事件总线将此异常引发到您的TFS API应用程序,则可以使用versionControlService GetChangeset方法中的方法来获取对该文件执行的所有更改集.在这里查看如何做到这一点http://geekswithblogs.net/TarunArora/archive/2011/06/26/tfs-2010-sdk-smart-merge-programmatically-create-your-own-merge.aspx.
此时,您可以在2个更改集之间执行增量操作,并使用类似的方式更改代码.
public static void GetMergeDetailsForChangeSet()
{
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("Enter the url of team project"));
var versionControl = tfs.GetService<VersionControlServer>();
var a = versionControl.GetChangeset(12322);
VersionSpec changeSpec = new ChangesetVersionSpec(a.Changes[0].Item.ChangesetId);
var abc = a.Changes[0].Item.VersionControlServer.QueryMergesWithDetails(
null,
null,
0,
a.Changes[0].Item.ServerItem,
changeSpec,
a.Changes[0].Item.DeletionId,
changeSpec,
changeSpec,
RecursionType.Full);
}
Run Code Online (Sandbox Code Playgroud)现在您将获得实际代码,您可以针对该代码块运行一组StyleCop http://www.codeproject.com/KB/cs/StyleCop.aspx规则,并查找可能的异常或一般代码分析结果可能是记录在数据库中并通过电子邮件发送给用户.
听起来不错.但是,或者,您可以使用TFS中的Annote功能来查看开发人员对文件所做的一系列更改,并将代码分析与CI构建定义相关联,并获得团队中开发人员完成的代码更改的持续反馈.