问题标签 [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 回答
316 浏览

java - 如何使用 javaparser 获取二进制子表达式

我正在使用javaparser解析 Java 源文件的 AST。

我想将源代码中的所有二进制子表达式作为单个节点。这是我正在解析的源代码:

我实现了一个接受内置 BinaryExp 类型的访问者,但它找到的唯一节点包含二进制表达式:

有没有办法访问子表达式“(4 / 10.0)”?我尝试获取完整表达式的“左操作数”,但它是 Expression 类型,而不是我预期的 BinaryExpr。

任何帮助,将不胜感激。

0 投票
1 回答
301 浏览

java - 在 AST 中复制节点

我正在使用javaparser从 Java 源代码构造一个 AST。有没有办法安全地复制 AST 节点?

例如,如果我想复制 BinaryExpr 以插入树中的其他位置,是否有复制节点的内置方法?

0 投票
1 回答
225 浏览

java - Javaparser:单行块的花括号?

我正在使用Javaparser来解析/编写源代码。

我注意到,如果我用单行 thenStmt 创建一个 IfStmt,那么 toString 方法不会使用花括号将块括起来。这使得输出源代码难以阅读,因为所有内容都放在一行中,如下所示。

有没有办法为单行 if 块启用花括号?所以 toString 方法将改为输出:

0 投票
1 回答
1247 浏览

java - Javaparser:用一种方法访问所有节点类型

我正在使用Javaparser来解析 Java 源代码。

有没有办法实现可以访问抽象节点类的访问者?

我想访问每个节点并打印它的行号,但我不想为每个节点类型(AssignExpr、BinaryExpr、IfStmt 等)实现一个 visit() 方法,因为类型太多了。

0 投票
1 回答
100 浏览

java - java中的字符串解析器逻辑

我有一个像下面这样的字符串,它可以通过更多的 AND/OR/NOT 条件进一步增长,但保持语法。

需要解析这个字符串。部分成功将此字符串转换为 JSON 对象。但不能完全做到。

0 投票
1 回答
3381 浏览

java - 使用 Java Parser 从 Java 文件中解析属性

我在下面有 3 节课。

我想使用具有以下信息的 java 解析器解析类:

  • 类名
  • 方法名称
  • 属性名称
0 投票
4 回答
905 浏览

android - 用 JsonObject 解析 JsonArray

我有一些具有以下结构的 JSON:

我正在尝试使用以下 Java 代码访问元素“product_id”和“price_id”:

但我看到产品未找到错误。我的解析器有什么问题?

0 投票
1 回答
3489 浏览

java - 从java代码中提取方法调用

我想从 java 代码中提取所有方法调用。我写了以下两个正则表达式,但它们无法提取所有方法调用。

注册1:Pattern.compile("([a-zA-Z][0-9_a-zA-Z]*\\([a-zA-Z0-9_\\s,\\[\\]\\(\\)\\.]+\\))");

注册2:Pattern.compile("([a-zA-Z][0-9_a-zA-Z]*\\([\\s]*\\))")

输入:

输出:

我无法提取“ encode”。

有谁知道我应该在正则表达式中添加什么?

0 投票
1 回答
489 浏览

java - .java 报告生成、方法调用者和被调用者

您好,互联网上最有帮助的社区!

我正在开发一个可以读取 .java 文件并吐出数据的项目。我提取数据的程序之一并没有完全按照我的预期工作(非常陈词滥调)。它解析文件树中的所有 .java 文件,并使用链接哈希图在 .txt 文件中列出调用方 pkg.class.method 和调用 pkg.class.method 等数据。它做的一切都是正确的,除了它只给我一个方法调用的最后一个方法,而不是每个方法调用的所有方法。我认为这是因为我在linkedhashmap 中存储数据的方式,即一个键(调用方方法)和多个值(调用方方法)。

我希望文本文件列出从第一个遇到的每个方法调用的每个方法。有没有解决的办法?

这是代码:

谢谢大家!

0 投票
1 回答
404 浏览

java - 检查方法范围Java中的重复变量

FileReader我使用包含一些方法的java 文件。我如何读取方法范围(内部的方法区域)以查找重复变量?

例如,这是我读取的一个 java 文件:

如何知道方法范围?,我的意思是在 { 和 } 之间,如果找到范围,找到重复的变量,例如上面的示例 (int _nn) 重复。

[补充] 我尝试过使用java解析器,然后是成功的。然后我应该使用列表发送结果,但只发送列表中的最后一个方法。我的代码有什么问题?

这是一个 MethodVisitor:

然后,这是一个调用 MethodVisitor 的方法: