3

C++上に構築された独自のAPIがあります。そのため、C ++のすべての機能を使用し、独自のAPIを備えています。C ++ APIとまったく同じように機能するAPIがいくつかあります(mallocにはStrallocがあります)。これらのAPIは、パフォーマンス上の理由から提供されています。

C ++で利用できる静的コードアナライザーはたくさんありますが、どれも使用できません。プロプライエタリAPIを使用してコードで実行できる静的コードアナライザーが必要です。

コードアナライザーの開発を開始するにはどうすればよいですか。C++で利用できるような機能指向である必要はないかもしれません。未使用の変数の報告、バッファオーバーフロー、メモリリークなどの基本的なことから始めたいと思います。

任意のガイダンスをいただければ幸いです。

[更新]私が探していたものである次の質問を見つけました。違いは、Javaの代わりにプロプライエタリAPIに関するものです。これまでにいくつか良い答えがありましたが、このような開発を行ってきた人々からもっと知りたいと思います。

静的解析の概要

4

4 に答える 4

2

Coverity や Klocwork などのソリューションには、独自のルールを作成できる拡張可能なルール セットがあります。標準メモリ チェックがカスタム メモリ アロケータを認識するようにツールを構成することもできます。ただし、いくつかの制限が適用されます。

これらのツールを使用すると、同じワークフローを借りることができるので便利です。繰り返しますが、それはあなたが持っているコードと、正確に何をしようとしているかによって異なります。

于 2009-07-26T05:58:23.753 に答える
2

よくわかりません:

これは C++ 上の言語実装ですか、それとも C++ 上の単なる API セットですか?

後者の場合、通常の C++ プロファイラーはメモリ リークやオーバーフローなどをキャプチャします。

于 2009-07-24T21:57:20.340 に答える
1

これを最初から書き込もうとしないでください。C ++は解析すら難しいことで有名であり、このルートで遠くまで行くことはないと思います。

ライブラリ呼び出しを分析するための独自のプラグインを作成できるように、拡張可能なC++静的アナライザーを使用する必要があります。私の頭のてっぺんから、私は提案するでしょう:

  • gcc C ++フロントエンド(gccにプラグインが追加されました)
  • EDGC++パーサー
  • ローズ(EDGを使用)
  • LLVM(おそらくclangを使用していますが、プライムタイムの準備ができていない可能性があります)
  • MicrosoftのPhoenixFramework(これができると思いますが、チェックしていません)。

最良の答えはおそらくclangまたはroseです。

于 2009-07-24T23:03:34.467 に答える
1

C++ の解析は、実際には非常に困難です。C++ 拡張方言を使用している場合は、その方言に「簡単に」適合し、分析ツールを構築する手段を備えた完全な C++ パーサーが必要です。

DMS Software Reengineering Toolkitは、完全にカスタマイズ可能な汎用分析および変換インフラストラクチャであり、一般的な解析、ツリー構築、シンボル テーブル構築、およびフロー分析機能を提供します。完全にカスタムのアナライザーを構築するために使用されます。

C++ のいくつかの標準方言を処理するC++ フロント エンドがあり、他の拡張機能を処理するようにカスタマイズできます。C++ フロント エンドには完全なプリプロセッサ機能があり、AST を解析して構築し、完全な C++ の名前と型の分析を行います。

于 2009-07-31T03:53:32.460 に答える