{"id":13843073,"url":"https://github.com/Adrninistrator/java-all-call-graph","last_synced_at":"2025-07-11T17:33:22.452Z","repository":{"id":38369464,"uuid":"382859835","full_name":"Adrninistrator/java-all-call-graph","owner":"Adrninistrator","description":"Generate all call graph for Java Code.","archived":false,"fork":false,"pushed_at":"2024-08-27T11:24:10.000Z","size":2871,"stargazers_count":413,"open_issues_count":47,"forks_count":109,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-08-27T14:09:51.999Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Adrninistrator.png","metadata":{"files":{"readme":"README.md","changelog":"change_log.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-04T13:33:19.000Z","updated_at":"2024-08-27T11:24:14.000Z","dependencies_parsed_at":"2024-08-25T12:38:41.103Z","dependency_job_id":null,"html_url":"https://github.com/Adrninistrator/java-all-call-graph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adrninistrator%2Fjava-all-call-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adrninistrator%2Fjava-all-call-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adrninistrator%2Fjava-all-call-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adrninistrator%2Fjava-all-call-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Adrninistrator","download_url":"https://codeload.github.com/Adrninistrator/java-all-call-graph/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225745424,"owners_count":17517639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:01:54.508Z","updated_at":"2025-07-11T17:33:22.440Z","avatar_url":"https://github.com/Adrninistrator.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"[![Maven Central](https://img.shields.io/maven-central/v/com.github.adrninistrator/java-all-call-graph.svg)](https://search.maven.org/artifact/com.github.adrninistrator/java-all-call-graph/)\r\n\r\n[![Apache License 2.0](https://img.shields.io/badge/license-Apache%20License%202.0-green.svg)](https://github.com/Adrninistrator/java-all-call-graph/blob/master/LICENSE)\r\n\r\n# 1. 使用案例\r\n\r\n[使用案例](docs/use_cases.md)\r\n\r\n# 2. 加群讨论\r\n\r\n[加群讨论](docs/group_discussions.md)\r\n\r\n# 3. DeepWiki 链接\r\n\r\n[https://deepwiki.com/Adrninistrator/java-all-call-graph](https://deepwiki.com/Adrninistrator/java-all-call-graph)\r\n\r\n通过大模型分析项目代码，可向大模型提出关于项目的问题，包括使用方法等\r\n\r\n# 4. 前言\r\n\r\n在很多场景下，如果能够生成 Java 代码中方法之间的调用链，是很有帮助的，例如分析代码执行流程、确认被修改代码的影响范围、代码审计/漏洞分析等。\r\n\r\nIDEA 提供了显示调用指定 Java 方法向上的完整调用链的功能，可以通过“Navigate -\u003e Call Hierarchy”菜单（快捷键：Ctrl+Alt+H) 使用；Eclipse 也提供了相同的功能。但以上都需要针对每个方法进行手工处理，不支持对方法进行过滤或者其他扩展功能。\r\n\r\n以下实现了一个工具，能够通过静态分析的方式批量生成指定 Java 方法向下的完整调用链，对于关注的 Java 方法，能够生成其向下调用的方法信息，及被调用方法再向下调用的方法，直到最下层被调用的方法。\r\n\r\n也可以生成调用指定 Java 类方法向上的完整调用链，对于关注的 Java 类的方法，能够生成调用对应方法的方法信息，及调用上述方法的信息，直到最上层未被其他方法调用的方法（通常是对外提供的服务，或定时任务等）。\r\n\r\n本工具生成的 Java 方法完整调用链中，支持显示相关的包名、类名、方法名、方法参数、调用者源代码行号、方法注解、循环调用，入口方法。\r\n\r\n本工具支持生成某个方法到起始方法之间的调用链，也支持根据关键字查找关注的方法，生成其到起即方法之间的调用链。\r\n\r\n`本项目提供了扩展功能，可用于为 Java 代码自动生成 UML 时序图`，可参考 [https://github.com/Adrninistrator/gen-java-code-uml-sequence-diagram](https://github.com/Adrninistrator/gen-java-code-uml-sequence-diagram)，根据关键字查找关注的方法时，可使用自定义 Java 代码判断是否满足关键字，在该文档中会有说明。\r\n\r\n本项目用于获取 Java 方法调用关系的功能在 [https://github.com/Adrninistrator/java-callgraph2](https://github.com/Adrninistrator/java-callgraph2) 中实现\r\n\r\n在 github 查看文档时，图片可能无法显示，影响使用说明文档的查看，可查看 gitee 中的当前项目 [https://gitee.com/Adrninistrator/java-all-call-graph](https://gitee.com/Adrninistrator/java-all-call-graph)。\r\n\r\n# 5. 输出结果示例\r\n\r\n[输出结果示例](docs/output_example.md)\r\n\r\n# 6. 快速开始\r\n\r\n[快速开始](docs/quick_start.md)\r\n\r\n# 7. 更新说明\r\n\r\n[更新说明](docs/change_log.md)\r\n\r\n# 8. 配置参数示例\r\n\r\n[配置参数示例](docs/config_example.md)\r\n\r\n# 9. 使用说明\r\n\r\n[使用说明](docs/how_to_use.md)\r\n\r\n# 10. 通过源码执行\r\n\r\n[通过源码执行](docs/run_by_code.md)\r\n\r\n# 11. 数据库表说明\r\n\r\n[数据库表说明](docs/db_tables.md)\r\n\r\n# 12. 使用 Neo4j 图数据库\r\n\r\n[使用 Neo4j 图数据库](docs/use_neo4j.md)\r\n\r\n# 13. 通过代码执行的其他示例\r\n\r\n[通过代码执行的其他示例](docs/run_by_code_example.md)\r\n\r\n# 14. 其他功能\r\n\r\n[其他功能](docs/other_functions.md)\r\n\r\n# 15. 扩展功能\r\n\r\n[扩展功能](docs/extensions.md)\r\n\r\n# 16. 原理说明\r\n\r\n[原理说明](docs/how_to_implementation.md)\r\n\r\n# 17. 其他说明\r\n\r\n[其他说明](docs/other_instructions.md)\r\n\r\n# 18. 常见问题\r\n\r\n[常见问题](docs/question_answer.md)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdrninistrator%2Fjava-all-call-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdrninistrator%2Fjava-all-call-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdrninistrator%2Fjava-all-call-graph/lists"}