问题描述
我正在使用 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() {
...
}
我真的很想知道如何获取单源脚本的所有方法文档,我使用的 groovy-doc 版本是 2.5.1。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)