静的C ++コード分析

私にとって、C ++の美しさは、主に言語の許容性と恐ろしい力にあります。 Cの場合と同じくらい厳密にメモリを操作できますが、同時にテンプレートやSTLなどの抽象化ツールもあり、あらゆるものをパラメーター化できます。
これに対する料金は適切です-常にわかりやすいコンパイラーエラー(クラスを定義した後にセミコロンを入れるのを忘れないでください)、プログラマーの準備とトレーニングのための非常に長い時間ではありませんが、最も重要なことには、いくつかのバグはプログラムの実行中にのみ顕著になります。
私たちは、プログラムを開始する前に、より便利な情報を求めています。 必要なものを取得する1つの方法は、静的コード分析です。 静的とは、プログラムを実行しないことを意味します。 起こりうるエラー、未定義の動作のケース、メモリリークだけでなく、アクセス不能/未使用コード、プログラミングスタイルの直観性を高めるための推奨事項なども興味深いです。

この記事では、静的分析メソッドによって抽出されたソフトウェアメトリックを取得する手段は考慮されていません。 プログラミング標準に関連するコメント(中括弧は、oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!さようなら)とは別の行に記述する必要があります。
評価基準は単純です-見つかったバグの数と有用性、使いやすさ(特に、コード変更の要件がないこと)、無料/リーズナブルな価格/良いクラック。
最初のレビューを行い、山へのリンクを発行します。


見つかったアイテム


GCCペダンティックキー


まず第一に、すべての可能な通常の手段を使用する必要があります。 gccは、コンパイラとプリプロセッサの警戒に関連する次の興味深いキーを提供します。

もちろん、私はそれほど賢くはありませんが、警告に関連するキーについてこのマニュアルのすべてを読みました

Cppcheck


おそらく、見つかったプログラムの中で最も価値のあるものです。
プログラムの公式ウェブサイトと日食のプラグイン 。 非常に多くを認識し、次のエラーを見つけます。
Qt4のGUIで、クラスをスマートポインターとしてマークすることができます(誤った模倣について報告しないようにするため)。

Vera ++


Vera ++は、cppcheckとは異なり、スタイルチェックに重点を置いています。 補充されたルールベースがあります。 デフォルトでは、データベースには「コロンの前にスペースが必要」など、本当にばかげた部分がたくさんあります。 唯一の便利な機能は、ヘッダーファイルで名前空間の使用を禁止することです。 ただし、ルールはTclで記述できます。 :)

ラット


RATSは、セキュリティとバッファオーバーフロー攻撃に関する非常に説得力のある恐怖物語を語っています。 保護されたコードについてあまり知らないので、よく見ませんでした。

プラスのないCのチェッカー


驚くべきことに、純粋なCプログラマーは静的分析を重視しているようです。 ここに1回2回 リストがあります

プラスの開発者にとって有用でしょうか? クラスのないコードがあり、どのC ++プログラムがCコンパイラーによってコンパイルされないかを覚えている場合は、なぜですか?

スプリント


これは純粋なCの場合です。簡単に組み立てられますが、きれいに機能し、多くのことを探します-マニュアルを参照してください。

シミアン


Simian-類似度アナライザー。 コードの重複を探しているということです。 正直なところ、私は彼女の申請書を思いつきませんでした

チル


CIL-中間言語あり。 Cを簡易Cにコンパイルします! 簡略化されたCは、他のアナライザーに既に供給されている可能性があり、理論的には作業の品質を向上させるはずです。

わかりにくい、オフトピック




試用/うなり声ソフトウェア


そして、それは十分ではありません。 多くのアナライザーは多額の費用がかかり、亀裂がありません。
このようなアナライザーの例を次に示します。それらのWebサイトにアクセスして、Cleanscape trivialを要求できます。 可能性はcppcheckとそれほど変わりません。

他に何が欲しいですか


静的に分析できるコード内のすべてのエラーが既存のプログラムで表示されたわけではありません。 私がしたい:

Source: https://habr.com/ru/post/J75123/


All Articles