如何确定ColdFusion应用程序使用哪些文件?

时间:2009-05-25 08:25:12

标签: coldfusion

我正在开始对现有的ColdFusion应用程序进行一些工作,没有版本控制,看起来像未使用的cfm文件(test.cfm,test2.cfm等)。我想了解哪些文件实际上是应用程序的一部分,所以我可以在可管理的状态下将它转换为git或subversion。

你会怎么做?一个正则表达式和一些方法来查找和映射cfinclude和cfcomponent标签?是否有一些现有工具可以做到这一点?

6 个答案:

答案 0 :(得分:10)

Ben Nadel有一种方法可以检查正在运行的模板中的实时堆栈跟踪。在我看来,您可以轻松地将其插入您的应用程序并将结果记录到数据库中。一旦你完成了这个,你就会清楚地知道什么是在使用中,什么不是。

我认为最简单的方法是启用调试(这里有关于开发服务器的标准警告等)。标准的ColdFusion调试器将为您提供执行单个页面期间使用的每个文件的完整列表。 ColdFire将在一个方便的Firebug扩展中执行相同的操作(单击ColdFusion,然后单击Exec Times)。

应该指出的是,内置调试器甚至可以显示CFC调用中包含的文件,以及这些调用中包含的文件。 全包

Ben Nadel on Stack Traces

Ray Camden's ColdFire

来自实时页面的CF调试示例:
alt text

答案 1 :(得分:6)

先将它放入git中!然后,如果你搞砸了,你可以轻松回滚。
(如果您担心有一个'干净'存储库,当您完成并经过全面测试后,您可以选择删除单个.git文件夹并创建一个新文件夹。)

然后,正如Tomalak建议的那样,在每个文件上使用cflog。事实上,我可能会说,甚至可以在每个脚本的顶部和底部记录两次,这可能有助于您确定应用程序的运行方式。

答案 2 :(得分:5)

不建议使用正则表达式。由于ColdFusion在包含或引用文件的方式上非常灵活,因此无法单独从源代码中确定依赖关系的确定列表。

您可以在每个文件中插入<cflog>,并从正在运行的应用程序中构建日志。在应用程序处于活动状态一段时间后检查日志,并且至少访问过一次所有功能。

答案 3 :(得分:1)

不要费心检测每个文件,只需在application.cfc中的onRequest中cflog页面名称 - 目标页面就是参数。

当然,问题就变成了代码覆盖率和完全锻炼应用程序的能力。

<cffunction name="onRequest" returnType="void">
  <cfargument name="targetPage" type="String" required=true/>
  <cflog file="Usedpage" text="#Arguments.targetPage#">
  <cfinclude template="#Arguments.targetPage#">
   ...
</cffunction>

答案 4 :(得分:0)

cfinclude不会告诉你url是否应该直接加载文件。我已经看到系统,即使框架需要,也可以通过index.cfm包含一些文件。我有自己的工作,其中index.cfm加载大多数代码,但reset.cfm绕过框架重置配置和会话数据。

答案 5 :(得分:0)

下载Dreamweaver的试用版并定义ColdFusion站点。 DW可以创建站点地图并告诉您哪些文件未包含,链接,cfmoduled等。我不知道它是否可以找出未使用的CFC,但CFM应该很容易。请注意,我多年没有使用过DW,但它在CF 4/5附近有这个功能。