解析精度

豊富な開発言語に対応、精度の高い解析が可能
Understandは、幅広い開発言語で書かれたソースコードに対して、より最新の言語規格やいくつかのフレームワークを含めた解析結果を提供します。
またC/C++においては、解析設定を効率化するための各種プロジェクトファイルなどのインポートにも対応しており、関数ポインターなどGrepなどでは検出が難しい依存関係を含む解析モードもあります。

解析対象言語

  • Ada
  • Objective-C/C++
  • FORTRAN
  • Python

  • Assembly
  • C#
  • Java
  • VHDL

  • C/C++
  • VB.NET
  • Pascal
  • Web (PHP, HTML, CSS, JavaScript, TypeScript)

※ 対象言語によって、利用できる機能が異なります。体験版でお試しください。
※ C/C++、Objective-C/C++、C#、VB.NET、Java、Python、Webが弊社テクニカルサポートの対象です。

解析可能なフレームワーク

  • Node.js
  • jQuery
  • Java Spring
  • Qt

プロジェクト作成の効率化

Understandでは解析対象のファイルやインクルードファイル、マクロの情報を各種設定ファイルから読み込み、プロジェクトを効率的に作成することが可能です。
下記のファイルのインポートに対応しております。

統合開発環境のプロジェクトファイル

次のような統合開発環境のプロジェクトファイルのインポートが可能です。
Understandのプロジェクト作成時に、各種統合開発環境のプロジェクトファイルをインポートすることで、解析対象のファイルやコンパイル設定を追加することができます。C/C++(Strict)モードの設定にはこれらのインポート機能が便利です。

  • Keilソリューションファイル(.uvprojx)
  • Visual Studioソリューションファイル(.sln)
  • Green Hills MULTIプロジェクトファイル(.gpj)
  • Renesas CS+が出力するRenesas共通プロジェクトファイル(.rcpe)

CMakeのコンパイルデータベースファイル

CMakeプロジェクトのコンパイルデータベースファイル(compile_commands.json)のインポートが可能です。
コンパイルデータベースファイルをインポートすることで、解析対象ファイルやコンパイル設定を追加することができます。C/C++(Strict)モードの設定にはこのインポート機能が便利です。
コンパイルデータベースファイルのエクスポートに対応している統合開発環境は以下です。(開発元調査*開発元ページへリンクします。)

  • Bear
  • IAR Embedded Workbench など

C/C++(Strict)モード

C/C++言語の詳細な設定(C/C++(Strict)モード)では、以下のような依存関係の解析がサポートされています。
C23, C++23までの言語規格に対応しています。

  • 関数ポインターによる関数の呼び出し
  • 関数テーブル(ジャンプテーブル)
  • ポインター変数のアドレス操作
  • コールバック関数
  • ダブルポインタ など
※C/C++(Strict)モードでの解析には、十分なインクルードパス/マクロ設定をおこなう必要があります。上記の統合開発環境のプロジェクトファイルやCMakeのコンパイルデータベースファイルをインポートすることで、これらインクルードパス/マクロ設定を開発環境から引継ぎ、設定を簡略化できます。

関数ポインターの解析

C/C++(Strict)モードで、関数ポインターによる関数の呼び出しやポインター変数のアドレス操作など、ポインター経由の依存関係の解析がサポートされております。これらの依存関係は、Callsグラフなどのグラフィカルビューでも表示できます。

【サンプルコードとUnderstandによる解析結果】
関数ポインターによる関数の呼び出し
ポインター変数のアドレス操作
関数テーブル(ジャンプテーブル)
コールバック関数
ダブルポインタ

クラス・構造体のメンバーオブジェクトの解析

C/C++(Strict)モード解析機能では、クラスや構造体のメンバーオブジェクトの解析が可能です。メンバーオブジェクトの参照情報からメンバーオブジェクトが属している変数を特定し、インスタンスごとに、構造体変数とメンバー変数を関連付けたリファレンス情報が取得できます。 C++オプション [メンバ変数にユニークなエンティティを割り当てる]をオンに指定されている場合に、"構造体変数.構造体のメンバー変数"として連結した情報で解析が可能です。 下図の例では、ソースコード4行目の参照されている構造体のメンバー変数が属している変数f1.b1を辿れることがわかります。

クラス・構造体のメンバーオブジェクトの解析

ソースコード解析ツール Understandに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
scitools-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。