
PVS-Studioは、C / C ++アプリケーションのソースコードのエラーを検出する静的アナライザーです。 コンパイラーと同様に、アナライザーは、プロジェクトソースのあるディレクトリにあるファイルの後にファイルをバイパスし、タスクを実行します。 ただし、外部ツールを使用しなくても、一部のプロジェクトのアセンブリには数時間かかる場合があります。 このようなプロジェクトの静的分析にはさらに時間がかかります。 大規模なプロジェクトを構築するために、一部の開発者はIncrediBuildツールを使用して分散アセンブリを使用しています。 この記事では、PVS-StudioをIncrediBuildに統合する詳細については説明しませんが、大規模プロジェクトの確認、時間の測定、その他の興味深い事実について説明します。
PVS-StudioおよびIncrediBuildツールについて
PVS-StudioはC / C ++コードを分析し、考えられるエラーの場所をプログラマーに伝えるか、将来問題を引き起こす可能性のあるコードのセクションを示します。
アナライザーはいくつかの部分で構成され、PVS-Studio.exeプロセス(アナライザーコア)が各ソースファイルの検証を実行します。 さらに、「ストリーム」という用語を使用します。つまり、1つのPVS-Studio.exeプロセスが1つのスレッドで実行され、1つのソースプロジェクトファイルをチェックします。 そして、多くのファイルがあります...
IncrediBuildは、複数のコンピューターを使いやすくし、アプリケーションを高速化する分散コンピューティングソフトウェアです。 この場合、並列プロセスに存在する依存関係を心配する必要はありません。
IncrediBuildを使用して、追加のコンピューターを使用して多くのスレッドでプロジェクトを分析します。
チェックしたプロジェクトについて
レビュー中のプロジェクトには名前を付けないことを望んでいましたが、約700万行のソースコードがあります。 コードベースのサイズは300 MB、約9000ファイルです。 Intel Core i7-4770 3.40 GHzプロセッサと8スレッドで16 GBのRAMを搭載したコンピューターでPVS-Studioアナライザーを使用してこのようなプロジェクトを確認するには、約6時間かかります。 次に、IncrediBuildツールといくつかのコンピューターを使用して、プロジェクトの分析を大幅に高速化できた方法を説明します。
結果
すべてのテストでほぼ同じ構成のコンピューターを使用し、それぞれのコンピューターで8つのスレッドで分析できるようにしました。
コンピューターでIncrediBuildを構成する場合、そのうちの1つはコーディネーターとして構成され、残りはコーディネーターに接続するエージェントとして構成されます。 なぜなら プロジェクトチェックはエージェントで実行されたため、このコンピューターでは設定で1つのスレッドのみをロードするように設定されているため、過剰なロードが結果の収集に干渉しません。 コーディネーターの場合、1つのスレッドのみで計算を実行するように求められました。
テスト1
PVS-Studioの最初のテスト実行では、5台のコンピューターを使用できました。
- コーディネーター(1スレッド);
- エージェントN1(1スレッド、分析が開始されました);
- エージェントN2(8スレッド);
- エージェントN3(8スレッド);
- エージェントN4(8スレッド)。
図1は、26スレッドでのアナライザーによるプロジェクトの検証を示しています。

図1-26スレッドでのアナライザーによるプロジェクトの検証
IncrediBuildに慣れていない読者のために、緑色のバーは、左側に書かれた名前のコンピューターで正常に動作した1つのプロセスを示していることを説明します。 プロセスの名前はバーに表示されます。 また、一番下のタイムラインから、プロセスが開始および終了した時点を判断できるため、分散プロセスの期間をすぐに確認できます。
上の図は、かなり大きなソースファイルの検証を示しています。 並列化は、長い読み込みスレッドで非常に均等かつ効率的に実行されます。
図2は、さまざまなサイズのソースファイルの分析を示しています。

図2-26スレッドでの大小のプロジェクトファイルの検証
ご覧のとおり、スレッドの高速完了は新しいスレッドを作成する際のオーバーヘッドにつながり、一部のコンピューターのダウンタイムはわずかです。 しかし、一般的に、並列化は非常に優れています。 プロジェクトの分析は、6時間ではなく2時間10分で完了しました。非常に良好です。
二次試験
PVS-Studioの2回目のテスト実行では、7台のコンピューターを使用できました。
- コーディネーター(1スレッド);
- エージェントN1(2スレッド、分析が開始されました);
- エージェントN2(8スレッド);
- エージェントN3(8スレッド);
- エージェントN4(8スレッド);
- エージェントN5(8スレッド);
- エージェントN6(8スレッド)。
図3は、アナライザーによる設計検証を43ストリームで示しています。

図3-43フローでのアナライザーによるプロジェクトの検証。
43個のスレッドのリストを完全に見ることはできませんが、小さなファイルをチェックすると、コンピューターのアイドル時間がどのように増加したかがはっきりとわかります。 ただし、合計分析時間が6時間ではなく1時間24分であり、必要なコンピューターにIncrediBuildを簡単にインストールするだけで、すでに非常にクールに見えます。 PVS-Studioを設定するには、設定の1項目のみを変更する必要がありました-スレッド数を設定します。
おわりに
通常、非常に大規模なプロジェクトを組み立てるために存在するIncrediBuildツールを使用すると、PVS-Studioを使用して、近くにあるいくつかの開発コンピューターを使用して、プロジェクトの分析時間を4.2倍に短縮できました。 IncrediBuildの設定はすべてデフォルトで使用されており、非常に多くの設定があります。 確かにさらに高いパフォーマンスを達成できますが、「クイックスタート」に興味がありました。
もう一度、PVS-Studioを使用してプロジェクトをすばやく確認するために必要なもの:
- 必要なコンピューターにIncrediBuildをインストールします。
- PVS-Studio設定のスレッド数を増やします。
- IncrediBuildコンソールから分析を実行します。
- 1台のコンピューターで確認-6時間。
- 26ストリームをチェックイン-2時間10分。
- 43ストリームをチェックイン-1時間24分。
プロジェクトでPVS-StudioとIncrediBuildを使用する方法については、記事「 PVS-StudioとIncrediBuild分散アセンブリシステムの統合 」を参照してください。

英語を話す聴衆とこの記事を共有したい場合は、翻訳へのリンクを使用してください:Svyatoslav Razmyslov。 IncrediBuildを使用して、PVS-Studioによる大規模プロジェクトの分析を支援します。
記事を読んで質問がありますか?