Atlasの力を引き出す (7): 独自のアナライザを書く — 1
カスタムアナライザはAtlasのプラグインであり、起点はAtlasが提供するサンプルプロジェクトです。
このシリーズでは、Atlasの基礎であるグラフ表現、クエリ言語、強力な可視化機能を見てきました。基本的な解析についても、Atlasを使って取り上げました。その過程で、これらの機能を組み合わせ、特定のソフトウェア解析タスクに合わせたカスタムアナライザを作成できる可能性に触れてきました。
いま、すべてを一つにまとめるときです。最後の2つの記事では、Atlasを使ってカスタムのソフトウェアアナライザを設計し実装する方法を、より詳しく見ていきます。このツールセットの可能性を十分に引き出すための、実践的な手順に入りましょう。
Atlasプラグインとしてのソフトウェアアナライザ
Atlasのカスタムソフトウェアアナライザは、プラグインとして開発します。これにより、特定の解析の必要に合わせて機能を拡張できます。始めやすくするため、Atlasはサンプルのプラグインプロジェクトを提供しています。インポート手順は次のとおりです。
- Atlasのインターフェースで File -> New -> Other へ移動します。
- ポップアップ画面で Atlas カテゴリを見つけ、Sample Atlas Plug-in Project を選択します。プロジェクトはワークスペースに配置され、Project Explorerビューからアクセスできます。
- プロジェクトに適した名前を付けます。必須ではありませんが、他のツールチェーンとの一貫性と互換性を確保するため、弊社は
com.<organization_name>.<project_name>のような命名規則の使用を推奨します。
サンプルプロジェクトが用意できれば、カスタムソフトウェアアナライザの構築を始められます。
Atlasプラグインの構造

Atlasプラグインの仕組みを理解するため、サンプルのAtlasプラグインプロジェクトの構造を分解します。サンプルプロジェクトには、通常、5つのクラス — Activator、CallGraphAtlasScript、CallGraphAtlasSmartView、DataFlowWithinFunctionSmartView、TypeOfSmartView — があります。サンプルのAtlasプラグインプロジェクトでは、3つのスマートビュークラスを1つのカテゴリにまとめることができます。これについては後で取り上げます。まず Activator クラスと CallGraphAtlasScript に注目します。
Activatorクラスは、プラグインマニフェストとともに、プラグインをAtlasツールチェーンの残りの部分と結び付けます。このクラスは、プラグインのライフサイクルを初期化し管理する役割を担い、Atlasとシームレスに統合されるようにします。目的が基盤にあるため、意図しない支障を避けるよう、このクラスを変更しないままにすることを弊社は推奨します。CallGraphAtlasScriptは、記事の第2部で主に注目する箇所です。このスクリプトは、Atlas Shellで実行したAtlasクエリを、プラグインとして組み込めるモジュール化されたコードへ変換する方法を示します。このスクリプトに注目することで、解析を、Atlasのグラフ表現とクエリ機能を活用する再利用可能なコンポーネントへカプセル化し、統合と拡張をしやすくする方法を学べます。
最後に、プラグインの依存関係を管理する MANIFEST.MF と plugin.xml があります。これらのファイルにより、使用したい外部ライブラリを任意にインポートでき、アナライザの機能を拡張できます。
Atlasプラグインは、Javaとシームレスに統合される埋め込みドメイン特化言語(eDSL)で書かれています。この統合により、Javaライブラリを活用してプラグインを強化でき、高度なソフトウェア解析ツールを構築するうえで比類のない柔軟性と汎用性が得られます。たとえば、Atlasの解析機能とSAT4JのようなSATソルバーを組み合わせて、実行可能性チェッカーを実装できます。これにより、強力な問題解決の可能性が開きます。あるいは、Atlasの中で独自のカスタムソリューションを開発することもできます。可能性に限りはありません。
この記事では、Atlasプラグインの要点を確認しました。結びの節ではスクリプトをより深く掘り下げ、独自のカスタムアナライザの書き方を見て、手順をより詳しく理解します。
結び: 独自のアナライザを書く — 2
ご質問、または修正のご希望はありますか?
ありがとうございます。
このページについての内容を受け取りました。
