在遗留应用程序中查找冗余页面,文件和存储过程

时间:2009-09-02 17:05:32

标签: sql-server asp-classic refactoring legacy-code

我有几个旧的ASP Web应用程序的恐怖。有没有人有任何简单的方法来找到不再需要的脚本,页面和存储过程? (除了“old __code”,“delete_this”等内容; - )

2 个答案:

答案 0 :(得分:1)

如果存储的proc不会运行,则可能没有被使用,因为当其他人改变时,没有人愿意更新它。可能没有使用每个记录为null的表colunms。

如果你的源代码控制中有你的sp和数据库对象(如果你不知道为什么不这样做?),你或许可以通过它来找到它被转移到生产的其他代码。你有什么可以称之为线索的线索。你也可以看到最后触摸它的人,那个人可能知道是否还需要它。

我通常首先列出所有过程(你可以从系统表中得到这个),然后将我知道的那些标记用于列表之外。 Profiler可以帮助您,因为您可以看到通常被调用的内容。 (但不要假设因为探查器没有显示它没有被使用的proc,它只是给你一个要研究的列表。)这使得那些需要被重新安装的列表更小。根据您的命名约定,可能相对容易看到代码的哪个部分应该使用它们。在研究时不要忘记在应用程序以外的地方调用procs,因此您需要检查作业,DTS或SSIS包,SSRS报告,其他应用程序,触发器等,以确保某些内容未被使用。

一旦确定了您认为不需要的列表,请与其他开发人员分享,并询问是否有人知道是否需要该过程。你可能会通过这种方式获得一些用于专门用途的东西。然后,当您有列表时,将名称更改为某些约定,允许您将它们标识为删除的候选项。同时设置一个删除日期(该日期的距离取决于可能调用某些内容的频率,如果它被称为像AnnualXYZReport,则将该日期定为一年)。如果没有人在删除日期前提出申诉,请删除proc(当然,如果它在源代码管理中,你甚至可以将alawys取回)。

那么你已经经历了识别坏事的地狱,那么现在是时候意识到你需要培训人们,开发过程的一部分是识别不再使用的过程并将其作为一部分摆脱它们对代码段的更改。根据代码重用,这可能意味着搜索代码库以查看代码库的其他部分是否使用它,然后执行与上面讨论的相同的事情,让每个人都知道它将在此日期被删除,更改名称以便任何代码引用它会破坏然后在删除它的日期删除它。或者也许你可以有一个元数据表,你可以在你知道你已经停止使用某些东西的时候把候选者删除,并且每个月左右向每个人发送一份报告,以确定是否有其他人需要它。

我想不出有任何简单的方法可以做到这一点,只需要确定哪些内容可能不会被使用和漏洞。

答案 1 :(得分:0)

仅限SQL Server,我可以想到3个选项:

  • 修改存储过程以记录用法
  • 检查代码是否没有设置权限
  • run profiler

当然,删除访问权限或将其删除,看看有谁打电话......