使用Spoon在文档注释中获取非Javadoc标签的文本

问题描述

我想使用inria-spoon处理内部具有自定义非Javadoc标记的Java源文件 Doc评论。但是,当Spoon处理文档注释时,使用String返回的CtMethod#getDocComment()将用@unknown替换非Javadoc标签的文本。 我需要保留标签的原始文本,以进行进一步的过滤和处理。

下面的两个类显示了一个输出为

的示例
@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中修复此问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...