ColdFusion IDE, эквивалентный Visual Studio "перейти к определению" и "найти использования"
Позволяет ли какой-либо из плагинов ColdFusion IDE /IDE выполнять действия, аналогичные Visual Studio, перейти к определению и найти применения (некоторые сведения о которых приведены на этой странице)?
Например, в одном .cfc
файл, который я мог бы иметь:
<cfset variables.fooResult = CreateObject(
"component",
"Components.com.company.myClass").fooMethod()>
И в myClass.cfc
Я имею:
<cffunction name="fooMethod" access="public">
<!-- function body -->
</cffunction>
Если у меня установлен курсор .fooMethod
в первом файле действие перехода к определению должно поместить меня в объявление этого метода в myClass.cfc
,
В настоящее время я использую плагин CFEclipse для Eclipse, чтобы просмотреть некоторые унаследованные ColdFusion.
2 ответа
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
) и вручную пройтись по коду для любых переменных, использующих его.
Если вы используете
<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 не является статическим языком. Тем не менее, Find может найти то, что вам нужно в большинстве случаев, если код не вызывает метод динамически или не использует Evaulate()