如何在大型代码库中找到特定的功能?

han*_*der 10 c++ search project-management google-chrome chromium

我被铬中的"按Tab键搜索站点"功能所吸引,所以我很自然地想知道它是如何在代码中实现的.

任何不熟悉此事的人都有一点背景知识.在导航到某个站点(比如维基百科)并进行搜索之后,chrome会记住查询变量的名称,并允许您按Tab键并直接从地址栏搜索站点.整齐!

问题是铬的代码库是巨大的,我没有找到处理这个问题的方法/函数.

当您在寻找特定功能的实现时,如何处理大型代码库?缩小范围的任何技巧?优选地,它不应该要求用调试符号构建软件并遵循程序流程.

wal*_*lyk 10

这种问题没有一种适合所有方法.但对于这个,我会尝试这些:

  • 如果存在与该操作关联的任何唯一消息,请grep该字符串的所有源文件.这种技术的一个常见缺陷是消息可能是从应用程序中的各个部分组合而成的,因此grep寻找一个独特的短语 - 甚至是一个单词 - 通常有助于识别消息的来源.找到文本后,找到引用文本通常需要更多的文本搜索.

  • 从易于查找的点跟踪执行,如命令处理和调度循环.我会寻找一个Tab关键案例,并按照它所处的位置.

  • 查看提示的源代码目录和文件名.软件通常是合理构建的,优秀的工程师以合理的方式划分和征服.


Ira*_*ter 6

测试覆盖率工具是一种很好的方法.它们告诉您测试应用程序的哪些部分.

检查应用程序以收集测试覆盖率.执行您关心的功能.记录执行的内容.执行类似的功能,但与您想要的功能不同.记录下来.取决于覆盖范围的设定差异.diff选择涉及感兴趣的功能的代码,不包括类似功能所共有的代码.