JavaParser只显示注释,而不是JavaDoc

时间:2016-01-14 12:12:33

标签: java javadoc abstract-syntax-tree javaparser

免责声明:我只是一名低级受训人员,所以如果我犯了一些基本错误,请原谅我:(

我正在编写一个自动API生成器,这些类需要JavaDoc以及注释,因为API中包含的某些值不应该写在JavaDoc中(例如exampleResponse)。

但是,似乎单个方法上面的注释替换了Javadoc,所以当我想从JavaDoc中获取描述时(我想这样做,我不必在注释中再次写入),我有一个问题。

使用getJavadoc()始终返回null。我还尝试使用getOrphanComments(),但它返回null。我误解了文档吗?我假设如果我在一个方法上面写了两条评论,那么最上面的一条将转移到该方法的orphanComments。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

MethodDeclaration对象为method 你可以使用

获得java doc
if( method.hasComment() && method.getComment() instanceof JavadocComment ){
    JavadocComment javaDoc = (JavadocComment)method.getComment();
    // now you can get the content using 
    String content = javaDoc.getContent();
}

答案 1 :(得分:0)

对于以下类型:

public final String             name;
public final String             signature;
public final String             returnType;      
public final Type               returnFullType; // com.github.javaparser.ast.type.Type
public final String             body;
public final String[]           modifiers;
public final String[]           parameterNames;
public final String[]           parameterTypes;
public final Type[]             parameterFullTypes; // com.github.javaparser.ast.type.Type
public final String[]           exceptions;
public final String             jdComment;
public final MethodDeclaration  nativeJP_API_reference; // com.github.javaparser.ast.body.MethodDeclaration

这是我自己的混合物Method类的构造函数:

Method (MethodDeclaration md)
{
    NodeList<Modifier>      ml  = md.getModifiers();
    NodeList<Parameter>     pl  = md.getParameters();
    NodeList<ReferenceType> te  = md.getThrownExceptions();

    this.nativeJP_API_reference = md;
    this.name                   = md.getNameAsString();
    this.signature              = md.getDeclarationAsString();
    this.returnType             = md.getType().toString();
    this.returnFullType         = md.getType();
    this.body                   = md.getBody().isPresent() ? md.getBody().get().toString() : null;  // In ConstructorDeclaration, this is an Optional<BlockStmt>, not here!
    this.modifiers              = new String[ml.size()];
    this.parameterNames         = new String[pl.size()];
    this.parameterTypes         = new String[pl.size()];
    this.parameterFullTypes     = new com.github.javaparser.ast.type.Type[pl.size()];
    this.exceptions             = new String[te.size()];
    this.jdComment              = md.hasJavaDocComment() ? md.getJavadocComment().get().toString() : null;

    int i = 0;
    for (Parameter p : pl)
    {
        parameterNames[i]       = p.getName().toString();
        parameterTypes[i]       = p.getType().toString();
        parameterFullTypes[i]   = p.getType();
        i++;
    }
    i = 0;
    for (Modifier m : ml)       modifiers[i++]  = m.toString();
    i = 0;
    for (ReferenceType r : te)  exceptions[i++] = r.toString();;
}