【发布时间】:2016-11-16 11:38:44
【问题描述】:
考虑一个大型的多层企业 Web 应用程序和许多功能非常复杂的服务,主要在服务器端用 .NET (C#) 编写,在客户端显然是 html 和 javascript,由数百页组成,数量为服务调用(操作)数以千计,托管在多台服务器上,开发时间超过 15 年。有些部分是非常新的和现代的,其他部分是遗留的。
此应用程序的某些部分已过时,实际上没有人再使用这些部分了。无论这些是整个未使用的子应用程序、未使用的页面、文件、服务调用、方法还是代码行,都无关紧要。较旧的部分不提供任何使用统计信息,但使用依赖注入。
如何自动根据对生产服务器的访问,在不更改实际源代码的情况下找出未使用的部分?所以问题不在于找到未引用/无法访问的代码。这是关于寻找用户实际上不再使用的部分。
一个选项可能是查看查询日志。这会发现未使用的页面,但很难(繁琐的手动过程)找出后台中的哪些部分被那些页面仅使用。
另一个选项可能是监视服务器上的文件访问。那有意义吗?这样可行吗?
另一个想法是做一些类似于测试覆盖工具所做的事情,但不是在测试期间。假设调试符号可用,是否可以在实时 C#.NET 应用程序中测量覆盖率(类似于执行的代码行)?
【问题讨论】:
-
我认为如果没有适当的日志记录或跟踪,这是不可能的。也许您可以附加一个分析器,但这只会告诉您性能和内存使用方面的瓶颈。
-
有多种方法,但一种常见的方法类似于 Azure 中的 Application Insights,开发人员从应用程序中明确收集使用数据,然后分析哪些功能从未使用过,azure.microsoft.com/en-us/services/application-insights