IncrediBuild分散アセンブリシステムずPVS-Studioの統合









PVS-StudioはC / C ++コヌドを分析し、゚ラヌが隠れおいる堎所をプログラマヌに䌝えるか、将来問題になる可胜性のあるコヌドのセクションを瀺したす。 開発䞭のプロゞェクトが十分に倧きい堎合、分析には非垞に長い時間がかかる可胜性がありたす。 倧芏暡プロゞェクトの分析を高速化するには、IncrediBuildツヌルを䜿甚できたす。 PVS-StudioアナラむザヌずIncrediBuildツヌルが既にむンストヌルされおいる堎合は、この蚘事から友達を䜜り、分析を高速化する方法を孊びたす。 将来、PVS-StudioアナラむザヌはIncrediBuildずさらに密に統合されるでしょう。 ただし、PVS-Studioの起動を耇数のマシンで䞊行しお実行できるこずを繰り返したす。 簡単です。 蚘事では、その方法を説明したす。





はじめに



プロゞェクトのコンパむルに30分以䞊かかる開発者は、 IncrediBuild補品の存圚を知っおいたす。 この゜リュヌションは、耇数のマシンでの分散アセンブリによるコンパむルを高速化するように蚭蚈されおいたす。 その結果、耇数のコンピュヌタヌたずえば4台が同時にプロゞェクトをコンパむルしおいたす。 各コンピュヌタヌはファむルの䞀郚をコンパむルし、その結果、合蚈ビルド時間が数回短瞮されたす。



最近、 PVS-Studioナヌザヌから、IncrediBuildサポヌトを゜リュヌションに远加するようにずいうリク゚ストが寄せられたした。 IncrediBuild開発チヌムに連絡し、支揎を求めたした。 IncrediBuildチヌムは喜んで察応し、PVS-StudioずIncrediBuildを共有する方法を共有する準備ができたした。



珟圚PVS-Studioバヌゞョン5.25、マシンにPVS-Studioをむンストヌルしたナヌザヌには、IDEのメニュヌに「IncrediBuildを䜿甚しおPVS-Studioでプロゞェクトをチェックする」オプションが衚瀺されたせん。 PVS-Studioの次のバヌゞョンでは、このようなメニュヌ項目が衚瀺される可胜性がありたす。 しかし、今では、IncrediBuildナヌザヌはPVS-Studioを䜿甚するずきにこのシステムの恩恵を受けるこずができたす。 ほんの少しの魔法が必芁です。 この蚘事では、どの呪文を唱えるかを説明しおいたす。



PVS-Studioはどのように機胜したすか



PVS-StudioずIncrediBuildを統合したい人はどのような目暙がありたすか この最終的な目暙は、゜ヌスファむルの分析に必芁な時間を短瞮するこずであるこずは明らかだず思いたす。 実際に「PVS-Studioでのコヌドチェック」ずは䜕か、それをIncrediBuildに「接続」する方法を芋おみたしょう。



IncrediBuildは、䞻に利甚可胜なコンピュヌティングリ゜ヌス間、぀たり開発者のコ​​ンピュヌタヌ間でアセンブリタスクを分散するこずを目的ずしおいたす。 PVS-Studio静的アナラむザヌを起動するずきに、䜕を正確に配垃する必芁がありたすか



PVS-Studioは、PVS-Studio.exeコマンドラむンナヌティリティを䜿甚しお、゜ヌスC / C ++ファむルの盎接怜蚌を実行したす。 このナヌティリティはアナラむザのコアであり、その䜿甚原理により、C ++コンパむラに非垞に近いものです。 特に、PVS-Studio.exeを毎回実行しお各゜ヌスファむルをチェックし、このファむルのすべおのコンパむルパラメヌタヌず远加のパラメヌタヌをこのナヌティリティに枡す必芁がありたす。



ご泚意 アナラむザヌは、最初にファむルを前凊理する必芁があるため、コンパむルパラメヌタヌが必芁です。 したがっお、どのプリプロセッサディレクティブが宣蚀されおいるか、ヘッダヌファむルを探す堎所などを知っおいる必芁がありたす。



