用于Java源代码的静态代码解析器,用于提取方法/注释

时间:2012-06-16 03:51:15

标签: java parsing static static-analysis

我正在寻找一种解析器,它可以从java类(静态源代码 - > .java文件)和方法签名,注释/文档,每种方法的变量中提取方法。最好是Java编程语言。

有人可以提出建议吗?

感谢。

3 个答案:

答案 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。