任何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。
答案 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()