有没有一个工具可以删除Python中没有使用的函数?

Bit*_*ise 11 python

我有以下情况:我正在开发几个使用我编写的库模块的项目.库模块包含几个类和函数.在每个项目中,使用库的一些代码子集.

但是,当我为其他用户发布项目时,我只想放弃该项目使用的代码而不是整个模块.这意味着,对于给定的项目,我希望从库代码中删除未使用的库函数(即创建一个新的简化库).有没有可以自动执行此操作的工具?

编辑

一些澄清/答复:

  1. 关于"你不应该这样做"的回复:最重要的是,在实践中,在我发布项目之前,我手动浏览库模块并删除未使用的代码.由于我们都是程序员,我们知道当您可以轻松地向计算机解释如何执行此操作时,没有理由手动执行某些操作.所以实际上,编写这样的程序是可能的,甚至不应该太难(是的,它可能不是超级一般).我的问题是,在我开始考虑自己实施之前,是否有人知道这样的工具是否存在.此外,欢迎任何关于实施这一点的想法.
  2. 我不想简单地隐藏我的所有代码.如果我想这样做,我可能不会使用Python.实际上,我想发布源代码,但只发布与相关项目相关的代码.
  3. 关于"你受法律保护"评论:在我的具体案例中,法律/许可证保护对我没有帮助.此外,这里的问题比一些窃取代码更普遍.例如,它可能是为了清楚起见:如果有人需要使用/开发代码,您不希望包含许多不相关的函数.

zmo*_*zmo 3

我给你的第一个建议是用更强的模块化设计你的代码,这样你就可以拥有你想要保留在尽可能多的Python模块/鸡蛋中的所有功能,因为你必须使其灵活,只拥有你需要的每个功能您的项目。我认为这是让代码易于管理和可读的唯一方法。

也就是说,如果您真的想按照您在问题中描述的方式进行操作,据我所知,没有任何工具可以完全按照您所说的操作,因为这是一种不常见的使用模式。

但我认为编写一个使用绳索来执行此操作的工具并不困难。它进行静态和动态代码分析(因此您可以找到正在使用哪些导入的对象,从而猜测导入的模块中未使用哪些内容),并且还提供了许多重构工具来移动或删除代码。

无论如何,我认为要真正制作一个工具来准确找到当前代码中使用的所有代码,您需要对代码进行完整的单元测试覆盖,否则您应该真正有条理地导入模块的代码(仅使用from foo import bar并避免模块之间的链接导入)。