usar - ¿Cómo leer los comentarios de Javadoc por reflexión?
javadoc wiki (4)
Clase de Doclet :
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();
}
}
}
Y la ejecución de 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>
Leer documentos de classpath: META-INF / apidocs
Necesito saber cómo leer comentarios de Javadoc en tiempo de ejecución (¿probablemente por reflexión?)
Digamos que tengo la siguiente función:
/**
* function that do some thing
*/
public void myFunc()
{
//...
}
En tiempo de ejecución, puedo obtener mucha información sobre esta función por reflexión ... pero no puedo leer los comentarios. Entonces la pregunta es, ¿Cómo leer estos comentarios de javadoc en tiempo de ejecución?
Considere usar anotaciones en lugar de Javadoc y escribir un procesador de anotación.
No puede hacer eso, porque javadoc no está compilado en las clases finales.
No puedes. Se eliminan del código compilado.