最近在寫javadoc方面的内容,本打算自己通過反射的機制拿到關于類中各種資訊, 分析了maven的javadoc插件之後,發現它使用了qdox的開源包。試用了一把,還是不錯的,大概情況如下:
1、加入依賴:
<dependency>
<groupId>com.thoughtworks.qdox</groupId>
<artifactId>qdox</artifactId>
<version>1.9.2</version>
</dependency>
JavaDocBuilder builder = new JavaDocBuilder();
builder.addSource(new File("D:/java/com/alibaba/normandy/advice/AdviceHandlerTest.java"));
JavaPackage[] packages = builder.getPackages();
for (JavaPackage javaPackage : packages) {
System.out.println(javaPackage.toString());
}
JavaSource[] javaSources = builder.getSources();
for(JavaSource javaSource:javaSources ){
System.out.println(javaSource.toString());
輸出:
package com.alibaba.normandy.advice //讀取出來的包名
package com.alibaba.normandy.advice;
import org.junit.Assert.*;
import org.junit.Test;
/**
* @since 1.1
* @version 1.1
* @author keju.wangkj
*/
public class AdviceHandlerTest {
/**
* @step guid對應的activatedValue不存在
* @expected 在Config_Value表中成功插入新記錄
* @expected 傳回值1 (version = 1)
SimpleConfigValue中使用的StringUtil.defaultIfNull(simpleValue)是否有必要
*/
public void testBeforeServiceActions() {
fail("Not yet implemented");
}
public void testAfterServiceActions() {
public void testExceptionServiceActions() {
}
3、取得方法的tags
JavaClass[] javaClasses = builder.getClasses();
for (JavaClass javaClass : javaClasses) {
JavaMethod[] javaMethods = javaClass.getMethods();
for (JavaMethod javaMethod : javaMethods) {
DocletTag[] docTags = javaMethod.getTags();
for (DocletTag docletTag : docTags) {
System.out.println(docletTag.getName() + "->" + docletTag.getValue());
}
}
}
源檔案:
* QDox API檢查
*
* @param p1, p2
* @since 2011
*/
@Test
public void test1() {
}
/**
* QDox檢查
@Ignore
public void test2() {
測試輸出:
param->p1, p2
since->2011
本文轉自 tianya23 51CTO部落格,原文連結:http://blog.51cto.com/tianya23/566058,如需轉載請自行聯系原作者