java - 使用 Spoon 在文档注释中获取非 Javadoc 标记的文本
问题描述
我想使用 inria-spoon 来处理在文档注释中具有自定义非 Javadoc 标记的 Java 源文件。但是,当 Spoon 处理 Doc 注释时,String
返回的 usingCtMethod#getDocComment()
会将非 Javadoc 标记的文本替换为@unknown
. 我需要保留标签的原始文本以供进一步过滤和处理。
下面的两个类显示了一个示例,其中输出为
@unknown some-value
@return name of husband
并且想要的是
@abc:xyz some-value
@return name of husband
运行的主要方法是类Spooner
,正在处理的源是Carrie.java
。
Spooner.java
:
package tryspoon;
import spoon.Launcher;
import spoon.reflect.declaration.CtMethod;
import spoon.reflect.visitor.filter.TypeFilter;
public class Spooner
{
private static final String SAMPLE_SOURCE_PATH = "full_local_path_to_source";
public static void main(String[] args)
{
Launcher launcher = new Launcher();
launcher.addInputResource(SAMPLE_SOURCE_PATH);
launcher.buildModel();
String firstDocComment = launcher.getModel()
.getElements(new TypeFilter<>(CtMethod.class))
.get(0).getDocComment();
System.out.println("First Doc comment contents: " + firstDocComment);
}
}
Carrie.java
:
package tryspoon;
public class Carrie {
/**
* @abc:xyz some-value
* @return name of husband
*/
public String husband()
{
return "Doug";
}
}
解决方案
当https://github.com/INRIA/spoon/pull/3513合并时,这将很快在 master 中修复。
推荐阅读
- homebrew - brew postinstall mysql@5.7 报空时数据目录不为空
- javascript - 使用 javascript 加载脚本和 CSS 的更好方法
- angular - 错误类型错误:无法读取 Object.eval [as updateRenderer] 处未定义的属性“project_name” - Angular 8
- laravel - Laravel Eloquent 关系顺序不工作
- sql-server - 使用连接字符串+'数字增量'更新多条记录
- java - JAVA:Stripe webhook 错误:未找到与有效负载的预期签名匹配的签名
- android - 如何制作像Linkedin这样的进度条来显示个人资料状态?
- python - 循环和计数python 2d数组
- html - 如何在危险的SetInnerHTML中设置默认值?
- azure - Azure 静态网站 - 在 Chrome 中显示旧内容