SharedVariableChecker2
(共有変数自動解析ツール)
競合を見逃すな!
変数アクセスをビジュアライズ

  • 対象業界:自動車/FA/家電/医療/OA等
  • 対象部門:組込みソフトウェア開発
課題
  • 変数干渉の解析を行うには、ソフトウェア上の変数へのアクセス方法、経路を解析した資料によるレビューが不可欠となる
  • 手作業での抜け漏れによる見落としや変数干渉のレビューをするための資料作成に膨大な準備工数がかかる
解決

共有変数自動解析ツール
SharedVariableChecker2がレビュー用ドキュメントを
自動生成、変数干渉のレビューを効率化し、課題を解決します。

「SharedVariableChecker2」は、プログラム解析/仕様書作成ツール CasePlayer2 との連携で使用するツールで、Cソースを静的解析し、タスク、関数からの同一グローバル変数へのアクセスを可視化。変数の競合状態や関連性を図表化し、不具合リスク箇所の特定に寄与します。
共有変数自動解析ツール SharedVariableChecker2
SharedVariableChecker2の特徴

「SharedVariableChecker2」表示画面

「SharedVariableChecker2」表示画面
  • 特長 1
    変数の競合状態や関連性を図表化し、不具合リスク箇所の特定に寄与
    Cソースを静的解析し、タスク、関数からの同一グローバル変数へのアクセスを可視化し、工数削減を狙います。
  • 特長 2
    CasePlayer2の解析情報から、変数の競合状態のツリー図、レポートを生成
    ガイオのプログラム解析/仕様書作成ツール「CasePlayer2」を使用して作成した解析情報から、各関数がまたがってアクセスする同一グローバル変数の競合状態をレポートします。不具合の原因となる割り込みによる変数の予期しない参照/変更を早期発見できます。
  • 特長 3
    統合化された変数ブラウザにより、分かり易く変数のアクセス状態を可視化
    選択した変数や関数がどの関数を経由してアクセスされているかをリストやグラフ形式で表示し、容易に確認できます。

    【主な変数解析情報】
    ●複数の異なる割り込みレベルから書き込まれている
     変数
    ●複数の異なる割り込みレベルから呼び出されている
     関数
    ●コアが違う最上位関数から読み書きされる変数
    ●参照のみ(書き込みの無い)の変数
    ●書き込みのみ(参照の無い)の変数
    ●宣言のみの変数
    ●どこからも呼ばれない関数

SharedVariableChecker2 V3.0 新機能紹介

V3.0「新機能①」マルチコア間 競合変数 解析機能

【マルチコア(コア間)での競合変数 解析機能】


従来機能であるタスク間の変数競合の解析に加え、コア間での競合変数を抽出できるようになりました。

解析可能な競合変数の種類は以下の4つです。
 A:複数のコアから書き込まれる外部変数
 B:特定のコアで書き込まれる外部変数の中で、他のコアで複数回読み込まれる外部変数
 C:特定のコアで書き込まれる外部変数の中で、他のコアで読み出し後に書き込まれる外部変数
 D:特定のコアで読み込まれる外部変数の中で、他のコアで複数回書き込まれる外部変数
V3.0「新機能①」マルチコア間 競合変数 解析機能

【各指摘の概要(指摘A)】


指摘Aは、「複数のコアから書き込まれる変数」です。
複数のコアから書き込まれる外部変数を抽出します。
不具合の原因となるアクセスパターン「指摘A」の発生例

【各指摘の概要(指摘B)】


指摘Bは、「特定のコアで書き込まれ、他のコアで複数回読み込まれる変数」です。
特定のコアで書き込まれる外部変数の中で、他のコアで複数回読み込まれる外部変数を抽出します。
不具合の原因となるアクセスパターン「指摘B」の発生例

【各指摘の概要(指摘C)】


指摘Cは、「特定のコアで書き込まれ、他のコアで読み出し後に書き込まれる変数」です。
特定のコアから書き込まれる外部変数の中で、他のコアで読み出し後に書き込まれる外部変数を抽出します。

