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, 依赖关系分析, 依赖图, 图论, 坏地址索引, 安全专业人员, 开发工具, 循环依赖检测, 循环引用, 游戏开发, 脚本解析, 逆向工具, 错误基检测, 静态代码分析, 预防错误