如何快速的定位程序中某个功能对应的代码?


我们经常会接手别人开发完的一些代码,而且通常有这样一些任务要做:
1.解决某个模块的指定bug。
2.增加或者修改某个模块的feature。
3.添加新的功能模块。

因此我们经常需要找到一个功能模块的相应源文件,甚至一个源文件的某个函数,更甚至于函数中的某一行,某个变量,某个参数。针对有界面的情况,还需要考虑gui配置的xml文件,还有全局的配置文件。等等。。。。
在没有文档和其他熟悉这个程序的人指导的情况下,如何快速的定位呢?当然前提是,对于至少有点经验的程序员来讲。

比如,在修改某个界面的情况下,我需要修改一个文本的字体和大小,
那么快速的方法是:
1.找到字符串所在的文件,grep -anr 'stringtoFind' *
2.通过上一步获取的字符串引用名称再去查找哪些控件引用了这个字符串, grep -anr ' #stringname #' *
3.找到控件所在地,然后修改控件属性。

再比如,如果涉及到源码的情况:
1.通过源文件的名字猜测,得到大致的定位
2.分析大致函数调用关系
3.通过排除法,比如,注释某个函数代码

实际项目中,大家都用什么方式来快速定位,能分享下经验吗??只以靠静态分析代码,我觉得可能是效率比较低的方法,因此有更高效的方法吗??

Android java php JavaScript C++

幸福如履薄冰 11 years, 8 months ago

我觉得看别人代码应该先要找到入口函数..一步一步去读懂他的思路..然后找到主要模块后可以用namespace命名一下..方便自己记忆...如果做移植项目则需要把所有逻辑剔出来..善用断点功能就可以很容易读懂别人的代码..先把BUG剔出跑起来是关键~

大神·凉子 answered 11 years, 8 months ago

Your Answer