我正在尝试采取某种方法来确定当我们的应用程序(在工作中)抛出异常时该“责备”谁。当然这可能是我造成的,但我可以接受:)。但要做到这一点,我需要 TFS 中文件的历史记录,以便我可以检查谁最后在异常行处进行了更改。当然,它并不总是在插入错误更改的异常行中,因此我可能还需要检查对同一文件的任何更改,最后检查最近进行的任何签入。我不确定如何解决这个问题,但我想先咨询社区是否有任何现有的解决方案?我还没有使用 TFS API 的经验,所以我无法判断什么是可能的,什么是不可能的。我想我会将其集成到我们的应用程序中的未处理的异常处理程序中。当发现一些例外的候选人时,我需要通过电子邮件通知他们。在此过程中,最好记录内联网上任何用户抛出某个异常的次数、人员、时间、方式等。这可以节省我们大量的时间(和金钱)。
我喜欢这种精神! TFS API 非常强大,您可以深入到任何级别来获取您感兴趣的信息。
您可以创建一个应用程序,让我们调用您的应用程序 TFS API 应用程序,看看如何以编程方式连接到 TFShttp://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx 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 http://geekswithblogs.net/TarunArora/archive/2011/06/26/tfs-2010-sdk-smart-merge-programmatically-create-your-own-merge.aspx.
-
此时,您可以在两个变更集之间进行增量操作,并使用类似的方法获取代码更改。
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);
}
现在您已经有了实际的代码,您可以运行一组 StyleCophttp://www.codeproject.com/KB/cs/StyleCop.aspx http://www.codeproject.com/KB/cs/StyleCop.aspx针对该代码块以及查找可能的异常或一般代码分析结果的规则可以记录在数据库中并通过电子邮件发送给用户。
听起来不错。但是,您也可以使用 TFS 中的 Annote 功能来查看开发人员对文件所做的一系列更改,并将代码分析与 CI 构建定义相关联,并获得有关团队中开发人员所做的代码更改的持续反馈。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)