PVS-Studioは、プログラム方法を監視することを学びました

PVS-Studioオンザフライ

PVS-Studioは、できるだけ早くエラーとタイプミスを特定するのに役立つ操作モードを導入しました。 アナライザーは、ファイルのコンパイル後すぐに起動し、何か問題がある場合は、コードが恥ずかしくなります。 この機能は現在、Visual Studio 2010のユーザーのみが利用できます。



私は繰り返し書いたが、エラーが早く検出されるほど、それを修正するコストは下がる。 しかし、これでは私は独創的ではなく、多くの本や記事の著者は繰り返しており、これを繰り返し続けています。 少なくとも同じS.マッコネルを取る。 だから私は自分自身を繰り返さない。



PVS-Studioアナライザーの以前のバージョンは、手動で起動するか、ナイトリービルドに統合する必要がありました。 午前中にログを表示して何らかのエラーを修正できるという事実は、間違いなく素晴らしいことです。 しかし、完璧ではありません。 これは、日中に2、3の小さな間違いを植えてから、それぞれの間違いを10分間探すことを妨げるものではありません。 PVS-Studioはここではあまり役に立ちません。 変更されたファイルに対してのみ実行するのは不便ですが、プロジェクト全体では時間がかかりすぎます。



幸いなことに、私たち自身はプログラマーであり、キーボードの同僚のニーズに敏感です。 PVS-Studio 4.30では、新しいインクリメンタル分析モードが導入されました。 現在、検証はコンパイル段階とほぼ組み合わされています。 アナライザーは、私たちが愛するF7ボタンを押すことでコンパイルされたファイルをチェックします。 このモードをオンにするのは簡単ではありませんが、非常に簡単です。 PVS-Studioメニューの「Incremental Analysis After Build」項目の隣のボックスをチェックするだけです。



ビルド後のPVS-Studioの増分分析



次に、これがどのように機能するかの例を見てみましょう。 プログラミングプロセスに非常に満足していて、急いで配列インデックスを間違えたとします。



エラー



この式の結果は常に「false」です。 しかし、私は気づきません。 私はさらにコードを書き、人生を楽しんでいます。 次に、完了した作業に満足してF7を押すと、変更されたファイルが正常にコンパイルされます。 VS2010は警告を出しません。 私は冷静にコードの次のセクションを編集します。



しかし、コンパイルが静かにバックグラウンドで完了すると、PVS-Studioアナライザーが起動し、変更されたファイルをチェックします。 バックグラウンドでは、プログラマに干渉しないように特別に起動します。 静的解析はコンパイルに時間がかかり、進捗ダイアログを見ながらプログラマーにため息をつくことは意味がありません。 すべてが正しく書かれていれば(あなたにとっても私たちにとっても;-))、プログラマはPVS-Studioの存在と操作にまったく気付かないでしょう。



ただし、間違いがあります。 そしてしばらくすると、アナライザーは疑わしいコードの存在を知らせます! 赤に変わり、プログラマーの手が目的のタブに到達して詳細を確認します。



PVS-Studioの警告



実際、メッセージでは、条件が常にfalseであることがわかります。



PVS-Studioの警告



その結果、エラーは書き込み後ほとんどすぐに修正されます。



新しいPVS-Studioモードをお試しください。 こちらから通常通り試用版をダウンロードしてください 。 インストール後にVS2010の速度が低下し始める場合は、PVS-Studioの食欲を減らします。 デフォルトでは、アナライザは検証中に利用可能なすべてのプロセッサコアを使用します。 したがって、設定では、使用できるコアの数を指定できます。



一度にいくつかの質問を予想しています。 そのため、最後に小さなFAQを事前に準備しました。



1)VS2010でのみ新しいモードがサポートされるのはなぜですか?



Visual Studio 2010でのみ、どのファイルが変更され、どのファイルがそれらに依存しているかを見つけることができるAPIがありました。 つまり、検証するファイルを選択できるメカニズムが登場しました。 これについてもう少し詳しく説明します[ 1 ]。



新しい操作モードが本当に気に入ったら、Visual Studio 2005/2008のユーザー向けに新しいモードを実装する方法を検討します。 ただし、Visual Studio 2010への移行は見かけよりもはるかに簡単です。 古いコンパイラを選択できますが、新しい環境の機能を使用します。 これは、プラットフォームツールセット[ 2 ]を使用して行われます。



2)たとえば、IntelliSenseのように、オンザフライでチェックを行い、エラーをすぐに強調してみませんか?



まず、このようなVisual Studioとの緊密な統合は利用できません。 それを得るためには、マイクロソフトともっと親しくなる必要があります。



第二に、とにかく何もうまくいきません。 静的分析は非常に複雑であり、いくつかのエラーを識別するために、かなり大きなコードに関する情報を収集する必要があります。 コードは編集されるため、ほとんどの場合解析できません。 すべてのプログラマーは、誤って余分なブラケットまたは誤ったテンプレートのために、C / C ++コンパイラが狂ったように見えたと思います。 C / C ++は、その場で分析できる言語ではありません。



3)そして、緑と赤を区別しないとどうなりますか?



私は発言に同意します。 おそらく次のバージョンでは、色を変更するだけでなく、タブにテキストを書き込むこともあります。



4)なぜこのように動作しないのですか?



これは新しい機会であり、エラーが発生する可能性が高くなります。 あなたが私たちに欠点とあなたが気づいた希望について私たちに知らせてくれたら感謝します。 フィードバックページ



5)再構築する場合、アナライザーはプロジェクト全体をチェックしますか?



いや あまりにも長い間意味がありません。 アナライザーは、決定およびプロジェクトの再割り当てコマンドを無視します。 ソリューションまたはプロジェクトを確認する場合は、以前と同様に、対応するコマンドをアナライザーで使用できます。



追加のリソース:

  1. パベル・エレメエフ。 Microsoft Visual Studio 2010のインクリメンタルビルドプロセスでPVS-Studioアナライザーを使用します。http://www.viva64.com/en/b/0101/
  2. MSDN 方法:ターゲットフレームワークとプラットフォームツールセットを変更します。 http://www.viva64.com/go.php?url=689



All Articles