Lattixで関数粒度の影響分析結果を一括で出力する手順

Lattix

いつも弊社Understandブログをご購読いただきありがとうございます。

今回は弊社エンジニアがお客様先や弊社テクニカルサポートにおいて、よくご質問をいただく内容について、その回答を記事にしていきたいと思います。

今回取り上げるご質問

最近お客様からのお問い合わせで、以下のようなご質問をいただきました。

「Lattixでは関数粒度において、関数間の繋がりを分析する方法はありますか。」
「直接だけではなく間接的な依存関係も含めて影響分析する方法を知りたいです。」
「Understandの影響分析は1つ1つの関数を調べるものです。テスト範囲の検討のため、影響範囲を一括で分析できる方法はないですか?」

本ブログ記事はUnderstandをメインに扱っておりますが、今回は姉妹ツールであるアーキテクチャ分析ツール「Lattix」の影響分析レポートを使い、関数粒度にて影響分析結果を一括で出力する方法について、解説したいと思います。

ユースケース

今回紹介する手順は、以下のような場合に利用すると有効と考えられます。

  • 変更設計時の影響範囲見積もり
    • ソースコードの変更前にあらかじめ影響範囲を見積もっておきたい。
    • 影響範囲が広い場合は他の変更方法も併せて検討したいため、それぞれの変更実装案の影響範囲を知りたい。
  • テスト設計時のテスト範囲見積もり
    • 関数1つ1つの影響分析を順番におこなうのではなく、一括で影響範囲を見積もりたい。
    • 人手で作成したテスト項目をレビューする際の比較資料として、ツールによる影響分析結果が欲しい。

前提

本記事執筆時の想定構成

  • Lattix: Lattix Architect 2025.1.6
    ※今回本記事で利用している機能は旧バージョンのLattixでも動作する機能のみを利用しています。
    ※Lattix 2025は、記事執筆現在(2025年11月上旬)、未だ日本語版リリース準備中となります。
  • Lattixモジュール:C/C++(Understand)
  • Understand:Understand 7.0

他の言語モジュールの場合

今回ご紹介する手順は、C/C++(Understand)モジュールにおける手順となります。
他の言語モジュールの場合もほぼ同様な手順となりますが、依存関係のフィルターで選択する依存関係の種類については、当該言語モジュール毎に合わせた種類を選択ください。

手順

影響分析手順

動画

以下で説明する手順の動画はこちらになります。

影響分析手順 (タグによる一括指定)

  1. LattixでDSMを作成します。(ファイル粒度での分析結果が出力されます。動画では本手順は省略しています。)
  2. DSMの$rootに対し、[メンバーの展開]を実施します。
  3. メニューバーの[表示]-[依存関係のフィルター]より、[依存関係の種類]Methodのみを選択し、その他の種類の依存関係のチェックは外し、[OK]を押します。
    ※今回は関数間の繋がりを把握したいため、Methodを選択しています。
  4. サブシステム”server/mpm”の配下の要素に対してタグを作成(タグ名:PLAN1)します。
    ※手順5の前にあらかじめ複数の要素をタグ付けしておくことで、複数の要素に対して一括で影響分析を実施することが可能です。
  5. メニューバーの[レポート]-[影響(UsedBy)レポート]より表示されるダイアログ(影響(UsedBy)レポートの設定画面)において、以下の通り設定をします。
項目設定値備考
ソース/コンシューマー(例)PLAN1(タグ)分析対象としたい影響元のディレクトリやファイル、関数などを選択します。
あらかじめ複数の要素をタグ付けしておき、この項目でそのタグを指定することで複数の要素を指定可能です。
ターゲット/プロバイダー(例)$rootオプションです。
影響先の分析範囲を[設定値]の範囲内に制限(フィルター)します。
$rootを指定した場合はプロジェクト全体となります。
※ 後述の[ターゲット/プロバイダー要素でフィルター]のチェックを付けた場合にのみフィルターが機能します。
すべての影響レベルチェック済直接の影響範囲だけではなく、その先の間接的な影響範囲まで分析をおこないます。
メンバーの表示チェック済ファイルよりも細かい、メンバー粒度の要素(関数や変数等)を結果に出力します。
※本チェックを付けた場合でも、結果がファイル粒度要素しか得られない場合(メンバー展開せずに分析したを含む)には、ファイル粒度要素のみ出力されます。
親要素を分析対象に含める未チェックソース/コンシューマーで指定した要素の親要素((例)関数にとってのファイル、ファイルにとってのディレクトリ)を、分析対象に含めるオプションです。
通常は未チェックですが、テスト範囲やテスト項目を検討する際など、より広義な影響分析をおこないたい場合には、チェックを入れてください。
※チェックをした場合には出力結果が想定よりも多数出力される場合があります。
ターゲット/プロバイダー要素でフィルター未チェック[ターゲット/プロバイダー]に対応したオプションです。
当該項目を設定した場合には、チェックを入れてください。
チェックを入れていない場合は当該項目の設定は反映されません。
(フィルターされません。)

ファイルへの保存方法

出力されたレポート(影響分析レポート YYYY/MM/DD hh:mm:ss)を選択し、右クリックメニューの[レポートの保存]より、選択した拡張子のレポートにて保存します。

なお、保存拡張子についてのお勧めは以下の通りです。

  • 得られた結果をGUIで開きたい場合や、とりあえず結果を確認したい場合は、xlsx(Excel 2007)形式
  • Jenkinsなどでコマンドライン実行する際はhtml形式
    (結果をアーカイブした場合や、Jenkinsからリモート参照する場合などに、どのPCからでも開きやすいため)
  • 出力結果をスクリプトで操作したい場合はxmlやxlsx形式

出力結果の読み方、加工方法

出力された結果の読み方や、出力結果をさらに読みやすくする方法については、以前公開したこちらの記事でご案内しておりますのでぜひご確認ください。

終わりに

今回はお客様からよくご質問をいただく手順について、ブログ記事にしました。
今後関連したご質問などがあった場合には、随時本記事の情報を更新していきたいと考えております。

本記事に関連するか否かに問わず、何かご不明点やお気づきの点などがございましたら、担当営業、またはLattix、SciToolsのテクニカルサポートまでお問い合わせください。

今後もLattix、Understandをよろしくお願いいたします。