之前分享过一篇使用 AI 可视化 Java 项目的文章,同步在 AI 破局星球、知乎、掘金等地方都分享了。
原文在这里AI 编程:可视化 Java 项目
有很多人感兴趣,我打算写一个系列文章拆解这个项目,大家多多点赞支持~
今天分享的是第一篇:如何使用 Spoon + JavaParser 工具解析一个本地的 Java 项目。
解析这一步骤是整个项目的基础,是为了获得整个 Java 项目的元数据。
这个元数据包含什么呢?1)整个项目的所有的类信息;2)整个项目的所有方法信息
方法信息
| 序号 | 字段名称 | 字段描述 |
|---|---|---|
| 1 | method_id | 方法唯一id标识 |
| 2 | project_name | |
| 3 | method_name | 方法名 |
| 4 | class_id | 方法所属类名 |
| 5 | param_type | 参数类型 |
| 6 | response_type | 返回类型 |
| 7 | begin_line | 方法内容开始行 |
| 8 | end_line | 方法内容结束行 |
| 9 | branch | 分支 |
| 10 | method_desc | 方法描述 |
| 11 | chat_desc | GPT 描述 |
| 12 | invoke_count | 被调用数量 |
| 13 | mermaid_flow_graph | 流程图数据 |
| 14 | flow_graph_ignored | 是否忽略流程图 |
| 15 | annotation_info | 注解信息 |
| 16 | annotation_type | 注解类型 |
| 17 | access_modifier | 修饰符 |
类信息
| 序号 | 字段名称 | 字段描述 |
|---|---|---|
| 1 | class_id | 类唯一标识 |
| 2 | class_name | 类名 |
| 3 | project_name | 项目唯一标识 |
| 4 | package_name | 包名 |
| 5 | branch | 分支 |
| 6 | class_type | 类的类型 |
| 7 | chat_desc | GPT 类描述 |
| 8 | class_desc | 类注释 |
| 9 | annotation_info | 类注解 |
| 10 | method_annotation_info | 方法注解信息 |
| 11 | annotation_type | 注解类型 |
怎么拿到整个项目的类信息和方法信息呢?
首先我们需要一个类解析器、一个方法解析器。使用 Java 的反射,我们就能拿到具体类和方法的详细信息。
类解析器代码:
public void execute(List<CtType<?>> elements) {
classStructs = Lists.newArrayList();
for (CtType<?> type : elements) {
try {
// 匿名内部类和泛型会跳过解析
if (type.isAnonymous()) {
continue;
}
if (Objects.isNull(type.getPackage())) {
continue;
}
// 获取类的简单类名
String simpleClassName = type.getSimpleName();
// GPT 接口获取解释
String chatDesc = "";
// 获取类所属包
String packageName = type.getPackage().getQualifiedName();
// 获取类注释信息
String classComment = type.getDocComment();
// 判断接口还是类
ClassType classType = getClassType(type);
// 获取类注解信息
List<AnnotationInfo> annotationInfos = Lists.newArrayList();
List<CtAnnotation<?>> annotations = type

最低0.47元/天 解锁文章
1795






