2011-09-09 5 views
21

クロムのソースをチェックアウトしたばかりですが、このモンスターをどうやって移動するのかが必然です。クロムのソースコードを探す方法

興味のある動作や機能を実装するコードの部分を検索するにはどうすればよいですか?

URLをアドレスバーに入力した後に何が起こるかを確認したいとします。そのコードを見つけるにはどうすればよいですか?

または、HTMLを解析しているときに特定のタグに達したときに何が起こるかを確認したいと思います。

私には、膨大な量のソースコードがあり、その周りをナビゲートするスキルはありません。どのように私はそのスキルを学ぶのですか?

+5

出発点として、あなたが見ているもののより良い概要を示すhttp://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-codeを読んでください。その怪しいsrc /ディレクトリにあります。 (私は本当にこれが単なるヒントであるので、これは良い_answer_と思っていませんでした) – maligree

+3

[新しいコードベースについてのあなたのやり方をどうやって見つけますか?](http://stackoverflow.com/質問/ 70124/how-do-you-find-your-way-around-a-new-codebase) – Justin

+1

grepはあなたの友人です。メインとトレースを見つける。大きなコードベースをナビゲートすることは自明ではありません。 – Chris

答えて

11

...あなたの友達です。

これはChromeの要約版です。具体的には、ソースツリーに含まれているファイル、またはChromiumレポのファイルに含まれるファイルのいずれかを使用しています。 Chromiumのコードベースは膨大な量であり、そのほとんどは実際にブラウザには含まれていません。サードパーティのリポジトリからコードが取り出され、ビルドプロセスで煮詰められたり、Chromiumの実装がツリーのどこかに配置されたりすると、たくさんのサイドプロジェクトがあります(興味深いことに、幅広いブラウザの実装と、それがどのように適合するかを具体的に評価するという目標を達成することができなくなります。

CEFは素晴らしいものです.CEFは、すでにすべてのものを一緒に引っ張ってプロジェクトを構築しています。これは非常に具体的にはブラウザのビューでスコープされています。どの部分が主にWebkitから派生したものなのかを簡単に確認できます.Googleの実装でクロスオーバがどこに来るのかが分かり、V8がどのように混乱しているのか簡単に見ることができます。

私たちはまだ全体的に膨大な量のコードを話しているので、私は「簡単に」相対的に言います。 CEFは要求の中心に叩かれるでしょうが、そのものはまだ木の残りの部分から大量のさまざまなものを引き出しています。コンパイルには、12ギガのRAMと8コアの本当に良いコンピュータで約1時間かかります。生成されるファイルは6〜10ギガバイトのようになります。

少なくとも、ここでは何かを拾い上げるために、浅い端にすばやくジャンプすることはありません。ブラウザは膨大な量の個々の機能を包含し、それらを共通のコンテキストに組み込む必要があるため、非常に複雑なエンジニアリングが不可欠です。あなたが探しているものを見つけることができますが、それは数十から数百のファイルで構成されている可能性のあるクラスライブラリの一部であることがわかります。これらのライブラリは、各タスクを処理するために100以上のライブラリに依存していますだから、本当に何かを取り除くには、与えられた情報よりも多くの時間を費やす必要があります。

編集:あなたの具体的な例としてああ。

SRCは、「クローム」の木が大きく、直接の実装を(多くのものがそこにかかわらず、ではありませんが、そのほとんどがさえ含まれていますが、それは出発のルートhttp://src.chromium.org/viewvc/chrome/trunk/src

/クロムhttp://src.chromium.org/viewvc/chrome/trunk/src/chrome

ですポイント)。これはhttp://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/

はあなたがなりたい場所に閉じるようになっている

/クロム/ブラウザ(Chrome OSのクレイジー極端に取らクロムブラウザの一種である)ChromeOSのと重複しています。タブやその他のもの(ブラウザーの実際の実装の巨大な象を無視する)のように、ブラウザーに対応できるものへの具体的な参照が表示され始めます。

/chrome/browser/ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/

ブラウザのUIコードの大部分が表示されます。クロスオーバーがあるときや、ルートsrcディレクトリに「ui」があるようなものが混在しているときは混乱することがあります。

そして最後に、その中にコードの驚くほど少量を持ってhttp://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/

。しかし、これはあなたがたくさん見つけたものです。ここのコードは、他の場所に構築されているいくつかのクラスの実装です。ウェブビューではないGUIコンポーネントの場合は、ルート "ui"とそのネイティブウィジェットを指しています。これは実際のイベント処理コードの大部分が正しく記憶されている場所です。

+0

ありがとうございます。君は。真剣に、素晴らしい答え - ありがとう。これは、彼のコメントで悪意者が指し示すドキュメントを読んで学んだことと相まって、爆発のように聞こえる。 – ntl0ve

+0

それは難しい戦いの知識でした。 Googleは、Web関連の開発環境で一般的な親しみやすい環境を促進するものではありません。これは最近、Googleエンジニアの投稿(誤って公開された)の投稿にコメントされました。エンジニアリングの品質は、ほとんどの作業で驚異的です。基本的には、十分な品質のコードで、作業することが期待される人々は、多くの文書化なしで効率的に使用することができます。しかし、彼らのターゲットオーディエンスは学習を必要とするものではありません。これは、同社の文化文化である –

+0

の一部であり、コードに近づく人々の非常に高いレベルのベースライン期待を持つ機能です。しかし、それは暗黒物質のようなものである信じられないほど高品質のオープンソースコードが豊富にあることを意味します。それはそこにありますが、高度な専門知識や時間をかけてバブリングすることがなければ、それほど親密ではありません。したがって、初期の方向性をほとんど持たずに多くの人々に利益をもたらすだけです。 –

1

あなたは

http://groups.google.com/a/chromium.org/group/chromium-dev/topics

も...それは実際にはあまりにも役立つことのdevのフォーラムを通じて読み込みどこかあまりにも:-)

http://aaronboodman-com-v1.blogspot.com/2010/10/wherein-i-help-you-get-good-job.html

をもたらす可能性が...これを試すことができますこのセクションには、スタイルガイドなどの便利なドキュメントがたくさんあります。

最後に、ではなく、少なくとも、IRCは、ダイビングの並べ替えのための私の推薦はhttp://code.google.com/p/chromiumembedded/のソースを見てみることである

http://dev.chromium.org/developers/irc

関連する問題