我正在寻找一种解析器,它可以从java类(静态源代码 - > .java文件)和方法签名,注释/文档,每种方法的变量中提取方法。最好是Java编程语言。
有人可以提出建议吗?
感谢。
答案 0 :(得分:8)
您可以通过eclipse使用ASTParser。它的使用非常简单。
查找快速独立示例here。
答案 1 :(得分:4)
以下是我从java文件中提取方法签名的方法:
我使用Sublime Text 2到我想要获取签名的文件,然后执行查找 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 。
然后,您将看到所有方法签名。
我希望它有所帮助。
答案 2 :(得分:1)
如果你想要的 all 是每个方法的确切文本,以及方法中变量的确切文本,你可以使用生成CST的解析器,走CST找到右边的节点,然后对找到的子树进行精心打印。 ANTLR has a Java parser这对此有用。我不知道它是否会捕获评论。我认为ANTLR的主要分布是用Java编写的。
你可能会用Java的词法分析器更加骇人听闻,实现相当于寻找关键短语的坏岛解析器。 (“在'课后',找到'{'并打印出你找到的匹配'}'的所有内容”“会给你所有方法和字段。”
如果您想要更精确的细节(例如,您想知道参数的实际类型而不仅仅是其名称,或者实际定义了类型),您需要一个具有完整前端和名称解析的解析器。 (ANTLR不会这样做。)Eclipse JDT肯定会建造树木;它可能会解析名称。我们的DMS Software Reengineering Toolkit及其Java Front End可以提供此任务所需的一切,包括评论捕获和提取。 DMS不是用Java编码的。
你反对Javadoc是不合适的,因为它没有给你方法的内容。也许我们的Java Source Browser会为您提供更好的代码。它集成了我们的DMS / Java前端的名称解析数据,将JavaDoc类型的信息超链接到可浏览的源文本中;显式索引所有字段和局部变量。源浏览器不是用Java编码的,但是大概你想要运行它并刮掉你的结果。这种刮擦可能比盯着屏幕看起来更难;这样的显示器背后有很多HTML。