【发布时间】:2023-03-25 20:10:01
【问题描述】:
我的项目以低成本、低资源的嵌入式设备为目标。我依赖于一个相对庞大且庞大的 Python 代码库,其中我对其 API 的使用非常具体。
我热衷于通过在 Ned Batchelder 的 coverage 或 figleaf 等覆盖工具中执行我的测试套件,将这个库的代码精简到最低限度,然后在各种模块/文件中编写脚本删除未使用的代码。这不仅有助于理解库的内部结构,还有助于更轻松地编写任何补丁。 Ned 在他的一次在线演讲中实际上提到了使用覆盖工具对复杂代码进行“逆向工程”。
我向 SO 社区提出的问题是,人们是否有以这种方式使用覆盖工具的经验他们不介意分享?如果有什么陷阱? coverage 工具是一个不错的选择吗?还是我最好把时间花在 figleaf 上?
最终的目标是能够自动为库生成一个新的源代码树,基于原始树,但只包括我运行 nosetests /强>。
如果有人开发了一种工具,可以为他们的 Python 应用程序和库执行类似的工作,那么获得一个开始开发的基线将是非常棒的。
希望我的描述对读者有意义......
【问题讨论】:
-
你需要有一套非常全面的测试,否则你可能会删除你的测试没有调用的一个函数,但在一些奇异但真实的情况下是需要的。我对此很难担心,因为很难达到 100% 的测试覆盖率。你有多确定你的测试是全面的?嵌入式系统:您是否在测试“内存不足”?
-
.... Ned 可能引用了测试覆盖率来“理解”,例如,查找与特定功能相关的代码,这很好,但它与查找 所有功能支持代码。
标签: python code-coverage reverse-engineering code-analysis