使用说明或不太熟悉的请看这个qdox readMe 翻译,本文主要做些零散的记录
API文档说明javadoc API
一、解析文件夹下所有类
import com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaMethod;
import java.io.File;
import java.io.IOException;
public class QdoxExample {
public static void main(String[] args) {
JavaProjectBuilder builder = new JavaProjectBuilder();
try {
// 添加要解析的 Java 文件或目录
builder.addSourceTree(new File("src/main/java"));
// 获取所有解析到的类
for (JavaClass javaClass : builder.getClasses()) {
System.out.println("Class: " + javaClass.getName());
// 获取类中的方法
for (JavaMethod method : javaClass.getMethods()) {
System.out.println(" Method: " + method.getName());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
qdox强大之处在于 ,编译不通过的代码也能分析
@Test
public void StringReader() {
try {
JavaProjectBuilder builder = new JavaProjectBuilder();
builder.addSource(new StringReader("package web_test;\n" +
"\n" +
"/**\n" +
" * @description:\n" +
" * @author: \n" +
" * @Date: 2024/7/5\n" +
" */\n" +
"public class Student {\n" +
"\n" +
" /**\n" +
" * 获取名称\n" +
" * @param people\n" +
" * @return\n" +
" */\n" +
" private String getNameByPeople(People people){\n" +
" return "sss";\n" +
" }\n" +
"\n" +
"}\n"));
// 获取所有解析到的类
for (JavaClass javaClass : builder.getClasses()) {
System.out.println("Class: " + javaClass.getName());
// 获取类中的方法
for (JavaMethod method : javaClass.getMethods()) {
System.out.println(" Method: " + method.getName());
for (JavaParameter parameter : method.getParameters()) {
System.out.println(" parameterName: " + parameter.getName());
System.out.println(" parameterType: " + parameter.getType());
parameter.getType().getFullyQualifiedName();
}
}
}
int i = 0;
} catch (Throwable e) {
log.error("WebTestApplicationTests.contextLoads Exception ",e);
}
}
JavaProjectBuilder 下 ddSourceFolder 和 addSourceTree 区别
addSourceFolder:
向javaprojectbuilder添加一个源文件夹,但不解析任何文件。这是一个惰性解析器。只有在调用JavaClass时,才会通过将包与文件夹结构匹配,并将类名与文件名匹配来搜索它。
addSourceFolder:
,可以处理单个 Java 文件或包含 Java 源文件的文件夹。如果提供的是文件夹,它也会递归地扫描文件夹中的所有 .java 文件。