天天看點

QDox使用實踐

  最近在寫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,如需轉載請自行聯系原作者