質問
私たちは、Cのコードベースのコードアナライザとしてスプリントを使用することを計画しています。しかし、我々は、我々はそれのbenifts、賛否両論で、あなたの入力をしたいので、前スプリントツールを試したことがありません。
解決
読むこのブログの記事とこれらのスライドは、何の簡単な概要のためをそれはあなたのために行うことができます。
他のヒント
リントツールは、コードレビューがミスに傾向があることを一般的な問題やエラーを発見するために有用です。私の意見では、静的コード分析を行うときに失うものは何もないということです。唯一のサイドダウンあなたは重要でない(すなわち、コーディングスタイルを推奨)であるかもしれない偽陽性や警告の多くを得るかもしれないということです。あなたはちょうど良いのフィルタリング技術を開発する必要があります。静的アナライザはまた、すべてをキャッチしていないかもしれないが、ちょっとそれはよりよい何もないよりある。
ここでSANS機関からのホワイトペーパーでは、かもしれないが興味あることです: http://www.sans.org/reading_room /ホワイトペーパー/ securecode /セキュアソフトウェア開発コード分析-tools_389する
スプリントに優れ、パースへの様々なコンパイラのために、あなたのコードがより多くの慣用的な(したがって、読みやすく、よりポータブル作るのが、およびリファクタリングが容易)。スプリントは、int型とフロートの間に暗黙のキャストとして微妙なバグを見つけることができます。スプリントメモリリークやその他のセキュリティ上の脆弱性ダウントラックます。
それを試してみてください。splint hello.c
静的アナライザは、誤報の多くを生み出すん。私はスズメよりも良いアラームを与えることを防ぐを発見しました。これらは、私たちが静的解析のために使用する2つあります。
典型的な誤警報と良いアラームの例があります:
bar (char **output)
{
*output = malloc(100);
}
foo()
{
char *output=NULL;
bar(&output)
}
機能バーでは、ポインタ出力用メモリリークを報告します。関数fooでは、機能バーが呼び出されたときにNULLデリファレンスを報告します。しかし、それにもかかわらず、誤警報の数百の間に真のアラームを見つけるの間でその選択肢ます。
だから我々は、コードレビュー時に見逃すことができ、メモリリークを見つけることができます。防止のライセンスは高価であり、アラームがfalseにマークされたら、それはその後の解析に表示されますdoesntの。したがって、あなたは、スプリントが同じことをした場合に見つける必要があります。
このツールは、おそらくエラーが発生することができ、パターンを探します。利点は、ツールが潜在的なバグを見つけることで、欠点は、それが同様に偽陽性の全体の束を見つけることである。