2017-03-28 6 views

答えて

1

Scalaインクリメンタルコンパイルの仕組みを誤解していると思います。

「のIntelliJのScalaのインクリメンタルコンパイル」と呼ばれるかもしれない2つの異なるものがあります:異なるプログラミング言語ではないため、適用typcial戦略の多かれ少なかれセット(ある

1)適切なScalaのインクリメンタル・コンパイルが再)コンパイルボタンを押すと、最初からすべてをコンパイルします。その背後にある主な考え方は、ビルドシステムでは、最後のコンパイル以降に特定のファイルとその依存関係が変更されていないことに気付くことがあるため、それらを再コンパイルする必要はなく、代わりに最後のコンパイルの結果を使用できます。それらの経験則は、複雑な言語であるためScalaにとって実際は複雑です。何ができるかについてのいくつかのアイデアは、SBT文書"Understanding Incremental Recompilation"に記載されています。ある時点で、JetBrainsは、よりスマートでヒューリスティックを実装し、Scala Compiler設定でSBTベースとIdeaベースのインクリメンタルコンパイルを選択したので、より優れている(つまりインクリメンタルコンパイルが高速である)と判断しました。しかし、それはまだあなたがコンパイル(または実行またはデバッグまたは同様のもの)をヒットしたときだけ機能します。アイデアはバックグラウンドではありません。

2)IntelliJ Ideaに固有のものがあります。これには、一種のインクリメンタルな再コンパイルが必要ですが、これはほぼリアルタイムで動作します。これは、IdeaのScalaプラグインで実装されているsynxtaxの強調表示機能です。変更するすべてのファイルを即座に再処理する必要がありますが、現実のコンパイラとまったく同じようになります。実際には、そのプロセスの詳細を調べることにはなりません(Scalaプラグイン自体を開発しない限り)。これらのプロセスが提供するものは、コードの構文構造ですが、実際の.classファイルはありません。

関連する問題