问题标签 [inria-spoon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何禁用(停用)登录 Spoon?
我想知道如何停用Spoon(用于分析和转换 Java 源代码的库)的登录?
例如,我想禁用调试日志消息。但是,我不知道如何将日志设置为 Info (log.setLevel(Level.INFO);)
java - 根据对应的 XML 元素提取 Java 元素
我有一个由输入 java 文件产生的 XML 文件。我也有xPath
XML 文件的表达式。
我需要一个函数来接收一个 xPath 表达式并返回它的 java 元素(在抽象语法树中)。我尝试了以下代码:
首先根据输入的 xPath 表达式提取 XML 元素。
/li>但是,我不知道如何将提取
XML
的节点链接到源代码中的 Java 元素。
PS:reslut应该是抽象语法树中的一个节点。我有勺子创建的 AST 。因此,在上面的例子中,我想提取相关CtMethodImpl
的 .
node.getTextContent()
不是答案,因为可能有多个实例具有相似的文本内容。
java - 将 SpoonLoader 包装为 Java AnnotationProcessor
我想将我的 Spoon 代码部署为 AnnotationProcessor,以便轻松部署到任意构建环境中。是否有人试图将现有的 SpoonLoader 包装成一个注释处理器?
我在想这个扩展可能存在,但我不知道如何开始: http: //mir.cs.illinois.edu/~bdaniel3/spoonloader/
这个问题是相关的: 如何在 Java 注释处理器中获取正确的 JavaFileManager?
java - 如何访问 INRIA-SPOON 中的“this”变量
我正在与 INRIA Spoon 合作。
我有一些动态方法调用,如下所示:
我可以使用实例的方法获得对变量的访问。 我的任务是生成代码以存储到文件中。为此,我需要 的类型和源位置(类名、行等),以便生成类似或类似的代码。a
getTarget()
CtInvocation
a
a
logger.logSerializable(a, "My.Class:21")
logger.logDoubleArrayList(a, "My.otherClass:23)"
到目前为止一切顺利,我设法通过获取实例getTarget
方法的结果来做到这一点。CtInvocation
但是,当调用的目标是 equalthis
时,例如:
getTarget
返回null。_
我怎样才能获得一个给定的目标this
变量访问CtInvocation
?
java - 用勺子在方法中生成一个类
我一直在研究一个在方法中注入内部类的处理器,我在弄清楚如何生成类和伴随的对象初始化而不导致自动生成不正确的完全限定名称时遇到了很多麻烦.
例如,我一直在处理以下内容:我一直在创建一个新课程:
然后将其插入方法中的元素之前
但是当我做一个初始化声明时:
我接到一个看起来像这样的电话:
Main
尽管internal
仅在特定方法中声明,但所有内容都在其中的整个类的名称在哪里。我已经尝试对内部类使用 getFactory().Class().create() 方法,但该方法似乎只针对嵌套在类中的类,而不是在方法中定义的类。
我对类声明做错了吗?我只是遇到了勺子生成内部类的能力的限制吗?有什么建议么?
感谢大家!
inria-spoon - 在 INRIA SPOON 中没有所有依赖项的处理
我想处理一个无法解析所有依赖项的类,但出现以下错误:
我想我记得在以前版本的 Spoon 中可以使用env.useSourceCodeFragments(true);
,但在 Spoon 5.2 中我不知道该怎么做。
inria-spoon - 在类级别添加 Annotation SwaggerDefinition 的问题
我是用于转换 Java 源的勺子库的新手。试图用它来转换现有的 REST 服务。要求是在类级别添加 io.swagger.annotations.SwaggerDefinition 注释,例如:
面临的问题是,当我添加注释时,它被添加为:
注意:缺少的大括号 '{' 和匹配的右大括号 '}'
以下是正在使用的功能:
有人可以识别丢失的部分。我无法弄清楚。
spoon - 未修改的文件也复制到 inria 勺子转换中的目标目录
我已经使用 inria-spoon 库编写了源代码转换。我的转换器中有以下函数(确保只为所需的类调用我的“进程”函数):
所以只有想要的类被转换。但似乎所有的类都从源目录复制到目标目录。我希望只将转换后的类复制到目标目录。
在 inria-spoon 中是否有一些配置或处理?
目前我正在通过 JUnit 测试用例调用我的转换器,使用以下函数:
java - --precompile 标志应该做什么?
我正在使用Spoon在带注释的类上生成代码,这样我就可以减少我正在处理的项目中的样板和代码重复。
由于项目很小,我一直在寻找方法,因此我不必将整个事情分成两个甚至三个必须按顺序编译的不同项目,因此我的AnnotationProcessor可以在
查看Spoon 文档,我发现了这个--precompile
标志,据我了解,它应该预编译整个源并将其添加到类路径中,以便Spoon在运行时找到处理器和其他东西。
但是根据我在运行它时遇到的错误,它似乎不起作用,即使我添加了该选项,我仍然缺少处理器。
完整的maven错误输出
唉,这条线让我感到困惑......
...因为是的,我确实使用了 --precompile 选项。谢谢你的慰问
使用exec-maven-plugin(执行任何 java 可执行文件)运行 spoon 的 Maven 插件声明
那么:--precompile 标志应该做什么?
分别我做错了什么?
编辑:
这是一个带有maven-pom的简化示例和描述如何在不使用 maven 的情况下运行和显示的自述文件:https ://github.com/CrumbleWorks/Spoon-Precompile-Issue
inria-spoon - 如何创建一个新类并用勺子将其保存到磁盘
我是 Spoon 的新手,如果我设法转换类,我没有找到从头开始生成新类并将其保存到磁盘的方法。
我设法创建了一个新类,但在生成目录中没有看到它。
任何帮助将不胜感激。
此致,
阿兰