Detecting breaking changes in .NET code using TFS?
每当TFS构建解决方案时,我想检测.NET代码(特别是C)中的中断更改。如果在正在签入的代码和最近成功生成的版本之间有任何中断更改(如在.NET中的"API中断更改的明确指南"中所述),我想知道这一点。突破性的改变不需要导致构建失败。除了编写一个使用反射来比较同一程序集的两个版本的应用程序外,如何才能做到这一点?
为了详细介绍一下James和Adam的答案,我想提供有关使用ndepend检测破坏性更改及其代码查询和规则功能的详细信息。免责声明:我是该工具的开发人员之一
ndepend已经发展,它的查询语言也在发展。如果您下载ndepend试用版并分析要在其中搜索中断更改的代码库的两个版本,请查看以下cqlinq规则的默认代码规则组api中断更改。
- API中断更改:类型
- API中断更改:方法
- API中断更改:字段
- 破坏API的更改:接口和抽象类
- 损坏的可序列化类型
- API:新的公共可见类型
- API:新的公开可见方法
- API:新的公开可见字段
例如,执行其中一个代码规则(nunit v2.5.8和v2.5.3之间的差异):
是的,我会用ndepend来做这个。我在一个为开发人员提供可扩展API的产品上工作。因此,我们需要确保在发布之间,不会删除那些开发人员可能依赖的功能。另一方面,我们需要的是灵活性来增长产品,而不需要对逆转进行大量限制。
有些事情你会考虑。
单元测试。它们提供了一种断言"这是客户机代码所期望的"。生成时,可以让tfs运行单元测试。
帕特里克·斯马奇(PatrickSmacchia)在3.5年前发表了这篇文章。
http://codebetter.com/patricksmacchia/2008/01/20/avoint-api-breaking-changes/
他提到了libcheck和(显然)ndepend,而评论又提到了一个。
既然已经3.5年多了,现在可能有更好的选择(libcheck已经有6年多的历史了),但这应该是一个开始。