微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么 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 举报,一经查实,本站将立刻删除。