オプションの変更など)を加えた場合に発生する非常に費用のかかる再ビルドを回避できます。特定のビルドでは、このオプションが障害になる場合があります。ビルド)や、ホスト構成とターゲット構成の両方でビルドする必要があるコードの量が多いビルドでは、メリットが得られない可能性があります。増分再ビルドが正しく行われるようにすることです。ベースのツール)は、増分ビルドの実装でいくつかの安全でない前提条件を想定しています。ファイルのタイムスタンプは単調に増加します。これは一般的なケースですが、この前提から外れがちです。ファイルの以前のリビジョンと同期すると、そのファイルの変更時間が短縮されます。ベースのシステムは再構築されません。ファイルの変更を検出しますが、コマンドの変更は検出しません。コンパイラを再実行しません。使用して、前のビルドの無効な出力を手動で破棄する必要があります。呼び出しでは、切り捨てられた出力ファイルが有効であると盲目的に想定され(入力ファイルよりも新しいため)、再ビルドされません。プロセスが強制終了された場合も、同様の状況が発生する可能性があります。このような前提条件を回避します。これまでに行われたすべての作業のデータベースを維持します。エントリの出力ファイルのセット(とそのタイムスタンプ)がディスク上のファイルのタイムスタンプと完全に一致する場合にのみ、ビルドステップを省略します。入力ファイルまたは出力ファイル、またはコマンド自体に変更を加えると、ビルドステップが再実行されます。正しい増分ビルドを使用すると、混乱による無駄な時間が減ります。使用による再ビルドの待ち時間が短縮されます。これは、再ビルドが必要な場合でも、先行型の場合でも同様です)。ビルドの整合性と増分ビルド正式には、想定される出力ファイルがすべて存在し、その作成に必要な手順またはルールで指定されているように内容が正しい場合、ビルドの状態は整合性があると定義されます。ソースファイルを編集すると、ビルドの状態は不整合になります。この状態は、次にビルドツールを実行して正常に完了するまで続きます。この状況を「不安定な不整合」と表現しています。これは一時的なものであり、ビルドツールを実行することで整合性が復元されるためです。有害な別の種類の不整合があります。それは安定した不整合です。ビルドが整合性のない安定した状態に達した場合、ビルドツールを繰り返し呼び出しても整合性は復元されません。ビルドが「停止」し、出力が不正確になります。入力する主な原因は、安定した一貫性のない状態にあります。ビルドツールがこのように失敗したことを検出して復元するには、時間がかかり、非常に面倒な作業になる可能性があります。概念的には、一貫したビルドを実現する最も簡単な方法は、以前のビルド出力をすべて破棄してから、すべてのビルドをクリーンなビルドにすることです。エンジニアを除き)明らかに時間がかかりすぎるため実用的ではありません。そのため、有用であるためには、ビルドツールが整合性を損なうことなく増分ビルドを実行できる必要があります。正確な増分依存関係の分析は困難であり、前述のように、他の多くのビルドツールは増分ビルド中の安定した不整合状態を回避できていないためです。編集を加えずにビルドツールを正常に呼び出した後、ビルドが一貫した状態になることが保証されます。現在のビルドの結果の整合性を保証しません)。次回のビルドの結果で整合性が復元されることは保証されます)。すべての保証と同様に、細かい条件があります。安定した不整合状態になる既知の方法がいくつかあります。増分依存関係の分析で意図的にバグを見つけようとする試みから生じるこのような問題を調査することは保証できませんが、ビルドツールの通常または「合理的」な使用によって生じる安定した一貫性のない状態をすべて修正するよう最善を尽くします。安定した不整合状態が検出された場合は、バグを報告してください。ローカル実行のサンドボックス化はデフォルトで有効になっています。サンドボックスを使用して、アクションが密閉状態で正しく実行されるようにします。ツールの処理に必要な最小限のファイルセットのみを含むサンドボックスでスポーン(大まかに言えばアクション)を実行します。警告を表示し、ビルドが密閉型であるとは保証されず、ホストシステムに不明な点で影響を与える可能性があることを警告します。システム内の他のファイルは使用せず、宣言された出力ファイルのみを生成することを意味します。詳しくは、Hermeticityをご覧ください。デフォルトで無効になっています。ファイルを調べることでチェックできます。ユーザーの名前空間を有効にできます。サンドボックスがルールを実行できないことがあります。ようなメッセージが出力される障害です。使用して他のルールのサンドボックスを無効にしてみてください。ディストリビューションをお知らせください。調査を行い、今後のリリースで修正を提供いたします。つの異なるフェーズで実行されます。ユーザーは、これらのフェーズの違いを理解することで、ビルドを制御するオプションを把握できます(以下を参照)。ファイルと、依存関係の推移的なクロージャが、読み込み、解析、評価、キャッシュに保存されます。システムから読み込まれるため、通常、読み込みフェーズに数秒かかります。ファイルが変更されていない場合、読み込みは非常に速く行われます。ファイルの語彙と文法の誤り、評価エラーがあります。番目のフェーズである分析では、各ビルドルールの意味分析と検証、ビルド依存関係グラフの作成、ビルドの各ステップで行う作業の正確な決定が含まれます。読み込みと同様に、分析全体を計算する場合にも数秒かかります。ビルド間で依存関係グラフをキャッシュに保存し、必要なもののみを再分析します。これにより、パッケージが前回のビルドから変更されていない場合は、増分ビルドを非常に高速に行うことができます。メッセージが含まれます。読み込みフェーズと分析フェーズは高速です。ファイルのみを読み取るためです。コマンドなどの分析ツールの基盤として適しています。目の最終フェーズは実行です。ツールなどを再実行し、ビルドの各ステップの出力が入力と一致するようにします。このステップでは、ビルドに多くの時間が費やされます。アクションによって実行されたツールのエラー、想定される出力セットを生成するためのツールの障害などがあります。ライセンスにより使用許諾されます。ライセンスにより使用許諾されます。サイトのポリシーをご覧ください。関連会社の登録商標です。