web-dev-qa-db-ja.com

cppcheckのルールセット

Cppcheckを使用すると、独自のルールファイルを作成できますが、cppcheckの機能がどれだけ公開されているかはわかりません。

[〜#〜] jsf [〜#〜] または [〜#〜] misra [〜#〜] ルールを適用するセットに取り組んでいる人はいますか?

34
Martin Beckett

すべてのMISRA/JSFルールとディレクティブをcppcheckルールとして実装することはできません。ほとんどの場合、特定のC言語の機能と構造を制限する単純なもの、またはスタイルに関連するもの(頭に浮かぶもの:./の前後のスペース)のみです。 ->、1行の引数の数、メモリにアクセスするさまざまな方法を提供するための共用体の使用、charの前のunsigned/signedの存在など)。

ユーザー Ira Baxter cppcheckに触れる別の質問で コメント にかなり釘付けになりました:すべてをパターンとして表現/簡略化できるわけではありません。パターンに依存するカスタムルールの場合は、たとえばtypes(eg sizeof()on types)に関連する、より高いレベルの問題の処理と検出を困難にします。 ;型表現として使用されるトークン(typedef、列挙型)を解析して収集する必要があります)継承(例:派生クラスを含むクラス、仮想および非仮想の両方として使用)、およびscope。それらはcppcheckにハードコードする必要があります(いつでもcppcheckをフォークできます...)

いずれにせよ、MISRA(またはJSF)のルールに触れたことはありますか?これはプロジェクトの要件ですか?そうでない場合は、MISRAガイドラインのコピーを入手して(すでにJSFガイドラインを持っています)、PCREパターンを使用して実装できるガイドラインを確認できます。それが要件である場合は、MISRA/JSFガイドラインをチェックし、両方のツールを使用する商用製品に「投資」することをお勧めします。

最後の注意:すべてのMISRA/JSFルールが必要なわけではなく、多くのツールではそれらのごく一部が除外されています。

11
johnwait

私の知る限り、ドキュメントを見ると、かなり露出しているように見えます。 http://cppcheck.sourceforge.net/manual.pdf

1
DTSCode

CppcheckはMISRAをサポートしています。サポートされているルールの概要は次のとおりです。 サポートされているMISRAルール

1
orbitcowboy