我有以下情况:我正在开发几个使用我编写的库模块的项目。库模块包含多个类和函数。在每个项目中,都会使用库代码的某些子集。
但是,当我为其他用户发布项目时,我只想泄露该项目使用的代码而不是整个模块。这意味着对于给定的项目,我希望从库代码中删除未使用的库函数(即创建一个新的精简库)。有没有什么工具可以自动执行此操作?
EDIT
一些澄清/答复:
- 关于“一般情况下您不应该这样做”的答复:最重要的是,在实践中,在发布项目之前,我会手动检查库模块并删除未使用的代码。由于我们都是程序员,我们知道,当您可以轻松地向计算机解释如何执行某些操作时,就没有理由手动执行某些操作。所以实际上,编写这样的程序是可能的,甚至应该不会太困难(是的,它可能不是超级通用)。我的问题是,在我开始考虑自己实现它之前,是否有人知道这样的工具是否存在。此外,欢迎任何有关实施此操作的想法。
- 我不想简单地隐藏我的所有代码。如果我想这样做,我可能不会使用 Python。事实上,我想发布源代码,但仅限于与相关项目相关的代码。
- 关于“你受到法律保护”的评论:在我的具体情况下,法律/许可保护对我没有帮助。而且,这里的问题比一些窃取代码的问题更普遍。例如,可能是为了清楚起见:如果有人需要使用/开发代码,您不希望包含数十个不相关的函数。
我给你的第一个建议是用更强的模块化设计你的代码,这样你就可以拥有你想要保留在尽可能多的Python模块/鸡蛋中的所有功能,因为你必须使其灵活,只拥有你需要的每个功能您的项目。我认为这是让代码易于管理和可读的唯一方法。
也就是说,如果您真的想按照您在问题中描述的方式进行操作,据我所知,没有任何工具可以完全按照您所说的操作,因为这是一种不常见的使用模式。
但我认为编写一个使用它的工具并不困难rope http://rope.sourceforge.net/。它进行静态和动态代码分析(因此您可以找到正在使用哪些导入的对象,从而猜测导入的模块中未使用哪些内容),并且还提供了许多重构工具来移动或删除代码。
不管怎样,我认为要真正制作一个工具来准确地找到当前代码中使用的所有代码,您需要对代码进行完整的单元测试覆盖,否则您应该真正有条理地导入模块的代码(仅使用from foo import bar
并避免模块之间的链接导入)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)