无法通过 Leiningen 插件在项目中获取可检测符号
Cannot get instrumentable syms in project via Leiningen plugin
我正在尝试基于 clojure.spec.alpha
编写一个 leiningen 插件。除其他事项外,我想获得项目中已指定的所有功能。这是通过在 clojure.spec.test.alpha
中调用 instrumentable-syms
来完成的。我的插件中有一个函数可以执行此操作,但是当 运行 在另一个项目的上下文中(通过 eval-in-project
)时,可检测符号列表为空。我怀疑这是因为在使用插件的项目中对 fdef
的调用(通常是源文件中的顶级形式并注册规范)未被评估,因此在调用时未被拾取instrumentable-syms
.
我的问题是,如何确保这些调用得到评估,以便我的插件可以找到项目中的所有规范函数。
尝试做一些事情来加载相关的命名空间,从而使您的程序 "to life",也许如果您有一个像 src/orgname/project/core.clj
这样的文件,那么您可以尝试调用:
(load "orgname/project/core")
来自项目中的代码块 运行。
我正在尝试基于 clojure.spec.alpha
编写一个 leiningen 插件。除其他事项外,我想获得项目中已指定的所有功能。这是通过在 clojure.spec.test.alpha
中调用 instrumentable-syms
来完成的。我的插件中有一个函数可以执行此操作,但是当 运行 在另一个项目的上下文中(通过 eval-in-project
)时,可检测符号列表为空。我怀疑这是因为在使用插件的项目中对 fdef
的调用(通常是源文件中的顶级形式并注册规范)未被评估,因此在调用时未被拾取instrumentable-syms
.
我的问题是,如何确保这些调用得到评估,以便我的插件可以找到项目中的所有规范函数。
尝试做一些事情来加载相关的命名空间,从而使您的程序 "to life",也许如果您有一个像 src/orgname/project/core.clj
这样的文件,那么您可以尝试调用:
(load "orgname/project/core")
来自项目中的代码块 运行。