JavaScript Analyzer(以下JSA)は,HTMLから切り出されたJavaScript(群)を入力として,document.write()の引数の展開やHTMLオブジェクトのプロパティに代入されるURI文字列の抽出を行なうJavaScript解析モジュールです。

概要

Webアプリケーションの構築・保守を支援する一つの方法として、サイト構成の可視化が行なわれますが、サイト構成の構築には各ページが参照しているURIが必要となります。多くのWebアプリケーションでは機能の充実と操作性向上のためにJavaScriptが利用されており、URIがHTMLとして記述されるだけでなく、HTMLが参照するJavaScript内に記述される場合もあります。また、ページ記述(HTML)とJavaScriptとの間には相互に強力な依存関係があるため、正しくサイト構成を把握するためには、HTMLだけでなく、JavaScriptのパーザも必要であり、これらを同時に解析する必要があります。

JSAは、JavaScriptの解析機能を提供するとともに、この機能をHTML解析ツールから利用するためのAPIを提供しています。JSAでは、JavaScriptが持つ変数の概念や分岐・ループ構造を考慮してより高精度の解析を行なうことを目指しています。

JSAが想定している、サイト構成解析アプリケーションからの利用手順は以下の通りです。

  1. サイト構成解析アプリケーションで解析対象のHTMLファイルをHTMLの文法に従って解析する。
  2. HTMLに記述されているJavaScriptの文字列を切り出す。HTMLから利用されるJavaScriptは、<script>タグによる直接記述、<script>タグからの外部JavaScriptファイルの参照、HTMLタグのイベントハンドラ属性として記述されている。
  3. 切り出されたJavaScript文字列をJSAに入力する。
  4. document.write()の引数として出力されたHTMLの部分文字列をもとのJavaScriptに置き換えることにより、document.write()によるHTML出力がなくなるまで、1から3を繰り返す。
  5. HTMLタグのプロパティへの代入として出力されたURIのリストを用いて、HTML解析の結果と合わせてサイト構造を構築する。