为什么 groovydoc 总是只返回一个方法文档?

问题描述

我正在使用 groovy-doc 来分析一些单个文件的 groovy 脚本,我想找到所有带有特定注释的方法,如下所示:

@Mapping(value = "wirelessOfferdetailImageViewComposer",description = "description")
def mapping(Map<String,Object> aliasContext,InvokeContext invokeContext) {
    def data = doMapping(aliasContext,invokeContext)
    def trackInfo = getTrackInfo(aliasContext,invokeContext)
    return [
        "data" : data,"trackInfo" : trackInfo
    ]
}

我认为 groovydoc 应该找到脚本中的所有方法,然后我可以找出哪个方法具有注释 Mapping 并使用以下代码获取值:

Map<String,GroovyClassDoc> rootDoc = docBuilder.getClassDocsFromSingleSource(
                    DEFAULT_PACKAGE,DEFAULT_FILE_NAME,sourceCode
            );
            GroovyClassDoc classDoc = rootDoc.get(DEFAULT_DOC_CLASS);
            MappingSpec mappingSpec = new MappingSpec();
            for (GroovyMethodDoc methodDoc : classDoc.methods()) {
                if (MAPPING_METHOD.equals(methodDoc.name())) {
                    GroovyAnnotationRef[] annotationRefs = methodDoc.annotations();
                    if (annotationRefs != null) {
                        for (GroovyAnnotationRef annotationRef : annotationRefs) {
                            if ("Mapping".equals(annotationRef.name())) {
                                Map<String,String> annKv = ParamParserUtil.parseAnnotation(annotationRef.description());
                                if (annKv != null) {
                                    mappingSpec.setDescription(annKv.get("description"));
                                    mappingSpec.setStruct(annKv.get("struct"));
                                    mappingSpec.setName(annKv.get("value"));
                                    return mappingSpec;
                                }
                            }
                        }
                    }
                }
            }

但是我运行代码的时候发现classDoc.methods()总是只返回两个方法一个是groovy的main方法一个是脚本源码中声明的最后一个方法(总是最后一个!)

例如,下面的源代码只会返回 main()c()方法文档:

def a() {
    ...
}

def b() {
    ...
}

def c() {
    ...
}

the IDEA debug result

我真的很想知道如何获取单源脚本的所有方法文档,我使用的 groovy-doc 版本是 2.5.1。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)