我正在寻找一个可以从 java 类(静态源代码-> .java 文件)和方法签名、注释/文档、每个方法的变量中提取方法的解析器。最好用Java编程语言。
有人可以建议吗?
谢谢。
我正在寻找一个可以从 java 类(静态源代码-> .java 文件)和方法签名、注释/文档、每个方法的变量中提取方法的解析器。最好用Java编程语言。
有人可以建议吗?
谢谢。
您可以通过 Eclipse 使用 ASTParser。它使用起来超级简单。
在这里找到一个快速的独立示例。
这是我从 java 文件中提取方法签名的方法:
我使用Sublime Text 2,到我想从中获取签名的文件,并为我制作的以下正则表达式设置正则表达式的 find Ctrl+ (我在我的代码上对其进行了测试并且它有效,我希望它对你有用F也)
((synchronized +)?(public|private|protected) +(static [a-Z\[\]]+|[a-Z\[\]]+) [a-Z]+\([a-Z ,\[\]]*\)\n?[a-Z ,\t\n]*\{)
在Sublime Text 2突出显示我的结果后,我单击“查找全部”,然后复制Ctrl+ C,打开一个新选项卡Ctrl+N并粘贴Ctrl+ V。
然后,您将看到所有方法签名。
我希望它有所帮助。
如果您想要的只是每个方法的确切文本,以及方法内变量的确切文本,您可以使用生成 CST 的解析器,遍历 CST 以找到正确的节点,然后漂亮地打印找到的子树。 ANTLR 有一个 Java 解析器可以解决这个问题。我不知道它是否会捕获评论。我认为 ANTLR 的主要发行版是用 Java 编码的。
您可能会在 Java 中使用 Java 的词法分析器来更巧妙地做到这一点,实现相当于查找关键短语的坏岛解析器。(“在 'class' 之后,找到 '{' 并打印出你找到的所有内容,直到匹配的 '}'”会给你所有的方法和字段)。
如果您想要更精确的细节(例如,您想知道参数的实际类型而不仅仅是它的名称,或者类型实际定义的位置),您将需要一个具有完整前端和名称解析的解析器。(ANTLR 不会这样做。)Eclipse JDT肯定会构建树。它可能会进行名称解析。我们的DMS Software Reengineering Toolkit及其Java 前端可以提供此任务所需的一切,包括评论捕获和提取。DMS 不是用 Java 编码的。
您反对 Javadoc 的不足,因为它没有为您提供方法的内容。也许我们的Java Source Browser确实为您提供了该代码,它会提供更好的服务。它集成了来自我们的 DMS/Java 前端的名称解析数据,以将 JavaDoc 类型的信息超链接到可浏览的源文本中;所有字段以及局部变量都被显式索引。源浏览器不是用 Java 编码的,但大概你只是想运行它并抓取你的结果。这种刮擦可能比盯着屏幕看起来更难;这样的显示背后有很多 HTML。