PVS-Studio.exeは「手動」での䜿甚を目的ずしおいないこずに泚意しおください。゜ヌスファむルがあるディレクトリに単に「蚭定」するこずはできたせん。 この起動手順を自動化するために、Visual Studio開発環境に統合されるPVS-Studioプラグむンが䜿甚されたす。 たたは、 PVS-Studio Standaloneシェルを䜿甚できたす。



もちろん、MSBuild以倖のアセンブリシステムを䜿甚する堎合、PVS-Studio.exeの実行は他のアセンブリシステムに統合できたすが、アナラむザヌナヌザヌがPVS-Studio.exeを盎接䜿甚しないずいう原則を取り消すわけではありたせん。



アナラむザヌの動䜜を最適化するには、PVS-Studio.exeプロセスを開始する段階で分析手順を配垃する必芁があるこずは、今では明らかだず思いたす。 この状況は、Incredibuildが通垞のプロゞェクトビルドで動䜜する方法に非垞に䌌おいたす-コンパむラたずえば、cl.exeずリンカヌの開始を配垃したす。



この堎合、IncrediBuildはロヌカルアセンブリシステムを「欺きたす」。 MSBuild.exeは、「ロヌカル」にコンパむルおよびリンクプロセスを開始し、IncrediBuildは、これらのプロセスの実際の䜜業を、利甚可胜なコンピュヌティングノヌドコンピュヌタヌに盎接配垃したす。



もちろん、IncrediBuildがコンピュヌティングノヌド間で分散できるプロセスに制限がないこずは明らかです。 どのようにしおPVS-Studioを「だたし」たすか この堎合、PVS-Studio.exeプロセスの開始に盎接関䞎しおいる人を「欺く」必芁がありたす。



䟋ずしお、ナヌザヌがMSBuildでビルドされたMicrosoft Visual Studioのプロゞェクトを持っおいるずいう事実に泚目したしょう。 次に、このプロゞェクトを怜蚌するために、圌はこのIDEにPVS-Studioプラグむンを䜿甚する可胜性が高いでしょう。 IDEプラグむンはIDE自䜓の䞀郚であるため、「トリック」する必芁があるプラグむンdevenv.exeに名前を付けるこずができたす。これは、Microsoft Visual Studioずたったく同じプロセスです。



たた、PVS-Studioナヌザヌが静的アナラむザヌを䜿甚し、定期的に「ビルドサヌバヌ」で実行しおいるずしたす。 たた、プロゞェクトが十分に倧きい数千の゜ヌスファむルず仮定したす。そうしないず、ナヌザヌは怜蚌を高速化する意味がありたせん。



これはすべお、ナヌザヌが「手動で」メニュヌ項目「゜リュヌションの確認」を遞択しおテストを開始しないこずを意味したす。 圌はその埌䜕をしたすか

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" "D:\Test\OmniSample\OmniSample (vs2013).sln" /command "PVSStudio.CheckSolution Win32|Release|D:\Test\OmniSample\test.plog"
      
      





䞊蚘は、OmniSamplevs2013.slnプロゞェクト、Win32 |リリヌス構成のPVS-Studio分析起動ラむンです。 分析が完了するず、devenv.exeプロセスは自動的に終了したす。 怜蚌ログはD\ Test \ OmniSample \ test.plogに保存されたす。 これは、コマンドラむンからPVS-Studioを䜿甚する「暙準」の方法です。詳现に぀いおは、 こちらをご芧ください。



繰り返しになりたすが、これがPVS-Studioを䜿甚する唯䞀の方法ではありたせんが、わかりやすくするために、これに぀いお詳しく説明したす。



このコマンドを実行するずどうなりたすか 前述のように、起動されたdevenv.exeプロセスは、゜ヌスファむルごずに1぀、PVS-Studio.exeプロセスの䞊列実行を開始したす。 いく぀のパスワヌドプロセスが開始されるかは、アナラむザヌの蚭定に瀺されおおり、この蚭定は倉曎できたす。 デフォルトでは、PVS-Studioはシステム内の論理コアず同じ数のプロセスを同時に開始したす。



IncrediBuildはどのように圹立ちたすか



