问题标签 [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.

0 投票
1 回答
164 浏览

java - 任务 ':spoon' 执行失败。> org/eclipse/jdt/internal/core/util/CommentRecorderParser

我是勺子的新手。我只知道使用 Spoon 我们可以分析和转换源代码。我想在我的 gradle 项目中使用 Spoon。我正在为这个项目使用 IntelliJ IDEA。当我尝试构建项目时出现此错误。

错误:

我的build.gradle文件如下:

我用这个建造时得到了这个--stacktrace

请帮我解决这个问题。提前致谢

0 投票
1 回答
140 浏览

hadoop - 如何使用spoon编译Hadoop项目

我是 Spoon 和 Astor 的新用户。最近我正在使用 Astor( SpoonLabs/astor ) 做一些自动化的 bug 修复工作。

Astor 将首先使用 Spoon 库来编译和分析项目源代码。现在我可以使用Spoon成功合成小项目,但是它无法成功编译Hadoop子模块(例如hadoop/hadoop-common-project/hadoop-auth)。

我发现 Spoon 在编译模型时有问题。似乎 Spoon 无法从 package-info.java 文件中获取声明的类型。有谁知道如何解决这个问题?非常感谢!

日志信息如下:

package-info.java 文件:

0 投票
2 回答
485 浏览

inria-spoon - 文本文件中勺子的 AST

在 spoon 代码分析工具中,AST 使用以下命令在 GUI 中可视化:

$ java -cp 勺子核心-5.9.0-jar-with-dependencies.jar 勺子.Launcher -i MyClass.java --gui --noclasspath

我试图在没有 -gui 的情况下运行相同的命令,但是我没有得到任何输出。无论如何我可以在文本文件中获取 AST。

0 投票
0 回答
110 浏览

maven - 从勺子开始

我对 Spoon 完全陌生,并且对 Maven 有非常基本的了解,

所以我的问题是,我从哪里开始使用 Spoon。我一遍又一遍地阅读“入门”指南,但在“应用处理器”部分遇到了困难。

任何帮助/建议将不胜感激

0 投票
2 回答
801 浏览

java - 勺子 - 应用处理器

我一直在关注这个关于 Spoon 入门的教程。

我一直难以运行以下命令(位于上面链接中的页面底部):

$ java -classpath /path/to/binary/of/your/processor.jar:spoon-core-{{site.spoon_release}}-jar-with-dependencies.jar spoon.Launcher -i /path/to/src/ of/your/project -p 处理器.CatchProcessor

有人可以分解并解释这个命令需要什么,特别是“-classpath”之后的位。

附言。无论如何,我尝试运行命令,我得到的错误是“找不到类 Spoon.Launcher”

0 投票
1 回答
128 浏览

comments - 如何使用 SPOON 获得评论?

全部!我不确定你们在使用SPOON获取 Java 代码注释时是否遇到问题。根据以下网站的描述,

http://spoon.gforge.inria.fr/comments.html

我们知道SPOON可以处理的 Java 注释种类繁多,但是当我使用函数CtElement.getDocComment()或接口spoon.reflect.code.CtComment时,我无法获得任何注释内容。

主函数中只有一个 Launcher 对象,

处理器CLSProcessor如下,

寻求您的帮助,欢迎提出任何意见!

0 投票
3 回答
810 浏览

java - 从 int 映射到类

我想根据用户输入创建不同类的对象,即用户将告诉创建哪个类的对象。我有这样的事情:

launcher.addProcessor((Processor) new SerializableFieldProcessor(projectKey));

现在我有其他处理器并希望用户提供一个整数输入,并根据它创建相应处理器的对象。一种直接的方法是使用 switch case,但稍后我将拥有超过 50 或 100 个单独的处理器。有没有办法用地图或类似的东西来做到这一点?像这样的东西:

0 投票
1 回答
208 浏览

java - INRIA SPOON API MethodCalls-Retrieve Callee Classes for method.getExecutable() 和 method.getTarget()

我正在尝试使用 INRIA 开发的工具勺为我正在解析的项目提取方法调用,我已经有一个方法 mysql 表,其中存储了所有方法(methodid、methodname、classid、classname)。我正在使用以下代码来提取项目中的方法调用:

问题是我无法检索被调用者所属的类,我只能检索方法签名,这是一个问题,因为可以在多个类中找到相同的方法,例如 isWhite() 所以我当我仅根据方法名称查询我的数据库“方法”表时,最终会得到多个结果。我尝试使用它来检索被调用者所属的类 String methodCallee=calledmethod.getExecutable().getClass().getSimpleName(); 但返回:“CtExecutableReferenceImpl”。

我遇到的另一个问题是我依靠 calledmethod.getExecutable() 来提取方法被调用者。但是, calledmethod.getTarget() 本身可以包含一些被调用者,我打印了 calledmethod.getTarget() 的内容,并为其中一个调用者获得了 TARGET: getLastPly().getDestination() 。如果目标是由一系列被调用者组成的,有没有办法将它们全部分开?另外,我需要知道每个“目标被调用者”所属的类列表,我对 Spoon 很陌生,所以我真的不知道要使用哪些 API

0 投票
1 回答
53 浏览

parsing - INRIA SPOON 嵌套方法和嵌套方法调用

我正在尝试使用 INRIA 开发的 SPOON 来检索程序中的所有方法以及所有方法调用。对于普通方法,我可以这样做,但是,我无法检索嵌套方法,也无法检索嵌套方法调用。

这是我正在解析的代码片段,在这种情况下,我想用勺子收集没有 main 嵌套的方法 run(),我还想检索从 run 到类 ElbowLiner 的构造函数的调用,请您给我指导如何实现这一目标。我使用 getAll(true) 检索包括嵌套方法调用在内的所有内容,但它不起作用,我无法在下面的代码片段中检索 run(),也无法从 run() 检索到方法调用ElbowLiner 的构造函数

0 投票
1 回答
39 浏览

methods - INRIA SPOON 调用构造函数的内部方法

我正在尝试将调用从方法 run() 提取到构造函数。这是我要解析的代码

这是我用来提取从方法 run() 到构造函数的调用的代码。我遇到的问题是最后一行: String constructorClassName= cons.getExecutable().getDeclaringType().toString(); 返回错误的类名,而不是得到“jhot.draw.TextAreaFigure()”作为我得到“jhot.mini.samples.TextAreaFigure()”的名称。我正在解析的文件位于“jhot.mini.samples”下,而构造函数在“jhot.draw.TextAreaFigure()”中声明。我不确定这是否是勺子中的错误,或者我是否使用错误的 API 来检索构造函数调用。