tiennm99/circular-dependency-checker

GitHub: tiennm99/circular-dependency-checker

静态分析 Godot 项目中 GDScript 脚本的预加载依赖关系,提前检测并报告导致「bad address index」运行时错误的循环依赖。

Stars: 0 | Forks: 0

# circular-dependency-checker 检测导致“bad address index”错误的 Godot 项目中的循环依赖。 ## 快速开始 ``` python circular_dependency_checker.py ``` ## 为什么会有这个工具 在 GDScript 中,脚本顶部的 `preload()` 调用会在解析时处理。如果脚本 A 预加载了脚本 B,而 B 又预加载了 A(直接或间接地),Godot 在运行时会抛出一个晦涩的 **“bad address index”** 错误——而不是一个清晰的循环导入提示。此工具会遍历所有 `.gd` 文件,根据 `class_name`、`extends` 和类型注解构建有向依赖图,然后在你于引擎中遇到该错误之前报告任何循环。 ## 示例输出 ``` Checking /path/to/my-godot-project... Cycle detected: PlayerState -> StateMachine -> PlayerState Cycle detected: Enemy -> EnemyAI -> BaseAI -> Enemy 2 cycle(s) found. Fix preload order or use load() with lazy initialization. ``` 如果没有发现循环: ``` No circular dependencies detected. ``` ## 许可证 Apache-2.0 — 请参阅 [LICENSE](LICENSE)。
标签:bad address index, GDScript, Godot, SOC Prime, 依赖关系分析, 依赖图, 图论, 坏地址索引, 安全专业人员, 开发工具, 循环依赖检测, 循环引用, 游戏开发, 脚本解析, 逆向工具, 错误基检测, 静态代码分析, 预防错误