程序员可以快速分析未知代码吗?

时间:2009-09-28 10:18:23

标签: c++ projects-and-solutions

我得到了一个与ANCIENT C ++项目相关的任务,该项目没有任何文档,注释,所有代码/变量都是用外语编写的。我是否有机会在1个工作日内分析此代码并制作设计/ UML以创建新功能?我已经坐了3个小时了,我感到非常沮丧......也许有人也有同样的问题?有什么建议吗?

BR,

8 个答案:

答案 0 :(得分:7)

我怀疑最大的问题可能是它是外语。您可以使用各种静态代码分析工具来尝试和理解正在发生的事情,但如果所有内容都以不熟悉的语言呈现,那么这仍然没用。你的第一步(我相信)就是找一个能说这种语言的人,让他们在你去的时候翻译......

答案 1 :(得分:6)

1)使用Doxygen,您可以配置doxygen以从未记录的源文件中提取代码结构。

2)使用source Insight,Source Insight是一个高级代码编辑器和浏览器,内置C / C ++,C#和Java程序分析

答案 2 :(得分:4)

简短回答,不 - 你可能在一天内没有机会理解代码。阅读/维护代码是最困难的事情之一,尤其是在缺少文档的情况下。代码使用外语(!)这一事实使其变得更加困难。

听起来你的时间预算非常有限(不切实际),但如果您正在使用遗留系统,Working With Legacy Software是一本好书。如果您计划不断向旧系统添加新功能,则您有责任让管理层了解操作范围。或者至少尝试一下。

答案 3 :(得分:3)

在这个时间限制(1天)下,根据项目的大小,它可能是也可能不可行 - 如果它的几百行代码那么肯定。如果它是一个包含数万个代码行的严肃项目,那么很可能没有。

你需要知道的第一件事是这个程序应该做什么。如果您不知道它的作用以及它是如何做到的,那么分析代码将为您提供答案,但这将是一项漫长而令人沮丧的任务。因此,我的第一个建议是让自己熟悉软件的外部工作原理 - 它应该做什么,以及它应该如何做。如果你把它作为你工作的一部分那么你应该能够让某人指引你使用该程序 - 即使它的UI是外语(我希望它不会,即使代码是写的)由外语发言人表示。)

一旦你知道软件试图做什么,那么用你自己的语言重写所有评论以便你理解它应该是相当直接的(即使是冗长而艰巨的)。我建议采用自下而上的方法:它更容易理解程序所做的小事和琐碎事情,然后理解顶级逻辑 - 以及许多琐碎的事情,以构成软件的逻辑。 / p>

只有在您理解了 - 在很大程度上 - 无论如何 - 程序的内部工作原理,您可以编写其功能规范并处理功能。

答案 4 :(得分:3)

Windows上的非自由方式: 您可以使用CppDepend。此应用程序能够解析您的可视项目或源文件。它为您提供了许多信息,如依赖树。您可以尝试试用(也许它足以满足您的需求)。

免费方式多平台: 您可以使用doxygen和特殊配置(从未记录的代码中提取代码结构)并分析结果。

答案 5 :(得分:1)

我很满意这种任务称为Understand(可用15天的eval许可证)的工具。但是,我同意Guss的说法,你需要的时间在很大程度上取决于代码的大小,而且有一天可能只适用于一个小程序。

答案 6 :(得分:0)

cscope&当我自己编写代码时,必须使用ctags,在查看其他代码时更是如此。

答案 7 :(得分:0)