经过近两年的努力,coverage.py 现已支持通过 sys.monitoring 更高效地测量分支覆盖率。用户需从 GitHub 获取 Python 主分支的构建版本并安装 coverage,设置环境变量后运行 coverage 将更快。此功能基于 Python 3.12 的新 sys.monitoring,解决了传统方法的低效问题。
本文讨论了在coverage.py中利用Python新功能的工作。Mark Shannon改进了sys.monitoring API,使低开销的分支覆盖成为可能。作者重构了测试,专注于分支而非完整代码路径,简化了AST解析器,减少了约150行代码。新的sys.monitoring事件使获取分支信息更加直接,避免了复杂实现。作者还提到了一些待处理的bug报告,并邀请感兴趣的人参与。
本文讨论了将coverage.py适配到新的sys.monitoring功能的挑战,特别是在实现高效分支覆盖方面的困难。作者认为当前解决方案复杂且不理想,并提到Mark Shannon正在为sys.monitoring添加新的分支事件。建议改进sys.monitoring API,以简化coverage.py的使用,强调Python的开源特性允许对基础设施进行扩展。
完成下面两步后,将自动完成登录并继续当前操作。