我正在开始对现有的ColdFusion应用程序进行一些工作,没有版本控制,看起来像未使用的cfm文件(test.cfm,test2.cfm等)。我想了解哪些文件实际上是应用程序的一部分,所以我可以在可管理的状态下将它转换为git或subversion。
你会怎么做?一个正则表达式和一些方法来查找和映射cfinclude和cfcomponent标签?是否有一些现有工具可以做到这一点?
答案 0 :(得分:10)
Ben Nadel有一种方法可以检查正在运行的模板中的实时堆栈跟踪。在我看来,您可以轻松地将其插入您的应用程序并将结果记录到数据库中。一旦你完成了这个,你就会清楚地知道什么是在使用中,什么不是。
我认为最简单的方法是启用调试(这里有关于开发服务器的标准警告等)。标准的ColdFusion调试器将为您提供执行单个页面期间使用的每个文件的完整列表。 ColdFire将在一个方便的Firebug扩展中执行相同的操作(单击ColdFusion,然后单击Exec Times)。
应该指出的是,内置调试器甚至可以显示CFC调用中包含的文件,以及这些调用中包含的文件。 全包。
答案 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附近有这个功能。