PVS-Studio開発者の秘密研究所の地下から...

ああ、PVS-Studioに関する興味深い記事です!

C / C ++向けPVS-Studio静的コードアナライザーの開発チームで行われる社内の研究開発について時々話します。 今日の話は、製品の一部として準備中の別の新製品に関するものです。



私たちのプロジェクトをフォローしている(そしてさらにそれを使用している)人は、私たちのアナライザーがもともとVisual Studio専用のプラグインであることを知っています。 その後、Makefileに組み込まれたコンソールアプリケーションとして使用することが可能になりました(わからない場合はどうすればよいですか)。 その後、今年の初めに、C ++ Builderに統合しました。 ところで、C ++ Builderの下にはまだかなりの数のユーザーがいますが、その理由はよくわかりません。 そして最近、いわゆるスタンドアロンアプリケーションについて考えていました。







一般的に、ユーザーにとって理想的な静的コードアナライザーはどのように見えますか(真空中であるかどうか)。 この分野での私の経験に基づいて、理想的なアナライザーはこのように見えるはずです。 ユーザーはユーティリティをダウンロードして起動し、コードを含むフォルダーを指定して、緑色の大きなボタン「Find all errors!」を押します。 カスタマイズも、「プロジェクトへの統合」もありません。 結局のところ、ユーザーはこれを必要としませんか? はい、必要ありません。 ただし、残念ながらコードアナライザーが必要です。 C ++について話している場合は、少なくとも#includeと#defineに関する情報が必要です。 コードを前処理するために必要です。



ここで、オプションのいずれかを選択する必要があります。

  1. または、ツール自体がプロジェクトファイルからこの情報を抽出する必要があります(Visual C ++およびC ++ Builderのプラグインが行うように)。
  2. または、Makefileで渡された場合、ツールはこの情報を受け取ることができます(コマンドラインのバージョンの動作)。
  3. または、このツールを使用すると、#includeパラメーターと#defineパラメーターのすべてのフォルダーをユーザーが苦労して操作できます。これはほとんど不可能です。 ユーザーがこれを行うことは非常に困難です。
  4. または...他のオプションを考え出します。


4番目の方法で、これを試すことにしました。 しかし、初期情報として、アナライザーが.cppファイルの形式で通常のソースではなく、すでに前処理されたファイルを受信した場合はどうなりますか 。 つまり プリプロセッサによって処理されるファイル。 これにより、プリプロセッサを呼び出す必要がなくなり、それに応じてこれらの#includeと#defineを知ることができます。



もちろん、これは上記の理想的なアナライザーオプションと一致しません。 しかし一方で、これにより、どの開発環境で実行しても、ほとんどすべてのC / C ++プロジェクトでPVS-Studioを使用できます。



そのため、私たちのチームの秘密研究所で開発されているツールは次のようになります。

図1-前処理されたファイル検証を開始するためのダイアログ

図1-前処理されたファイル検証を開始するためのダイアログ。



最初に、前処理された.iファイルがあるフォルダーを指定します。 それらは私たちのツールによって分析されます。



次に、ソースフォルダーを指定します。 これは、エラーをより正確に識別するために必要です。 さらに、(将来)ユーザーが理解できない.iファイルではなく、ユーザーの.cppファイルでナビゲーションを行うことをお勧めします。



第三に、システムインクルードファイルが置かれているフォルダーを示します。 <string>や<stream>などの最も基本的なもの。 何のために? アナライザーが、これらが診断メッセージを発行する必要がないファイルであることを認識するため。



そのため、前処理済みのファイルをこのプログラムに「フィード」し、アナライザーを実行できます。 これが、現在Boostプロジェクトをテストしている方法です。 ちなみに、ブーストチェックレポートが近日中に公開されます。見逃さないように、ブログを購読してください。 ファイルをチェックした後、次のような診断メッセージのリストを取得します。

図2-iファイルをチェックした後の診断メッセージのリスト。

図2-iファイルをチェックした後の診断メッセージのリスト。



これがVisual StudioまたはRAD Studioではないという事実に読者の注意を引きます。 これは、PVS-Studioウィンドウ全体を使用する(または使用する)別のユーティリティです。 また、組み込みのコードエディター(Notepad ++のScintilla)を使用して、エラーを完全に処理できます。

図3-本格的なコードエデエィター。

図3-本格的なコードエディター。



当然、この投稿では、新しい秘密ユーティリティの完全な説明を利用していません。 ただし、すでにいくつかの質問に答えることができます。



誰がこのユーティリティを必要としませんか? Visual StudioとC ++ Builderの統合を使用して、PVS-Studioでプロジェクトを簡単に確認できる人向け。 誰がこのユーティリティを必要としますか? PVS-Studioを使用してコードをテストし、コマンドラインユーティリティを組み込むことが困難な他の開発環境やプロジェクトファイルを使用する場合。



このようなユーティリティをどのように見たいですか? 既製の前処理済みファイルのチェックモードは便利ですか? そのようなユーティリティには何が欠けていますか? 誰もがMicrosoft / Embarcadero環境への統合に満足しているので、リリースするか、このユーティリティのさらなる開発を中止する必要がありますか?



PSところで、オープンソースプロジェクトで検出されたエラーのデータベースの設計を更新しました。



All Articles