2012-06-16 141 views
5

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

有人能请指教吗?

谢谢。

+0

提取到什么格式?您可能只需运行Javadoc工具并处理生成的HTML。 –

+0

对我来说,APIs如果可用,会更有用,getMethodNames,getComments,getDocumentation等。另外,Javadoc不会给我在方法中声明的私有变量,方法名称等。 –

+0

你是什么寻找是一个完整的[静态分析器](http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java)。 –

回答

8

您可以通过eclipse使用ASTParser。它超级简单易用。

查找快速独立示例here

+0

是的,我正在检查。有没有办法在使用ASTParser的方法中获得“注释”? –

+0

ASTParser确实声明了一个名为“Comment”的节点。你可以阅读它的javadoc –

+1

CompilationUnit给commentList,但我无法得到实际的意见。例如:如果评论是/ /你好世界,它只输出// –

1

如果全部你想要的是每个方法的确切文本以及方法内部变量的确切文本,你可以通过一个产生CST的解析器,走CST找到正确的节点,然后打印找到的子树。 ANTLR has a Java parser这将工作。我不知道它是否会收集评论。我认为ANTLR的主要分布是用Java编码的。

在Java中,你可能会用Java的一个词法分析器来做这件事,这实现了一个相当于一个糟糕的岛分析器的问题,它可以查找关键短语。 (“上课之后”,找到'{'并打印出找到匹配的'}'的所有内容“将会给你所有的方法和领域)。

如果你想要更精确的细节(例如,你想知道参数的实际类型而不仅仅是它的名字,或者实际定义了类型的地方),你需要一个具有完整前端和名称的解析器解析度。 (ANTLR不会这样做)。Eclipse JDT当然会建树;它可能会做名称解析。我们的DMS Software Reengineering Toolkit及其Java Front End可以提供此任务所需的一切,包括注释捕获和提取。 DMS不用Java编码。

您反对Javadoc是不够的,因为它没有给你方法的内容。也许我们的Java Source Browser,它会给你代码,会更好。它将来自我们的DMS/Java前端的名称解析数据集成到超链接JavaDoc类型的信息中,成为可浏览的源文本;所有字段以及局部变量都被显式索引。源浏览器不是用Java编码的,但可能你只是想运行它并拖拽你的结果。这种刮擦可能比看起来盯着屏幕更难;在这样的显示器后面有很多HTML。

4

这是我做的一个java文件/ s的提取方法签名:

我用Sublime Text 2,将文件我希望从中获取签名和做一个找到按Ctrl + ˚F用正则表达式以下正则表达式我做了(我测试它在我的代码和它的作品,我希望它会为你工作太)Sublime Text 2彰显我的结果

((synchronized +)?(public|private|protected) +(static [a-Z\[\]]+|[a-Z\[\]]+) [a-Z]+\([a-Z ,\[\]]*\)\n?[a-Z ,\t\n]*\{) 

后,我点击“查找全部”设置然后复制Ctrl键 + Ç,打开新的标签Ctrl键 + Ñ并粘贴Ctrl键 + V
然后你会看到你所有的方法签名。

我希望它有帮助。