【问题标题】:Parsing Java source code to find classes, attributes and methods [duplicate]解析Java源代码以查找类、属性和方法[重复]
【发布时间】:2013-08-13 08:15:25
【问题描述】:

我正在做一个实验,我必须将所有类及其属性和方法映射到它们各自的 Java 代码。现在我想知道解析 .java 文件并查找这些文件中有哪些类以及它们的属性和方法的最佳方法是什么。 我在其他一些主题中看到,构建我自己的词法分析器不是一个好主意,因为有些库已经做了这项艰苦的工作。 我发现只需调用 Java 中的一些方法就可以对项目中已包含的文件执行此操作,而不是从外部 .java 文件中调用。

谁能点亮我? 提前致谢

【问题讨论】:

  • 可以使用javaparser:code.google.com/p/javaparser
  • 请注意,javaparser 仅支持 Java 5。从上述链接接受的答案中:“从 Java 6 开始,编译器在 JDK 中包含一个 API。通过它,您可以访问 Java 解析器的结果通过javax.lang.model API。”
  • 正如@Jason 提到的,javaparser 只支持 Java 5,我只是试了一下,似乎不能正常工作。另一方面 javax.lang.model 似乎是我正在寻找的。我会试试这个。谢谢你帮我开球。如果你能把它作为答案,我会批准它
  • 这不是我的答案。 :) 如果您愿意,您可以在其他线程上投票接受的答案。

标签: java parsing


【解决方案1】:

您可以使用PMD 等源代码扫描工具,PMD 根据规则检查源代码并生成报告。像这样:

  • 某事将文件名和规则集传递到 PMD
  • PMD 将文件的 InputStream 交给 JavaCC 生成的解析器
  • PMD 从解析器获取对抽象语法树的引用
  • PMD 将 AST 交给符号表层,该层构建范围、查找声明和查找用法。
  • 如果有任何规则需要数据流分析,PMD 会将 AST 交给 DFA 层以构建控制流图和数据流节点。
  • RuleSet 中的每个规则都可以遍历 AST 并检查问题。这些规则还可以围绕符号表和 DFA 节点进行探索。
  • 报告现在充满了 RuleViolations,并以 XML 或 HTML 或其他格式打印出来

【讨论】:

  • Java编译器的解析和代码分析工具与JDK打包在一起;请参阅today.java.net/pub/a/today/2008/04/10/…(旧但适用且是一个很好的起点)——来自我在 cmets 中链接到的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多