问题标签 [javaparser]

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 回答
265 浏览

parsing - JavaParser:Java语法定义在哪里?

我在哪里可以获得JavaParser实际用于解析 Java 代码的 BNF 样式的 Java 1.8 语法?

java_1_8.jjJavaParser 的代码库中有一个由 自动生成的文件javacc,但没有看到用于生成该文件的语法.jj文件。

0 投票
1 回答
1720 浏览

java - JavaParser 不更新源文件

我正在使用JavaParser并关注其 Wiki。问题是即使我更改方法的名称并向其添加参数,文件也不会更新。换言之,不会保存更改。当我System.out.println更改CompilationUnit时,它会打印更改,但这些更改根本不会影响源文件。

有什么类似的东西CompilationUnit.update()还是我错过了什么?

我在 Wiki 中使用的示例:

编辑: 这是解决方案;添加下线;


更改行下也可以使用特殊字符(例如“ş,ö,ü ...)

0 投票
1 回答
748 浏览

java - 使用 JavaParser 将字符串字段添加到新的编译单元

这可能是一个愚蠢的问题,但我想了解主题所说的内容。我想在新的编译单元中向新声明的 classOrInterfaceobject 添加一个新的 String 字段。但是从我从源文件中可以看出,该选项是不可能的。PrimitiveClass 只保存所有其他原语的枚举,Long、char、bytes 等。

我错过了什么吗?还是开发人员忘记了 String 选项?

解决了感谢Riduidels 的回答,我设法破解了代码,可以这么说:) 事情是创建一个新的 ClassOrInterfaceType 并将其命名为 String,很简单。不过,我必须说,JavaParser 背后的人应该考虑为 String 添加一个枚举,就像他们为其他 Primitives 所做的那样。工作代码:

谢谢瑞杜德尔!

0 投票
1 回答
638 浏览

java - JavaParser 比较

我正在玩 JavaParser,我正在寻找一种过滤所有 System.out.println(); 的方法;

我可以用以下方法做到这一点

我不喜欢那个解决方案,因为我每次都需要创建一个新的 MethodExpression 来匹配参数。我想创建一个静态最终 MethodExpression 并将输入参数与常量进行比较。

就像是

有没有办法在 equals 方法之外比较 JParser 中的语句?

0 投票
1 回答
287 浏览

java - Javaparser方法编辑

假设我有一个方法:

我想在该方法的最开始插入一条语句,在 { 和 int i = 5; 之间。我如何用 javaparser 做到这一点?访问方法时,ASTHelper.addStmt(..) 在方法末尾插入语句。

0 投票
2 回答
772 浏览

java - 测试新的 Java 解析器

纯粹作为自学练习,我正在尝试使用该Parse::RecDescent模块在 Perl 中编写 Java 解析器。稍后我可能会使用其他其他工具(如Antlrbison等)重新实现解析器。

但是,根据 Java 语言规范,我如何确保我的解析器确实生成了正确的解析?意思是,它对悬空else、运算符关联性和-precedence 等的正确处理。

一种方法是将我的解析器与已知的、无错误的解析器进行比较,方法是让两个解析器为大量测试 Java 程序生成 AST,然后比较两组 AST。

如果这确实是唯一的方法,我在哪里可以找到一套全面覆盖整个 Java 语言规范的大型测试 Java 程序?

我看过JavaParser,但它似乎没有详尽的测试数据集。

当然,另一种方法是亲自编写数以万计的测试 Java 程序,这对我来说是非常不切实际的,不仅在时间方面而且在确保其详尽无遗方面!

0 投票
1 回答
363 浏览

javaparser - 如何使用 javaparser 添加类级变量声明?

这是A.java

我想得到 NewA.java

我想使用 javaparser 添加一个变量。

0 投票
1 回答
1089 浏览

java - 如何计算java类的继承树深度?

我正在制作一个分析器来计算 java 类的继承树的深度。

我正在使用 javaparser 从 java 文件中获取此信息。

我将如何计算 DIT?

我知道 .getSuperClass() 但这在将 java 文件作为静态分析器的一部分进行解析时没有用。

0 投票
1 回答
349 浏览

java - 识别语句/行中使用的变量

给定一种方法,我想识别未使用的变量。我目前正在查看的格式保证有一个断言语句作为每个方法的最后一行。

我正在使用 JavaParser 解析每个方法,列出语句并列出该方法中使用的所有变量。

如何检索最后一条语句中使用的所有变量?

0 投票
1 回答
635 浏览

java - 如何使用 JavaParser 创建一个新对象作为 AST 节点?

我想使用JavaParser将以下语句添加到我的 AST 中。我已经阅读了手册,并且知道如何做简单的示例。但是,我找不到与创建新对象相关的任何内容。我想知道是否有人可以帮助我。