FAQ

QA・C/QA・C++

警告メッセージに関するに関するFAQ

QQA Cの一部のメッセージの先頭に付与されている記号([U]や[C])は何を意味しているのでしょうか?

FAQ ID:5

A
QA Cの一部のメッセージの先頭に付与されている記号は、QA Cの次のグループ の略称を示しています。 これらのグループは、ISO C言語規格の未規定の動作、未定義の動作、処理系定義の 動作、翻訳限界、文法違反、言語拡張に関わるメッセージになるため、 他のメッセージと区別するために記号が付与されています。

表1 QA C解析メッセージ記号
記号 内容
[U] 明記された未定義の動作
CMA 未定義
[S] シンタックスエラー
[C] 標準制約違反
[E] 言語拡張
[I] 処理系定義
[u] 明記されていない未定義の動作
[L] 最小限界値を超過
[Q] QAC の設定に不備がある
[C99] C90 では定められておらず C99 で定められている文法が使用されている


なお、データフロー解析には、特定のデータフロー問題の識別メッセージに対する状況を示す語として、次の5つの用語が使用されます。

表2 データフロー解析メッセージ記号
記号 内容
<C> Constantの略となります。
厳密に言うと、Constantメッセージはデータフロー解析メッセージではありません。 これは、制御フロー解析または変数のステータスの解析を行わずに推定できる問題を検出します。
<D> Definiteの略となります。
Definiteメッセージは、明らかに起こる問題を検出します。
<A> Apparentの略となります。
Apparentメッセージは、コードの別の場所にある、条件付き演算(? :)、if文またはswitch文に関連付けられた特定のパスが常に冗長ではない場合に起こる問題を検出します。
<S> Suspiciousの略となります。
Suspiciousメッセージは、ループ構造の実行中に、ある条件が実現しない場合に起こる問題を検出します。
<P> Possibleの略となります。
Possibleメッセージは、「データフロー解析エンジンの制約」または「コードがより決定的な結論を導けるように記述されていない」ことが原因で、不確実になっている問題を検出します。
※データフロー解析については、「データフロー解析(DFA)とはなんですか?」をご覧ください。

回答を閉じる

Q注釈付きソースを表示すると、レベル99の'Unknown error'が表示されるのはなぜですか?

FAQ ID:6

A
errファイルに生成されたメッセージ番号がメッセージ・ファイル(qac.msgなど)に存在しない場合に、この状況が発生します。MISRAモジュー ル、またはユーザ・メッセージ・ファイルを使用するその他の2次解析を使用している場合、メッセージ・パーソナリティが正しく設定されており、ユーザ・ メッセージ・ファイルへのパスが正しいことを確認してください。
2次解析の設定に関して詳しくは、ユーザ・ガイドを参照してください。
製品をコマンドライン上で実行する場合は、ビューア、errdspなどの第一パラメータに正しくQACまたはQACPPを指定するようにしてください。

回答を閉じる

Q9番のレベルに属する警告メッセージを非表示にすることができません。なぜでしょうか? QA C6.2J以上/QA C++全般

FAQ ID:4

A
QA C/QA C++の9番のレベルには、解析エラーに関する警告メッセージが 分類されています。
これらの警告メッセージが表示されなかったとすると、解析が正常 に終了していないという事実に気づくことなく、QA C/QA C++の結果を レビューしてしまう可能性があります。
レビュー時間が空費されるだけでなく、間違ったレビュー結果を 導き出してしまう可能性があるため、9番のレベルに属する警告 メッセージは非表示にすることができなくなっています。

回答を閉じる

Q警告メッセージに警告箇所の情報を含めることはできますか? QA C6.2J以上/QA C++全般

FAQ ID:3

A
警告メッセージには次の情報を含めることができます。
  • 警告箇所を含むファイルの名称
  • 警告箇所の行番号(ファイル内の縦位置)
  • 警告箇所の桁番号(ファイル内の横位置)
  • 警告メッセージが属するレベル
  • 警告メッセージの番号
  • 警告メッセージの本文
  • 警告メッセージの補足文
  • 上記のうち、1 ~ 3が警告箇所の情報になります。
    QA C Version 6.2J/QA C++ Version 1.5Jより前の QA C/QA C++では、標準状態で警告箇所の情報が 警告メッセージに含まれるようになっています。
    QA C Version 6.2J/QA C++ Version 1.5J以降の QA C/QA C++では、警告メッセージに含めたい 情報を上記の中から自由に選択できるようになり ました。標準状態では警告箇所の情報が警告 メッセージに含まれないので、メッセージ・フォーマット を適宜調整してご利用ください。
    お使いのエディタがタグジャンプ機能をもって いる場合、メッセージ・フォーマットを調整する ことで、QA C/QA C++の結果から問題の発生箇所 に即座にジャンプできるようになり、利便性が 向上します。

    なお、メッセージ・フォーマットの設定方法は次の通りです。
    (専用の構文については、ユーザーズガイドをご参照ください)

    GUIから設定する場合:
      [メッセージ・パーソナリティ] の [表示] タブの
      [メッセージフォーマット] に専用の構文を用いた値を記述します。

    設定ファイルを直接編集する場合:
      -format オプション に専用の構文を用いた値を記述します。

    回答を閉じる

    Qどの警告メッセージから使い始めるのがよいのでしょうか? QAC6.2J以上/QAC++2.1J以上

    FAQ ID:1

    A
    QA C/QA C++には、それぞれVersion 7.0J/Version 2.3.1Jから critical.p_s と いう名称のメッセージ・パーソナリティ(メッセージ・フィルタ)が付属する ようになっています。
    このメッセージ・パーソナリティを使用すると、QA C/QA C++の開発元が選定 した重要な警告メッセージのみが結果に現れるようになりますので、まずは こちらでONになっている警告メッセージをご利用になることをお勧めします。

    なお、保守ユーザ様向け情報 のページでは、QA C Version 7.0J/QA C++ Version 2.3.1J付属の critical.p_s を QA C Version 6.2J/QA C++ Version 2.1J向けにした critical.p_s を公開しています。 過去バージョンからの移行がお済みでない場合は、移行準備の一環として これらのメッセージ・パーソナリティをご利用ください。

    また、同ページには警告メッセージをお選びいただくための参考資料も 公開しています。是非そちらもご参照ください。

    回答を閉じる

    Q警告メッセージのレベルは何を意味しているのでしょうか? QA C6.2J以上/QA C++全般

    FAQ ID:2

    A
    QA C/QA C++の各警告メッセージを最も粗く分類したものが、レベルになります。
    QA C/QA C++には欠番も含めて 0番 から 9番 までの10種類のレベルが定義 されています。 レベルにはそれぞれ名前が付いていますが、QA C/QA C++の結果にはレベル の番号だけが記録されるようになっています。

    レベルの番号に特に意味はありません。例えば、レベルの番号が大きいほど 重要な警告メッセージが分類されているというわけではありません。
    ただし、0番 には他の警告メッセージを補足する警告メッセージ、9番 には解析エラー に関する警告メッセージが分類されます。このため、通常は 0番 と 9番 に属する 警告メッセージをすべてONにしてQA C/QA C++を使用することになります。

    QA Cでは、同一の警告メッセージを2つのレベルに登録することができます。 この場合、[最も高い警告レベルを表示]オプション(-stオプション)を 使用することで、低いレベルと高いレベルのどちらを採用するのかを 決めることができます。

    回答を閉じる