问题 如何在没有(或没有足够)文档的情况下分析开源代码? [关闭]


我有一个开源代码,大约15 MB。我想了解那里使用的主要算法。 我开始分析该代码的每个部分,但我认为这将花费很多时间。有没有办法让过程更容易?我之前没有这样做,所以这是我的第一次经历。

这一个,可能是有人知道的: https://launchpad.net/cuneiform-linux


8772
2018-01-26 13:19


起源

什么语言?有一些语言的文档生成工具。 - S.Lott
它是用С++编写的。但是他们使用了一些特别的评论,不是吗? - maximus
我的意思是源代码必须有一些特殊的注释 - maximus
不 - Doxygen无需特别评论即可使用。


答案:


既然它是C ++代码,你可能会发现 Source Navigator 有用。


2
2018-01-26 14:01



谢谢,我现在正在尝试。 - maximus
+1 SourceNav将帮助您轻松导航代码,并使源代码的不同部分之间的关​​系更加明显! - Remo.D


使用 Doxygen的。它创建了一个易于浏览的HTML代码库交叉引用。它还可以创建依赖/类图(如果代码是OOP)。

代码不需要特殊格式的注释。虽然它确实有帮助,但Doxygen足够聪明,可以解析代码并自行解决问题。我最喜欢的是能够点击任何函数名,变量,类等,并立即跳转到声明,定义的位置,并显示使用它的所有地方的列表。我过去使用Doxygen来咀嚼一些相当大的代码库(例如PHP源代码),它为我节省了很多时间。

您还可以设置Eclipse CDT并将所有源文件导入到项目中,并获得类似的代码浏览器。虽然,在这种情况下,某些类似函数/类索引的东西是不可用的。


7
2018-01-26 13:23





当你去的时候,添加到文档中。幸运的是,有更多的人在做同样的事情,在你们之间,你们将把文件的水平提高到所需要的水平。这就是开源的全部意义所在。


2
2018-01-26 13:23



那很棒!好主意,谢谢! - maximus
我加入了这个项目并向那些人提出了一些文档。希望他们回应! - maximus
祝你好运,享受... - David M


分析代码将显示哪些例程很重要。按呼叫次数查看最高和最低5%。


1
2018-01-26 13:22



是的,就像看到main()被调用一次和std :: string构造函数一百万次将帮助任何人;) - Milan Babuškov
这是所谓的 hash_password() 和 draw_form() 这很重要。 - Ignacio Vazquez-Abrams
我建议按执行时间对它们进行排名。丢弃任何明显的时间接收器(构造函数,网络I / O),其余的应该是最重要的例程。不幸的是,这与设计良好的OOP代码不同,就像在结构化设计时代那样...... - TMN


在您的问题中添加指向开源项目的链接:-)

也许其他人知道或了解其他选择。


0
2018-01-26 13:26



好的!)我添加了它) - maximus


我要做的第一件事是弄清楚主要切入点是什么。大多数程序都有一个相当标准的格式:首先,输入检查(确保你有正确的数字和输入类型)。第二,预处理/准备(打开文件,分配缓冲区,初始化数据结构)。第三,他们做他们做的任何事情,主要的处理程序。在那之后,它通常是输出和清理。当然,这些可能是混合的(输入检查可能涉及打开输入文件),可能是可怕的;像一个例程 fileAccessible(char *fileName) 打开文件,剥离标题,实例化解析器并通过读取第一个符号并将其放入扫描仪表来初始化词法分析器。值得庆幸的是,大多数开源项目并没有搞砸,但你必须为任何事情做好准备。


0
2018-01-26 13:48