10

私は chromium の「Tab を押してサイトを検索する」機能に魅了されたので、当然、それがコードでどのように実装されているかを知りたいと思いました。

これに慣れていない人のために、少し背景を説明します。ウィキペディアなどのサイトに移動して検索を行った後、クロムはクエリ変数の名前を記憶し、タブを押してアドレスバーから直接サイトを検索できるようにします。きちんとした!

問題は、クロムのコードベースが巨大であり、これを処理するメソッド/関数を見つけることができなかったことです。

特定の機能の実装を探しているときに、大規模なコードベースにどのようにアプローチしますか? 絞り込むコツは?できれば、デバッグ シンボルを使用してソフトウェアをビルドし、プログラムのフローに従う必要はありません。

4

3 に答える 3

10

この種の問題に対する万能のアプローチはありません。しかし、これについては、次のことを試します。

  • 操作に関連する固有のメッセージがある場合は、その文字列のすべてのソース ファイルを grep します。この手法の一般的な落とし穴は、メッセージがアプリケーション内の断片から組み立てられる可能性があることです。そのため、メッセージのソースを特定するには、一意の短いフレーズ (または 1 つの単語) を grep することが役立つことがよくあります。テキストが見つかったら、それが参照するものを見つけるには、多くの場合、さらにテキストを検索する必要があります。

  • コマンド処理やディスパッチ ループなど、見つけやすいポイントから実行をトレースします。重要なケースを探して、Tabそれが導く場所をたどります。

  • ヒントについては、ソース コード ディレクトリとファイル名を参照してください。ソフトウェアは多くの場合、合理的に構築されており、優れたエンジニアが賢明な方法で分割して征服しています。

于 2010-12-14T02:12:32.987 に答える
6

テスト カバレッジ ツールは、これを行うのに適した方法です。これらは、アプリケーションのどの部分がテストによって実行されるかを示します。

アプリケーションを計測して、テスト カバレッジを収集します。気になる機能を実行します。実行したことを記録します。似たようなものを実行しますが、必要な機能と同じではありません。これを記録します。カバレッジのセット差を取ります。差分では、対象の機能に関連するコードが選択されますが、同様の機能に共通するコードは除外されます。

于 2010-12-14T02:15:15.287 に答える
0

Chromium チームに問い合わせてください。彼らはポイントやブロンズ ピクセルを与えませんが、彼らは間違いなくこの種の質問をする権威であり、適切な人物です。

于 2010-12-14T02:57:15.547 に答える