2010-11-23 13 views
10

C++コードベースの解析に最も有用なツールはどれですか? 費用はいくらですか?
私たちは無料のソフトウェアやトライアルソフトウェアで管理できますか?それとも、本当に支払うべき商用ソフトウェアはありますか?C++コードベースの解析ツール

主な目的は、コード(例えば、建築上の問題を発見するため)、おそらくはコーディング標準を理解するために、品質問題などの理解を得ることです。

主に統計的な分析ですが、コードを実行できることを期待しています。 。

http://www.cppdepend.com/

と良い他の多く:

http://www.chris-lott.org/resources/cmetrics/それは「それは難解なコンパイラのコードで動作するはずという意味で堅牢にする必要があると考えて

+0

良い古いバウンドチェッカーと精製についてはどうですか?彼らは有力なアプリを味わっていますか? – Olav

+0

静的解析を求めて、動的解析ツールを例として挙げるのは奇妙です。 –

+0

バウンドチェッカーには静的な機能もあります。とにかく、私はそれを動的に行うのが最善だと思いますが、私たちがそれを遠くに得るかどうかはわかりません。 – Olav

答えて

5

最高の無料ツールがCでありますompilerの警告エラー、私は常に最大レベルでそれらを使用します。最初の目標は、不正行為のないクリーンなビルドでなければなりません(たとえば、理解できない警告を無効にするかキャストしない)。 Windows固有の

のVisual C++のは、いくつかのバグとのWin32 APIの誤用を引くために良いですCode Analysisが組み込まれていますが、それは無料版に含まれていないと(もちろん)です。これは、以前は.NETのFxCopに類似したPrefastと呼ばれる社内のMicrosoftツールでした。

PC-Lintは良好ですが、冗長で無料です。あなたが「有用なもの」を捕まえてノイズを無視する設定ファイルを入手できるなら、それは大きなプラスになります。これはWindows用ですが、他のプラットフォーム用のバージョンがあることはわかっています。

+0

それは超高価なチームのバージョンだけですが、そうですか? –

+0

@Noah - VS2010のために、それはプレミアムと究極のです。 VS2008、Team System、Team Suiteの場合2005年、Team Edition for Software Developers。広範に:はい、それはより高価なバージョンでのみ、あなたがこれをしたい場合は、VS2010は少し馬鹿げている。 –

+0

そうです、バージョンはすべて新しいリリースで変更されました。私はトラックを失う。コンパイラの警告のための+1、しかし、私は、 "それをコンパイルせずに、"ルールを追加します。特にあなたがブーストを使用している場合、それは難しいかもしれませんが、あなたに5000の警告が鳴っていなければ問題があることがはっきりしています。 –

0

Theres CCCC:http://cccc.sourceforge.net/ - メトリクスに関する調査プロジェクトの結果。

真実を伝えるために、私はそのようなことに大きな利益を見いだせませんでした。何を得ることを望みますか?

2

Valgrindについて非常に良いことを聞いたことがあります。 "多くのメモリ管理とスレッドのバグを自動的に検出し、プログラムの詳細をプロファイルする"

+2

良い提案ですが、Valgrindは静的解析を行いません。Valgrindを利用するにはコードを実行する必要があります(理想的には適切な範囲で実行する必要があります)。 –

1

プログラムの悪臭は、code duplicationです。 クローン検出機能を使用して重複を見つけることができます。多くのクローン検出器は、正確な一致のためにテキスト行だけを比較します。他のものはトークンストリームを比較し、差異がちょうど変更された識別子であるところでほぼ正確に一致するものを見つける。 CloneDRを使用すると、ランゲージ文法を参考にして、任意のランゲージ構造を挿入または削除する重複を見つけることができます。 CloneDRは、大規模なC++システムだけでなく、他の多くの言語でも動作します。このリンクには、典型的なクローン検出レポートがあります。

一般的な広域静的チェッカーはPCLintです。これにより、ツールで事前定義されたさまざまな共通のコーディングエラーがチェックされます。私はC++の "不可解な"(コンパイラ)方言をどれくらいうまく処理しているか分かりません。

カスタムチェックを定義する場合は、full C++ front end parserと、チェックを任意に設定する機能が必要です。私たちのDMS Software Reengineering Toolkitは、これを実現するように設定できるエンジンです。DMSのC++フロントエンドは、 "不可解な" C++の方言を扱うように設定できますが、すでにANSI、GCC3、GCC4、MS Visual Studio 7、および2005もカバーしています。DMSはプログラム変換エンジンなので、コードを "改善"貧弱な構造物をより良い構造物に置き換えることによって品質を向上させる。

静的解析ではありませんが、test coverageコードをどの程度テストしたかを測定するツールは、コード品質を評価する上で非常に役立ちます。すべてのテストが合格しただけなので、あなたがうまくテストしたことを意味するわけではありません。おそらく、未発達のコードは、あらゆる/さまざまな問題を抱えている可能性があります。

0

Vigilant Sentryを試すと、CとC++を解析し、ソフトウェアの高度なエラーを探します。これには、メモリやリソースのリーク、クラッシュによるメモリ破損などが含まれます。

現在、中小企業版は795ドル(値段では市場で最も安い)で、企業は4995ドルです。あなたが必要とするものを見つけることを幸運。

関連する問題