Skip to content

fix: 增强循环依赖检测和诊断功能#36

Merged
wlvh merged 1 commit into
mainfrom
bug-fix-0720
Jul 20, 2025
Merged

fix: 增强循环依赖检测和诊断功能#36
wlvh merged 1 commit into
mainfrom
bug-fix-0720

Conversation

@wlvh
Copy link
Copy Markdown
Owner

@wlvh wlvh commented Jul 20, 2025

Summary

  • 修复了用户报告的循环依赖误报问题(报告中包含 DTHelper、Sota 等类)
  • 增强了循环依赖检测的准确性和诊断信息
  • 避免了类方法依赖其父类产生的假循环依赖

主要修改

1. 增强循环依赖检测算法

  • 使用 Tarjan 算法准确找出强连通分量(真正的循环)
  • 提供详细的依赖关系信息帮助调试
  • 显示每个符号的所有依赖、循环内依赖和已处理依赖

2. 修复自引用问题

  • 在构建依赖图时忽略符号对自身的依赖(dep \!= symbol
  • 避免类引用自己导致的误报

3. 修复类方法处理逻辑

  • 类的方法不再作为独立符号输出
  • 类方法会随类定义一起输出,避免产生假的循环依赖

测试验证

用户报告的错误:

Error: Circular dependency detected among symbols: layers_yy.attention_base.AttentionLayer, data_yy.data_utils.DataNormalizer_SWSJ, ...

修复后成功合并:

Merged code written to: /Users/lyuhongwang/Documents/yy_model_py/scripts/sota_advanced_merged.py

Test plan

  • 验证用户报告的具体案例已修复
  • 添加循环依赖检测的单元测试
  • 运行完整测试套件确保没有回归

🤖 Generated with Claude Code

修复了用户报告的循环依赖误报问题:

1. 增强循环依赖检测的诊断信息
   - 使用 Tarjan 算法准确找出强连通分量(真正的循环)
   - 提供详细的依赖关系信息帮助调试
   - 显示每个符号的所有依赖、循环内依赖和已处理依赖

2. 修复自引用导致的假循环依赖
   - 在构建依赖图时忽略符号对自身的依赖
   - 避免类引用自己导致的误报

3. 修复类方法处理逻辑
   - 类的方法不再作为独立符号输出
   - 避免方法依赖其父类产生的假循环依赖
   - 类方法会随类定义一起输出

测试用例:添加了专门的循环依赖检测测试

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@wlvh wlvh merged commit 89c0003 into main Jul 20, 2025
0 of 5 checks passed
@wlvh wlvh deleted the bug-fix-0720 branch July 20, 2025 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant