# dpd **Repository Path**: LFpriest/dpd ## Basic Information - **Project Name**: dpd - **Description**: Java源码解析 可能使用的库 Qdox:[paul-hammant/qdox](https://github.com/paul-hammant/qdox) JavaParser:[javaparser/javaparser](https://github.com/javaparser/javaparser) SPOON:[INRIA/spoon](https://github.com/INR) - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-06-29 - **Last Updated**: 2023-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DPD 模块说明: * **class_relation_parse**【已完成】:使用`qdox`提取严格的类间关系,参见 [类间关系.md](https://gitee.com/wangsanxing/dpd/blob/master/class_relation_parse/%E7%B1%BB%E9%97%B4%E5%85%B3%E7%B3%BB.md) * **micro_structure** 【进行中】:基于 **spoon_neo4j_parser** 解析微结构 * **qdox_parser**【放弃】:基于`qdox`的源码解析,因`qdox`库的bug太多放弃 * **rule-based**【已完成】:基于 **class_relation_parse** 粗略提取设计模式,用到了mysql数据库 * **spoon_neo4j_parser** 【已完成】 :star: :基于`spoon`的源码解析,源码 → 实体 → 图数据库节点 > **fix**:依赖包找不到报空指针,将其包装为异常 > > **refactor**:不生成对分析结构无贡献的实体,对于jdk,只创建用到的某类/方法/字段实体 > > > > 暂不支持强注解项目(Lombok、Spring) **效果图**: ![效果图](效果图.png) > Neo4j 和 Mysql 不同,它的一个安装文件夹就是一个实例 **运行说明**: * 安装 neo4j社区版/Desktop版,仅用它的`Neo4j Browser`功能 * `src/main/resources/neo4j.properties` 配置数据库目录(空目录)、bolt 套接字 * 在`src/test/ParserTest`配置项目信息并运行 * 解析完成后打开`Neo4j Browser`输入bolt 套接字+账户进行连接并查询 **报错原因** * 依赖未找到:输入的项目不完整,需手动添加依赖或改用 MavenLauncher(推荐) * 方法未找到:可能是强注解项目(Spring、Lombok) > SPOON-Decompile 模块提供了 JarLauncher,可以反编译后再分析 > > 但是实测反编译效果不好