C-STAT内部データベースのフォーマットについて

テクニカル・ノート 210218

アーキテクチャ:

All

コンポーネント:

general

更新日:

2021/06/22 3:36

はじめに

C-STATでは、永続データ SQLite3 データベースに格納しています。このデータベースには、icstat.exe 実行IAR Embedded Workbenchによる前回の解析メッセージ抽出など行わず直接クエリを送ることができます。

このテクニカルノートではデータベースからメッセージ抑制情報を直接入手したい場合有用ないくつかのデータベーステーブルについて説明します。

免責事項

  • こでの説明はC-STAT バージョン 2.1.0 に対するものです。
  • フォーマットはC-STAT の今後のバージョンで変更されることがあります。

 

解説

C-STAT 内部では、メッセージのことwarningsチェックのことpropertiesと呼んでいます。特に言及しない限り、フィールド型はすべて string です。

warnings テーブル

通常メッセージテーブルは以下のようになっています。

カラム 意味
warning_id (integer) メッセージの固有番号。メッセージ検出インクリメントされます。
warning_hash メッセージ固有ハッシュ
property_id チェック内部ID
property_alias チェック名。同一チェックが複数ある場合はカンマで区切ます。 
file_name メッセージが検出されたファイルの絶対パス
src_name メッセージが検出された解析ソースファイルの絶対パス
fn_hash メッセージが検出された関数(またはグローバルスコープ)の固有ハッシュ
line_id 抽象構文木(AST)のノードにメッセージをマッピングするための内部情報
implied_id ASTのノードにメッセージをマッピングするための内部情報 
line_num メッセージの行番号 
iar_seq メッセージの連続行番号。基本的にすべてのインクルードが1つのファイルに追加された場合メッセージが持つ行番号メッセージの抑制に使用されます。
msg メッセージの情報出力
encoded_trace トレース情報(ある場合
full_trace 不使用
severity メッセージの重要度 - 低・中・高
column_num メッセージのカラム番号

link_warnings テーブル

link_warningsテーブルには、リンク warningsを表すテーブルが格納されています。カラムはwarningsテーブルと同じです。 

注意:link_warningsテーブル内の情報は、各リンク解析の実行後に削除され、再配置されます。これによりメッセージの順番を変えることができます。

warnings_meta テーブル

warnings_meta テーブルは、抑制されたメッセージの情報を保持します。

カラム 意味
warning_hash メッセージのハッシュ。warningsまたはlink_warningsテーブル内のハッシュと一致します。
meta_key 常に status
meta_value 常に 1

suppression_directives テーブル

このテーブルは、抑制コメントプラグマディレクティブの両方、あるいはどちらか一方が指定されているプロジェクト内のすべての場所の情報を保持します。

カラム 意味
suppress_id (integer) ディレクティブの固有ID。ディレクティブ検出インクリメントされます。
property_id ディレクティブで使用されるチェック名
iar_seq_start

ディレクティブの連続行番号の開始番号。warningslink_warningsテーブル iar_seq 番号と相関します。

iar_seq_end ディレクティブの連続行番号の終了番号。warningslink_warningsテーブル内の iar_seq 番号と相関します。
col_start 不使用。常にゼロ 
col_end 不使用。常にゼロ 
line ディレクティブが配置されたファイルの行番号
file ディレクティブが配置されたファイル
src ディレクティブが見つかった時の解析ソースファイル

ヘッダファイルにディレクティブがかれてい場合そのヘッダファイルが含まれているソースファイル毎にテーブル内でエントリが2以上起こることがあります

まとめ

C-STATメッセージ抑制情報は、C-STATの内部データベースから直接入手できます。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。