不具合の原因となるアクセスパターン「指摘C」の発生例

【各指摘の概要(指摘D)】


指摘Cは、「特定のコアで書き込まれ、他のコアで読み出し後に書き込まれる変数」です。
特定のコアから書き込まれる外部変数の中で、他のコアで読み出し後に書き込まれる外部変数を抽出します。
不具合の原因となるアクセスパターン「指摘D」の発生例

V3.0「新機能②」不要関数の自動除外機能

【不要な関数を自動で除外する機能】


変数競合の解析時間をスピードアップし、解析精度を高めました。 最上位関数に設定される関数の関数ツリーから呼ばれることが無い関数を自動で除外関数として登録することで、本機能を実現しています。

V3.0「機能強化」 解析条件情報

【解析条件情報での出力情報追加】


ポインタ接続の確からしさをレポート出力でご確認いただける様になりました。
解析条件情報にて、関数および変数のポインタ接続情報として、ポインタ接続した理由を出力し、ご確認いただけます。

ポインタが接続する理由として、以下の項目をレポート出力で表示します。
 ・ユーザーの設定により接続した変数
 ・グローバル変数に対して初期値で接続される変数
 ・関数のローカル変数に対して初期値で接続される変数
 ・関数のにてポインタ引数に接続される変数
 ・関数のにてポインタ代入される変数
SharedVariableChecker2の機能
  • 機能 01

    変数アクセス解析

    • 1つの変数に着目した変数のアクセス状況を表示します。対象シンボル(変数名)を一覧表示し、その中から1つのシンボルを選択すると、書き込み・読み出し等のアクセス情報と関数ツリーをグラフ表示します。不具合の原因となる可能性がある変数アクセスパターンをまとめた「指摘」オプションを選択することで、競合状態を表示する対象シンボル(変数名)をフィルタリングすることができます。
    • 変数アクセス解析
  • 機能 02

    関数アクセス解析

    • 1つの関数がコールされる経路を表示します。対象シンボル(関数名)を一覧表示し、その中からシンボルを選択すると、関数ツリーをグラフ表示します。不具合の原因となる可能性がある複数の割り込みレベルからコールされる可能性のある関数を指定して表示することもできます。
    • 関数アクセス解析
  • 機能 03

    読み出しのみの変数、書き込みのみの変数を検出

    • 対象シンボルを一覧表示し、その中からシンボル(変数名)を選択するとアクセス情報と関数ツリーをグラフ表示します。関数グラフには、読み出しのみの変数へのアクセス全ツリー、書き込みのみの変数へのアクセス全ツリーを表示します。
    • 読み出しのみの変数、書き込みのみの変数を検出
  • 機能 04

    割り込み禁止状態の解析と表示が可能

    • 割り込み禁止関数と許可関数の間にある処理を解析し、割り込み許可状態に基づいた変数の競合を検出します。競合アクセスのある変数のうちで、割り込み禁止区間でのアクセス状態は、破線で示されます。
    • 割り込み禁止状態の解析と表示が可能
  • 機能 05

    ポインタ経由でのアクセス状態を表示

    • ポインタ変数を経由してアクセスされる変数、関数の場合、ポインタに割り当てられる可能性のある実体を設定することで、これらの競合を検出することが可能です。
    • ポインタ経由でのアクセス状態を表示
  • 機能 06

    関数や変数のアクセス状態をCSVファイル、PDFファイルにレポート出力

    • 選択した関数や変数のアクセス経路を示すレポートを自動作成します。各変数の解析情報の一覧(CSVファイル)や、関数グラフ(PDFファイル)を出力可能です。

      【解析結果出力】
      ・変数アクセス解析   ・関数アクセス解析  ・読み出しのみの
       変数
      ・書き込みのみの変数  ・宣言のみの変数   ・どこからも呼ばれ
       ない関数

      【画面リスト出力】
      ・解析条件  ・シンボル情報リスト  ・アクセス情報リスト

      【PDFファイル出力】
      ・関数グラフ
    • 関数や変数のアクセス状態をCSVファイル、PDFファイルにレポート出力