我有一个开源代码,大约15 MB。我想了解那里使用的主要算法。 我开始分析该代码的每个部分,但我认为这将花费很多时间。有没有办法让过程更容易?我之前没有这样做,所以这是我的第一次经历。
这一个,可能是有人知道的: https://launchpad.net/cuneiform-linux
我有一个开源代码,大约15 MB。我想了解那里使用的主要算法。 我开始分析该代码的每个部分,但我认为这将花费很多时间。有没有办法让过程更容易?我之前没有这样做,所以这是我的第一次经历。
这一个,可能是有人知道的: https://launchpad.net/cuneiform-linux
既然它是C ++代码,你可能会发现 Source Navigator 有用。
使用 Doxygen的。它创建了一个易于浏览的HTML代码库交叉引用。它还可以创建依赖/类图(如果代码是OOP)。
代码不需要特殊格式的注释。虽然它确实有帮助,但Doxygen足够聪明,可以解析代码并自行解决问题。我最喜欢的是能够点击任何函数名,变量,类等,并立即跳转到声明,定义的位置,并显示使用它的所有地方的列表。我过去使用Doxygen来咀嚼一些相当大的代码库(例如PHP源代码),它为我节省了很多时间。
您还可以设置Eclipse CDT并将所有源文件导入到项目中,并获得类似的代码浏览器。虽然,在这种情况下,某些类似函数/类索引的东西是不可用的。
当你去的时候,添加到文档中。幸运的是,有更多的人在做同样的事情,在你们之间,你们将把文件的水平提高到所需要的水平。这就是开源的全部意义所在。
分析代码将显示哪些例程很重要。按呼叫次数查看最高和最低5%。
在您的问题中添加指向开源项目的链接:-)
也许其他人知道或了解其他选择。
我要做的第一件事是弄清楚主要切入点是什么。大多数程序都有一个相当标准的格式:首先,输入检查(确保你有正确的数字和输入类型)。第二,预处理/准备(打开文件,分配缓冲区,初始化数据结构)。第三,他们做他们做的任何事情,主要的处理程序。在那之后,它通常是输出和清理。当然,这些可能是混合的(输入检查可能涉及打开输入文件),可能是可怕的;像一个例程 fileAccessible(char *fileName)
打开文件,剥离标题,实例化解析器并通过读取第一个符号并将其放入扫描仪表来初始化词法分析器。值得庆幸的是,大多数开源项目并没有搞砸,但你必须为任何事情做好准备。