Python 如何对没有文档的程序进行反向工程
我有一个python程序的源代码,它没有任何文档或注释。 我确实试过两次去理解它,但大多数时候我都迷失了方向,因为有很多文件。Python 如何对没有文档的程序进行反向工程,python,open-source,Python,Open Source,我有一个python程序的源代码,它没有任何文档或注释。 我确实试过两次去理解它,但大多数时候我都迷失了方向,因为有很多文件。 要全面、快速地理解该程序,应该采取哪些步骤。我从一个好的python IDE开始。请参阅的答案。 在过去,我习惯于理解源代码结构 使用调试器(例如pdb)通过 密码 试着在一天后再次读取代码 休息,这也有帮助 我建议使用epydoc生成一些文档。当然,如果不存在docstring,结果会很差,但它会为您的应用程序提供至少一个视图,并且您将能够更轻松地在类中导航 然后,当
要全面、快速地理解该程序,应该采取哪些步骤。我从一个好的python IDE开始。请参阅的答案。
- 在过去,我习惯于理解源代码结构
- 使用调试器(例如pdb)通过 密码
- 试着在一天后再次读取代码 休息,这也有帮助
我希望这能有所帮助。我在工作中做了很多这方面的工作。对我有效的可能与对你有效的不同,但我将分享我的经验 我首先尝试识别正在使用的数据结构,并绘制图表来显示它们之间的关系。不一定是像UML这样的形式化的东西,而是一个你能理解的纸上的草图,它允许你看到被程序操作的数据的整体结构。只有当我对所使用的数据结构有了一些了解之后,我才开始尝试理解数据是如何被操纵的 其次,对于一个庞大的软件体,有时您需要首先攻击一些小的部分。你不会马上得到一个全面的理解,但是如果你理解了小部分的细节,并不断地删减,最终所有的部分都会结合在一起 我将这两种方法结合起来,当我感到极度沮丧或无聊时,我会在这两种方法之间切换。建议定期在街区内散步:)我发现这最终会给我带来好的效果 祝你好运 “”是这类努力的极好起点——并不特别依赖于语言(他的例子使用了几种非python语言,但技术和思维方式确实很好地扩展到了python和几乎任何其他语言) 关键的焦点是,您希望出于某种原因理解代码,即修改和/或移植代码。因此,在漫长而艰难的过程中,使用电池、测试脚手架和跟踪/日志记录来检测遗留代码是安全、负责地理解和修改代码的关键途径
Feathers建议了一些启发式方法和技术,用于在代码完全混乱(因此是“遗留”)的情况下将精力集中在何处以及如何开始—没有文档,或者误导性的文档(描述与代码实际做的事有很大不同,可能以微妙的方式),没有测试,一个不可重构的混乱的意大利面条依赖。这似乎是一个极端的情况,但任何在编程方面花了很长时间的人都知道这实际上比任何人想的都要普遍;-) 幸运的是,它是用Python编写的,易于阅读。但是,当然也可以用Python编写复杂的、难以理解的代码 这些步骤是:
就这样。祝你好运。Sparx Systems非常擅长处理源目录和生成类图。它不是免费的,但价格非常合理。(我与这家公司没有任何关系,我只是多年来一直是他们产品的满意用户。)Logilab的pyreverse和Andy Bulka的PyNSource对于UML图的生成也很有帮助。+1我想知道有多少人因为说“去阅读有效地使用遗留代码”而获得了分数这是一个非常普遍的问题。。