我在使用GroovyDocTool时遇到了困难。
无论我传入哪条路径,我的rootDoc
都不会解析为任何包,类或方法。我不得不假设我只是走错了路,但是对于我的生活来说,无法弄清楚要通过什么。
class TestGroovyDoclet extends GroovyDocTool{
public TestGroovyDoclet() {
super([
'~/ ... /src/'
,'/home/ ... /src/ ... /Sample/'
,'/home/ ... /src/ ... /Sample/Results.groovy'
]);
}
public void Execute(){
System.out.println('Begin Processing Javadoc');
System.out.format(' p %d\n', rootDoc.specifiedPackages().length);
System.out.format(' c %d\n', rootDoc.classes().length);
System.out.println('Finished Processing Javadoc');
}
public static void main(String[] args){
(new TestGroovyDoclet()).with{
it.Execute();
}
}
}
什么被认为是传递到GroovyRootDocBuilder
的有效参数?
答案 0 :(得分:0)
GroovyDoc的作者似乎打算将其用于Ant。这意味着无法查找要处理的文件,因为您应该已经知道要处理的文件。使用者必须指定要处理的单个文件,和调用query.exec(function(topicError, topicResult){
var answerCount = topicResult.answerRef.length;
res.render('topic', { topic: topicResult });
});
以实际处理文件。 (请参阅覆盖buildPath
)
对于那些只想与文档树进行交互的人来说,buildPath
实际上没有任何价值,用户可能会更好地扩展实际包含处理内容的GroovyDocTool
。如果你这样做,你也可以重新编写构造函数来完全隐藏GroovyRootDocBuilder
。 (参见新的构造函数)
GroovyDocTool
以上代码并不完美,并不完全是我提出的;相反,代码旨在强调OP中包含的一些错误假设,以及解决它们的机制。由于它只是剪切/粘贴更大的重写元素,所以它不能编译。
怪诞:
class TestGroovyDoclet extends GroovyRootDocBuilder{
protected def sourcepaths = [];
public TestGroovyDoclet() {
//HARDCODE: some test values for my testing
this([
'~/ ... /src/'
,'/home/ ... /src/ ... /Sample/'
,'/home/ ... /src/ ... /Sample/Results.groovy'
]);
}
public TestGroovyDoclet(String[] sourcepaths) {
//hide the unused GroovyDocTool
super(new GroovyDocTool(), sourcepaths, new ArrayList<LinkArgument>(), new Properties());
this.sourcepaths = sourcepaths;
}
/**
* Builds the tree by recursively searching for files
* <p>
* It is likely useful to override the original buildTree
* method as well to put some safeties in place. The parsing
* routines do not do a lot of validation. For those of us
* inheritting, it would be a good idea to override build
* tree ot sanitize the input list as much as possible.
* </p>
*/
@Override
public void buildTree(){
def list = [];
// loop through the sourcepaths to recursively find the files
for (String sourcepath : sourcepaths) {
def root = new File(sourcepath);
if(root.exists()){
if(root.isFile()){
list << root.absolutePath;
}
else{
root.eachFileRecurse (FileType.FILES) { file -> list << file.absolutePath; };
}
}
}
buildTree(list);
}
/**
* Method to actually do the processing. Sample only, does not demonstrate anything useful.
*/
public void Execute(){
buildTree();
System.out.println('Begin Processing GroovyDoc');
System.out.format(' p %d\n', rootDoc.specifiedPackages().length);
//System.out.format(' c %d\n', rootDoc.classes().length);
int count = 0;
for(def p : rootDoc.specifiedPackages()){
count += p.allClasses().length;
}
System.out.format(' c %d\n', count);
System.out.println('Finished Processing GroovyDoc');
}
public static void main(String[] args){
(new TestGroovyDoclet()).with{
it.Execute();
}
}
}
始终返回GroovyRootDoc.classes
(不确定原因)。有必要遍历每个包,并检查作为每个包的子集的类。这是令人惊讶的,但无论如何都是理想的用法。