2011-12-14 15 views
23

Tôi cần phải biết làm thế nào để đọc comments Javadoc khi chạyLàm thế nào để đọc ý kiến ​​Javadoc bằng cách phản ánh?

Nói rằng tôi có các chức năng sau đây (có lẽ do phản xạ?):

/** 
* function that do some thing 
*/ 
public void myFunc() 
{ 

    //... 
} 

Khi chạy, tôi có thể nhận được nhiều thông tin về chức năng này bằng cách phản ánh .. Nhưng không thể đọc các bình luận. Vì vậy, câu hỏi là, Làm thế nào để đọc này javadoc ý kiến ​​khi chạy.

+0

Kể từ khi 2 câu trả lời ở đây cho biết họ không thể được thực hiện với sự biên dịch mã, bạn sẽ có thể làm với mã nguồn. Và để làm điều đó, hãy thử tìm kiếm "trích xuất javadoc từ nguồn" và sau đó lấy một số công cụ nguồn mở và sửa đổi nó theo nhu cầu của bạn. –

+0

Tôi nghĩ rằng việc đi với @Puce dễ dàng hơn nhiều vì tôi là chủ sở hữu của mã nguồn! –

+1

Câu hỏi thực tế là: bạn cần những JavaDocs đó để làm gì? Trường hợp sử dụng là gì? – Thomas

Trả lời

14

Cân nhắc sử dụng chú thích thay vì Javadoc và viết bộ xử lý chú thích.

16

Bạn không thể. Chúng bị xóa khỏi mã được biên dịch.

7

Bạn không thể làm điều đó, khiến javadoc không được biên dịch thành các lớp học cuối cùng.

30

Doclet lớp:

public class ExtractCommentsDoclet { 
    public static boolean start(RootDoc root) throws IOException { 
     for (ClassDoc c : root.classes()) { 
      print(c.qualifiedName(), c.commentText()); 
      for (FieldDoc f : c.fields(false)) { 
       print(f.qualifiedName(), f.commentText()); 
      } 
      for (MethodDoc m : c.methods(false)) { 
       print(m.qualifiedName(), m.commentText()); 
       if (m.commentText() != null && m.commentText().length() > 0) { 
        for (ParamTag p : m.paramTags()) 
         print(m.qualifiedName() + "@" + p.parameterName(), p.parameterComment()); 
        for (Tag t : m.tags("return")) { 
         if (t.text() != null && t.text().length() > 0) 
          print(m.qualifiedName() + "@return", t.text()); 
        } 
       } 
      } 
     } 
     return true; 
    } 

    private static void print(String name, String comment) throws IOException { 
     if (comment != null && comment.length() > 0) { 
      new FileWriter(name + ".txt").append(comment).close(); 
     } 
    } 
} 

Và thực maven:

<plugin> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <extensions>true</extensions> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>aggregate</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doclet>ExtractCommentsDoclet</doclet> 
     <docletPath>${project.build.directory}/classes</docletPath> 
     <reportOutputDirectory>${project.build.outputDirectory}/META-INF</reportOutputDirectory> 
     <useStandardDocletOptions>false</useStandardDocletOptions> 
    </configuration> 
</plugin> 

đọc tài liệu từ classpath: META-INF/apidocs

+0

đẹp, làm thế nào để bạn bao gồm các tools.jar từ jdk trong maven? – TecHunter

+0

Heh, bạn muốn đọc javadoc khi đang chạy? - Không vấn đề gì, đội trưởng! Tôi sẽ viết một giải pháp cho bạn! :-) Nhưng tôi nghĩ rằng bạn đã bỏ lỡ một câu hỏi ở phần cuối của câu trả lời của bạn: - Tại sao bạn cần phải làm điều đó? Có thể đóng đinh bằng kính hiển vi nhưng không được thiết kế để làm những việc như vậy) – 4ndrew