米Facebook、抽象解釈を土台としたコード解析ライブラリ「SPARTA」を公開

 米Facebookは2月20日、静的コード解析構築のためのオープンソースライブラリ「SPARTA」を公開した。抽象解釈を土台とし、簡単に高度な解析を実行できるツールを目指すという。

 抽象解釈はコンピュータプログラムの意味論についての近似理論で、ソフトウェアの静的な解析や検証の土台的なフレームワークとなる。Facebookは自社ツールにおける抽象解釈の利用を勧めており、SPARTAはその一環としている。

 これまで、企業が使うことができる抽象解釈ベースの静的解析ツールを構築することは専門知識が必要で難しかったが、Facebookの開発チームはシンプルなAPIを利用することで簡単にしたという。有限束などの重要なデータ構造を備え、ソフトウェアコンポーネントはC++で作成した。抽象解釈の複雑な実装をカプセル化することで、簡単にアセンブルして運用環境レベルの解析ツールを構築できるという。

 FacebookのAndroidアプリ向けバイトコードオプティマイザ「ReDex」のレジスタアロケーターをこれまでのコードフロー解析フレームワークからSPARTAに切り替えたところ、60%の高速化が図れたという。また大規模なアプリでのレジスタアロケーションを実行時のメモリの使用量も、約90%縮小できたとしている。

 また、SPARTAに実装したアルゴリズムやデータ構造は汎用性が高く、言語非依存である点も特徴としている。

 SPARTAの対応プラットフォームはmacOSおよびLinuxで、利用にはBoost 1.58以上が必要。ライセンスはMIT License。

SPARTA
https://github.com/facebookincubator/SPARTA