我正在编写一段 Groovy 代码,它将在特定应用程序(特别是 NoMagic / Cameo 企业架构)的上下文中执行。
根据他们的文档,他们提供了某些预定义对象,可以从我的 Groovy 脚本中引用这些对象作为全局变量。
我的问题是我的 IDE(IntelliJ IDEA)不知道这些对象,因此无法提供任何代码完成建议,并且在引用这些全局变量时也无法正确解析方法。
我想知道是否有办法记录这些变量的存在,以便 IntelliJ 能够识别它们。也许可以用 Groovydoc 来声明?
// I would like to declare that the global variable 'ALH' will be
// defined at runtime as a specific type.
// Perhaps something like the following?
/**
* @RuntimeValue
* com.nomagic.magicdraw.simulation.utils.ALH ALH
*/
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.NamedElement
static void do_stuff(NamedElement e) {
// Do things...
}
NamedElement my_element = ALH.getCaller() // IntelliJ cannot resolve 'ALH'
do_stuff(my_element)
如果那只是一个包含静态方法的类,那么导入就足够了。但是对于从调用者注入到脚本中的实例,(据我所知)没有严格的 Groovy 方法。
为了使这里的所有建议都起作用,类必须位于类路径中,但考虑到
NamedElement
您的示例中的工作,很可能就是这种情况。如果您不介意更改脚本,那么您可以在文件开头写入自己的全局变量。例如
(这甚至应该使用相同的名称并故意遮蔽外部绑定来工作)。
如果您不愿意更改每个文件,而只想让 IDEA 表现良好,那么您的选择是:
添加GDSL文件并指定其类型。例如,将其放在
Types.gdsl
脚本旁边:该文件可以与您的脚本一起检入源代码控制中,其他合作者可以从中受益。
如果您真的只是想让它为您工作,您可以通过错误处的 灯泡/菜单使用添加动态属性 (,选择,选择类型)。
alt+enter
AHL
alt+enter
Add dynamic property