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()

Другие вопросы по тегам