Understand 7.0の新機能・改善点


1. Visual Studio Code(VSCode)ワークフローにUnderstandをシームレスに統合

Microsoftが提供する無償のコードエディタVisual Studio Codeに対応したUnderstandのVSCode拡張機能が提供されました。この機能拡張により、VSCodeとUnderstandの双方向から該当のファイルや関数にジャンプすることが可能になりました。また、VSCodeからUnderstandにジャンプした先で、選択したエンティティ(ファイル、関数、変数など)に関連する情報やメトリクス、グラフを連動して表示できるようになりました。加えて、VSCodeからUnderstandの解析コマンドを呼び出して解析を実行し、Understandの解析エラーや警告を確認できるようになりました。

2. Java Springの解析サポート

解析対象に、Springフレームワークが追加されました。以下について、Dependency Injectionの依存関係などの解析が行えるようになりました。
  • Dependency Injection
    • Bean定義
      • ステレオタイプアノテーション
      • @Beanメソッド(JavaConfigクラスに記述)
    • インジェクション
      • コンストラクタインジェクション
      • セッターインジェクション
      • フィールドインジェクション
  • AOP(Aspect Oriented Programming)
  • JPA/Hibernate

3. 関数などの概要説明を生成AI機能で生成

AI Description Generator(アルファ版)により、Understandの解析結果と生成AIを統合し、要素(ファイルクラス、関数など)の概要説明を生成するようになりました。生成された説明は、Understandの情報ブラウザーとアノテーション(注釈)に表示されます。

 
  • AI分析は、Ollama(LLM)を使用してLlama3モデルをローカル環境で実行
  • セットアップスクリプトの実行には、インターネット接続が必要
  • 日本語モデルのインストールとプロンプトの日本語設定により、日本語の概要説明も生成可能

4. Shared Tasks(割り込み干渉)の可視化グラフの機能強化

 Understand 6.3で対応した共有変数の可視化(割り込み干渉)グラフに下記の機能が追加されました。
  • コアの情報を追加
  • マクロを割り込み排他制御として使用可能
  • 構造体のメンバー変数に対応
  • グローバル変数を起点にした割り込みを表現

5.変数の変化や影響先を追跡できるAssignments/Assigned Toグラフを追加

C/C++のStrict解析で、変数の割り当て情報を表示するAssignments/Assigned Toグラフが追加されました。変数がどこで参照され、どのように変化していくのか、その影響先を追跡できるようになりました。変数が割り当てられた時に関数が関与している場合に、関数名が表示されます。

6. Renesas、Green Hillsプロジェクトのインポート機能に対応

Green Hills MULTI、Renesas CS+プロジェクトのインポートをサポートしました。Understandのプロジェクト作成時に、各種統合開発環境のプロジェクトファイルをインポートすることで、解析対象のファイルやコンパイル設定を追加することができます。

7. デバック時の要素のリスト管理、分類などに役立つリストブラウザーを追加

情報ブラウザーとシームレスに統合されており、分析したい参照や参照ツリーをクリックすることで、リストを簡単に作成できるようになりました。色付きフラグを活用して参照を分類して追跡できます。 デバッグだけでなく、リファクタリングやコードレビュー、影響分析でも利用可能です。

8. 機能安全認証取得

Understandは、第三者認証機関であるTÜV SÜD社よりISO 26262、IEC 61508、EN 50128に準拠したツールとして認証を取得しました。
  • 認証書に記載のビルド(ハッシュ値)は、「Understand 6.3 Build 1136(英語版)」のみです。 Understand 6.3の正式日本語版は、Build 1139です。
  • 証明書の記載のビルドに日本語版は含まれていませんが、違いは言語パッケージのみであるため、言語パッケージが機能安全性に影響を与えないことを開発元で確認しています。
  • 利用するプロジェクト側で「証明書に記載された特定のビルド(ハッシュ値)のみ」との制約がある場合には適用できません。
  • 「Understand 6.3 Build 1136」以降のすべてのビルドも、内部プロセスは同じで有効であるため、適用されることを開発元で確認していますが、Understand 7.0(日本語版)を含めた、再認証取得の予定は現在検討中となっています。

9. プロジェクトの複雑さを直感的に把握できるファイルの依存関係グラフを追加

プロジェクトの複雑さを示す、特徴的なグラフが新たに搭載され、ソースコード内のすべてのファイルの依存関係を視覚的に確認できるようになりました。

10. 強化された視覚化機能とユーザビリティの改善

ダッシュボードの改善

ダッシュボード(プロジェクト概要チャート)ではプロジェクトの規模の概要が示され、プロジェクトの解析結果から指標値で判定されるようになりました。また、各機能へのショートカットが提供され、該当画面へ遷移しやすくなりました。

提案機能の追加

Understand の解析結果から、迅速に解決する方法を提示するようになりました。構文チェック ブラウザー、プロジェクトの概要グラフ、依存関係グラフ、設定ダイアログなどへのリンクが表示され、各機能へアクセスできます。

強化されたインタラクティブ レポート

インタラクティブ レポートで表、グラフ、チャートが表示可能になりました。また、実行結果をPDF、HTML、テキスト形式でエクスポートが可能になり、さらに、コマンドラインからもインタラクティブ レポートを実行できるようになりました。

カスタム チャート対応

Understand Python API を活用し、メトリクスによる分析結果から、カスタム チャートを表示できるようになりました。

11. プラグイン機能の拡張、新規追加

プラグインマネージャー

プラグインは、Understandに機能を追加する拡張機能です。プラグインは、以前からも提供されていましたが、手動でインストールする必要がありました。このたびのバージョンで搭載された、プラグインマネージャーでは、GUI上でプラグインの内容を参照、有効化/無効化できるようになりました。特定のニーズに合わせて簡単にカスタマイズできるようになりました。

メトリクス プラグイン

さまざまなカスタム メトリクスを簡単に導入できるようになりました。

12. QtフレームワークやC++23などサポート対象を拡充

Qtシグナルとスロットの接続解析

Qtの下記の解析に対応しました。

  • Qtライブラリのinclude によるQt独自マクロ・型の認識
  • Qt独自キーワードの認識
  • signal/slot/connectの解析

C++23、C# 12、Java21やPHP 8.3など、サポート対象を拡充

  • C++23、C23のサポート
    • C/C++(Strict)解析で、C++23, C23に対応しました。

  • C# 12のサポート
    C# 12で拡張された下記の機能の解析に対応しました。
    • プライマリ コンストラクター
    • コレクション式
    • ラムダ式のデフォルト引数

  • Java 21のサポート
    Java 21で正式追加されたレコード パターンに対応しました。
    また、switch を使用したパターン マッチングにも対応しました。

  • PHP 8.3のサポート
    PHPの解析は、バージョン 8.3まで対応しました。

  • インポートプロジェクトの改善
    Microsoft Visual Studio 2022 プロジェクトのインポートに対応しました。また、C# プロジェクトのインポート設定で、Visual Studio プロジェクト側で設定している.NET Framework のバージョンを参照できるようになりました。

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

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

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

    03-4405-7853

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

お問い合わせ

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