FAQ

QA・C/QA・C++

QA·C/QA·C++に関する

ID.

Q. データフロー解析(DFA)とはなんですか?

A.


データフロー解析(DFA)は、関数内で変数がとり得る値の範囲や、
if 文等の分岐による処理の流れを考慮した解析で以下のような問題点を検出します。
また、QA・C/QA・C++では、一部のメトリックスの計測がDFAの実施を必要とします。

[DFAで検出される問題点]
・配列の領域外アクセス
・ゼロ除算
・NULLポインタアクセス
・オーバーフロー
・値が設定されていない変数の使用
・常に「真」または「偽」になる式
・到達不能なコード
・無限ループ
・別々のオブジェクトを指すポインタ同士の比較
・別々のオブジェクトを指すポインタ同士の差
・過剰な右または左シフト
・return文が欠落しているコード
・負の値を符号なし型に代入しているコード
・冗長な代入式
など

DFAはQA・C 6.2J、QA・C++ 3.0J で導入され、バージョンアップと共に改良されてきております。特に QA・C では QA・C 8.0J において大幅に改良されました。これに伴って QA・C 8.0J 以降では、DFA によって検出される警告メッセージが変更になっています。

QA・C 7.2.3J 以前のバージョンではDFAは常に実施されていましたが、QA・C 8.0J 以降および、QA・C++ では DFA は標準状態では実施しない設定になっておりますのでご注意下さい。

<< QA·C/QA·C++に関するに関するFAQ一覧へ戻る