如何逆向工程没有文档的程序

7 投票
8 回答
12199 浏览
提问于 2025-04-15 14:10

我有一个Python程序的源代码,但里面没有任何说明或注释。我尝试过两次去理解它,但大多数时候我都搞不清楚,因为文件太多了。要想快速而全面地理解这个程序,我应该采取哪些步骤呢?

8 个回答

5

我建议你使用epydoc来生成一些文档,网址是 http://epydoc.sourceforge.net/。当然,如果没有文档字符串,生成的结果可能会很差,但至少能让你对你的应用有一个大致的了解,而且你能更方便地浏览类。

然后,当你学到新东西时,可以尝试自己来写文档,然后再重新生成一次文档。开始做任何事情都不算晚。

希望这对你有帮助。

5
  • 以前我用过'Python 调用图'来理解代码的结构。
  • 使用调试工具,比如pdb,逐步查看代码。
  • 休息一天后再读代码,这样也有帮助。
11

Michael Feathers 的书 "有效地处理遗留代码" 是一个很好的起点,适合想要处理旧代码的人。书中的例子虽然用的是几种不同的编程语言,但里面的技巧和思维方式其实也适用于Python和其他大多数语言。

重点在于,你需要理解这些代码是为了一个目的——修改它或者把它迁移到其他地方。因此,给遗留代码加上测试和记录的工具,像是电池和脚手架一样,是理解和安全、负责任地修改代码的关键步骤。

Feathers 提出了很多建议和技巧,告诉你该把精力放在哪些地方,以及当代码一团糟时(所以叫“遗留”代码)该如何入手——比如没有文档,或者文档误导人(描述的内容和代码实际做的事情可能有很大不同,甚至是微妙的差别),没有测试,或者代码之间的依赖关系复杂到无法测试,必须先重构才能理清。这听起来像是极端情况,但任何在编程行业工作过一段时间的人都知道,这种情况其实比大家想象的要普遍得多;-)

撰写回答