ASP.NET, 存档
     

将已部署的 asp. net 站点与 ndebend 进行比较

很少有东西可以与继承现有软件项目的经验相比, 当 (无论出于何种原因) 原始开发人员都不在公司。我自己也遇到过几次这种情况, 它永远不会失败, 你及时继承了代码库, 以修复 bug 或实现新功能。

每当发生这种情况时, 我担心的一个问题是, 网站的部署版本是否与源代码管理中的最新版本相匹配。在一个理想的世界里, 源代码控制系统会在最后一次部署时被标记, 他们的工作几乎不会有什么猜测。但生活很少是这种理想。实际上, 除了驻留在服务器上的二进制文件之外, 通常没有指示上次部署到生产中的时间和内容。

幸运的是, ndepend 有很多强大的功能, 可以帮助解决这个确切的困境。对于那些从未使用过 ndepend 的用户, 它是一个非常强大的. net 静态代码分析工具, 包含的功能比我在这里所能做到的要多。对于那些感兴趣的斯科特·汉斯曼在这里写了一篇伟大的评论, ndepend 网站上也有几个屏幕截图。

比较二进制文件

为了演示这一点, 我将把我目前部署的博客 (我恰好知道它正在运行 dasblog 版本 2.3) 与 dasblog 2.2 的已知版本进行比较。若要开始, 请确保您有要比较的两个网站的本地副本, 然后打开 ndebend 的副本。

若要比较源文件, 您甚至不需要创建项目文件。您只需从 visual ndebend gui 的 "比较" 菜单中选择 "选择要比较的程序集或分析"。

在本演示中, 我将仅比较随 dasblog 附带的新智能程序集, 但您需要比较这些程序集以表示您自己的自定义代码。例如, 如果您使用了 nhibernate orm, 则不一定要比较 nhibernate. dll。

选择要比较的程序集并单击 "确定" 后, n源将开始分析程序集的过程。根据程序集的数量和大小, 这可能需要一些时间。但是, 作为对你的小等待的奖励, 你很快就会受到足够多的代码指标的迎接, 即使是最仔细的人也会感到快乐。

挖掘结果

一旦执行了代码分析, 我们就可以开始手头的任务, 找到网站的两个版本之间的差异。对于此任务, 主屏幕中有两个值得关注的区域。类浏览器和 cql 查询窗口。

对于熟悉 visual studio 的任何人来说, 类浏览器都非常直观, 只需提供程序集、命名空间和类型的高级概述即可。对于即时满足, ndepd 善意地通过上下文菜单选项提供。从类浏览器右键单击您比较的程序集之一, 然后选择 "更改了什么?", 然后 "从装配公司选择方法..。在哪里 codewaschanged "。代替类浏览器, 您将看到不同版本的方法列表。

在场景背后, n源针对它在代码分过程中编译的内部数据库发出了它所谓的 cql (代码查询语言) 查询。此数据库包含有关源代码的各种有用信息。使用 cql, 我们可以做的不仅仅是选择已更改的方法。我们可以对返回的内容应用任意数量的约束。例如, 您可能不关心未使用的方法, 即使它们确实不同。使用 cql, 您可以使用如下所示:

从装配公司 "新智慧" 中选择方法。daslog. web " 
codewaschanged 和 (
 方法 ca > 0 或
 ispublic or
 单点或            
 异种接口或 
 类构造函数或      
 isfin治器                
)

或者, 您可能只希望看到已更改的私有方法。

从装配公司 "新智慧" 中选择方法。daslog. web " 
在哪里 CodeWasChanged!ispublic

cql 提供了几乎无限的灵活性, 正是通过这一功能, n源获得了它的力量。

结论

ndepend 的功能比我在这里所能做的要多, 但它比较集会的能力是我最喜欢的。当我第一次发现这个功能的 n依姆我的下巴真的下降了。我早就希望从一个工具中获得这种能力, 我的愿望刚刚实现。曾经是一个可怕的任务, 比较一些未知的二进制网站的代码库, 因为 ndebend 变得容易多了。

About Jason

Jason 是一位经验丰富的企业家和软件开发商, 在石油和能源行业有丰富的工作经验。精通领导力、移动开发、数据同步和 saas 架构。强大的工程专业, 阿肯色州立大学计算机科学学士学位。
View all posts by Jason →

发表评论

电子邮件地址不会被公开。 必填项已用*标注