我对 Chromium 中的“按 Tab 键搜索站点”功能非常着迷,所以很自然地想看看它是如何在代码中实现的。
对于不熟悉这个的人来说一点背景。在导航到某个站点(例如 wikipedia)并进行搜索后,chromium 会记住查询变量的名称,并让您按 Tab 键并直接从地址栏中搜索该站点。整洁的!
问题是铬的代码库很大,我没有找到处理这个的方法/函数。
当您正在寻找特定功能的实现时,您如何处理大型代码库?缩小范围有什么技巧吗?最好不需要使用调试符号构建软件并遵循程序的流程。
我对 Chromium 中的“按 Tab 键搜索站点”功能非常着迷,所以很自然地想看看它是如何在代码中实现的。
对于不熟悉这个的人来说一点背景。在导航到某个站点(例如 wikipedia)并进行搜索后,chromium 会记住查询变量的名称,并让您按 Tab 键并直接从地址栏中搜索该站点。整洁的!
问题是铬的代码库很大,我没有找到处理这个的方法/函数。
当您正在寻找特定功能的实现时,您如何处理大型代码库?缩小范围有什么技巧吗?最好不需要使用调试符号构建软件并遵循程序的流程。
没有一种适合所有此类问题的方法。但是对于这个我会尝试这些:
如果有任何与该操作关联的唯一消息,请对该字符串的所有源文件进行 grep。这种技术的一个常见缺陷是消息可能是从应用程序中的片段组装而成的,因此使用 grep 查找唯一的短语(甚至是单个单词)通常有助于识别消息的来源。一旦找到文本,然后查找它通常需要更多文本搜索的参考文献。
从易于找到的点跟踪执行,例如命令处理和调度循环。我会寻找一个Tab
关键案例并按照它的导向。
查看源代码目录和文件名以获取提示。软件通常是合理构建的,优秀的工程师以明智的方式分而治之。
测试覆盖率工具是实现此目的的好方法。它们告诉您应用程序的哪一部分由测试执行。
检测应用程序以收集测试覆盖率。执行您关心的功能。记录执行的内容。执行类似但与您想要的功能不同的东西。记录这一点。在覆盖范围内取设定的差异。diff 选择与感兴趣的功能相关的代码,不包括类似功能共有的代码。
询问 Chromium 团队。他们不给出分数或青铜像素,但他们绝对是提出这类问题的权威和正确的人。