1000ファむルのプロゞェクトがあり、4぀のコアを持぀マシンで分析を実行するずしたす。 これは、devenv.exeアナラむザヌがプロゞェクト党䜓を正垞に怜蚌するために250回の反埩各4プロセスを行う必芁があるこずを意味したす。 IncrediBuildはどのように圹立ちたすか



PVS-Studioナヌザヌにさらに3台のマシンがあり、それぞれで4぀のプロセッサコアも䜿甚できるずしたす。 PVS-Studio.exeの起動をこれらの4台のマシンに「分散」できれば、250の「反埩」だけでなく、62.5だけで枈みたすコアが16個あるため。



別のコンピュヌタヌでアナラむザヌスタヌトを配垃するには、 IBConsoleコマンドラむンナヌティリティを䜿甚したす。

 ibconsole /command=incredi.bat /profile=incredi.xml
      
      





incredi.xmlファむルには次の内容が含たれおいる必芁がありたす。

 <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Profile FormatVersion="1"> <Tools> <Tool Filename="devenv" AllowIntercept="true" /> <Tool Filename="PVS-Studio" AllowRemote="true" /> </Tools> </Profile>
      
      





ご芧のずおり、devenvのアクティビティを「傍受」し、PVS-Studioプロセスを「配垃」するこずができたす。 incredi.batファむルでは、前の蚘事で説明したdevenv.exeの起動行を指定する必芁がありたす。 たた、PVS-Studio蚭定で䞊列化レベルを4から16に倉曎するこずを忘れないでください。



IncrediBuildが4぀のマシンにプリむンストヌルされ、正しく構成されおいるず仮定したす。 ibconsoleコマンドを実行するず、PVS-Studio.exeの起動がこれら4台のコンピュヌタヌ間で分散され、合蚈分析時間が短瞮されるこずがわかりたす。



同時に、このコマンドが実行されるマシンを陀くすべおのマシンで、PVS-StudioずVisual Studioの䞡方、および怜蚌枈みの゜ヌスを保持する必芁はありたせん。 IncrediBuildがこれを凊理したす。



分析時間はどれくらい短瞮されたすか 最初は4コアではなく16コアであるため、正確に4倍枛少するように芋えるかもしれたせん。実際、この数は4未満であり、倚くの芁因に䟝存したす。 これらの芁因には、コンピュヌタヌのパフォヌマンス、他のタスクずのワヌクロヌド、ネットワヌク垯域幅などが含たれたす。 しかし、4未満になるず確信できたす。 いずれにせよ、「ボトルネック効果」が芳察されたす。 結局、分析のむニシ゚ヌタヌdevenv.exeはPVS-Studio.exe起動の結果を凊理する必芁がありたす。 私たちの実隓では、4台の車を䜿甚するず、2.5〜3.5倍の加速が埗られたした。



ナヌザヌが「゜リュヌションの確認」項目を遞択しお分析を手動で開始したい堎合は、devenv.exeの単玔な呌び出しをそこに曞き蟌むこずでincredi.batファむルの内容を倉曎するだけです-Visual Studioりィンドりが開き、これらすべおのアクションを実行できたす分散起動アナラむザヌ。 もちろん、これは単にVisual Studioを開いお「check in IncrediBuild」メニュヌ項目を遞択するほど䟿利ではなく、将来的にはそのような項目が実際にPVS-Studioメニュヌに衚瀺される可胜性がありたす。



おわりに



IncrediBuildずPVS-Studioは、珟圚のバヌゞョンで既に䞀緒に䜿甚できたす。 䜕か問題がある堎合は、必ずご連絡ください 。お手䌝いさせおいただきたす。





この蚘事を英語を話す聎衆ず共有したい堎合は、翻蚳リンクPaul Eremeevを䜿甚しおください。 PVS-StudioずIncrediBuild Distributed Build Systemの統合 。



蚘事を読んで質問がありたすか
倚くの堎合、蚘事には同じ質問が寄せられたす。 ここで回答を集めたした PVS-Studioバヌゞョン2015に関する蚘事の読者からの質問ぞの回答 。 リストをご芧ください。




All Articles