ColdFusion IDE相当于Visual Studio的“go to definition”和“find usages”

时间:2013-09-09 15:41:28

标签: coldfusion cfeclipse

任何ColdFusion IDE / IDE插件都允许您执行类似于Visual Studio的转到定义查找用法的操作(其中的一些详细信息在{{ 3}})?

例如,在一个.cfc文件中,我可能有:

<cfset variables.fooResult = CreateObject(
    "component",
    "Components.com.company.myClass").fooMethod()>

myClass.cfc我有:

<cffunction name="fooMethod" access="public">
    <!-- function body -->
</cffunction>

如果我将光标设置在第一个文件中的.fooMethod转到定义操作应该将我放在myClass.cfc中该方法的声明中。

目前我正在使用Eclipse的this page插件来查看一些传统的ColdFusion。

2 个答案:

答案 0 :(得分:4)

CFEclipse没有这个功能,部分原因是因为CFML是一种动态语言,解析方面有一定的复杂性。

在大多数情况下,您可以使用正则表达式搜索来获取大部分内容。

功能定义

要查找函数定义,大部分时间都在搜索...

(name="|ion )methodname

...足够,比更彻底的形式更快:

(<cffunction\s+name\s*=\s*['"]|\bfunction\s+)methodname

函数调用

要查找函数调用,请执行以下操作:

methodname\s*\(

虽然反对你可能需要更彻底,但是:

['"]methodname['"]\s*\]\s*\(

...如果使用括号表示法。

您可能还想检查cfinvoke用法:

<cfinvoke[^>]+?method\s*=\s*['"]methodname

当然,如果你的代码是:

,这些方法都不会找到
<cfset meth = "methodname" />
<cfinvoke ... method="#meth#" />

...也不是任何其他形式的动态方法名称。


如果确实需要彻底查找所有实例,最好单独搜索方法名称(或包装为\bmethodname\b),并手动遍历任何变量的代码它

答案 1 :(得分:3)

如果您使用

<cfset c = new Components.com.company.myClass()>
<cfset variables.fooResult = c.fooMethod()>

我相信在CFBuilder中你可以单击Ctrl,CFC类和方法将变成一个超链接。请参阅http://www.adobe.com/ca/products/coldfusion-builder/features.html上的“代码洞察”。它在工作时有效,但在映射不正确或可能不支持某些语法时则不起作用。我不确定他们是否支持CreateObject()方式。

由于CF不是静态语言,因此无法使用。但是,除非代码动态调用方法或使用Evaulate()

,否则查找可以在大多数情况下找到您需要的内容。