動作環境
ここで紹介するメトリクスツールの動作には、以下の構成要素が必要となる。
- VisualWorks (7.8 with じゅん for Smalltalk)
- make (GNU Make 3.81)
- gcc (4.2.1)
- awk (20070501)
- javac, java (1.7.0_09)
- Perl (5.12.4)
- PHP (5.3.15)
- Python (2.7.2)
- ruby (1.8.7)
- sh (GNU bash 3.2.48)
ここで紹介するメトリクスツールの動作には、以下の構成要素が必要となる。
必要なファイルは、上記アーカイブ(MetricsTool.zip)にまとめている。その内容は以下の通りである。
Smalltalkで実装されたSynapseScript処理系のプログラム。VisualWorksで読み込むもの。
メトリクスプラグインが収められているディレクトリ。13種類のプラグインを同梱している。
サンプルのC言語プログラムを同梱している。スパゲッティへの可食化の例題プログラムのために用意した。
スパゲッティへの可食化の例題プログラムを動作させた際にレシピが出力されるディレクトリ。初期状態は空。
Smalltalk(VisualWorks)からシェルを利用する際に必要となるライブラリファイル。
また、その動作にはSmalltalkの処理系であるVisualWorks(じゅん for Smalltalkを含むもの)が必要になる。外部サイトより入手されたい。
ここでは、同梱物に含まれている例題プログラム(スパゲッティへの可食化の例題)を動作させる手順を説明する。
手順1. 同梱アーカイブ(MetricsTool.zip)の展開と移動
上に用意したアーカイブ(MetricsTool.zip)を任意の場所にダウンロードし、展開する。 その内容物のうち「path」と「ShellInterface.dylib」を、図2に示すように、VisualWorksの仮想マシンが存在するディレクトリに移動する。
手順3. VisualWorksを立ち上げて、stファイルを読み込む
VisualWorksを起動し、ファイルブラウザから「MetricsTool.st」をファイルインする。
システムブラウザ(リファクタリングブラウザ)を開き、バンドル「KSU」下のパッケージ「KSU-Synapse」に属する、クラス「KSU.SynapseInterpreter」のクラスメッセージ「exampleCodeSpaghettiForStartup」を実行する。 または、ワークスペース等で、以下のフレーズを実行されたい。
KSU.SynapseInterpreter exampleCodeSpaghettiForStartup
実行と同時に、サンプルプログラム「./path/to/Programs/source.c」をスパゲッティに可食化する。処理を終えると、スパゲッティのレシピが表示される。 もし、しばらく経っても表示されない場合は、「./path/to/Results」ディレクトリを参照されたい。HTMLファイルのレシピが出力されているはずである。
ここでは、ユーザ自身がSynapseScriptを記述して、その実行を行う場合の例を示す。マニュアル1の手順2までを済ませているものとして説明を進める。 また、例題として割り算のメトリクスプラグイン(Division2)を用いる。
一枚のワークスペースを用意し、以下のように記述する。
KSU.SynapseInterpreter script: ''
準備したプログラムフレーズの引用符内にSynapseScriptを記述する。 ここでは「20÷3」といった割り算の処理を行い、その計算結果(商)をトランスクリプトに表示することとしよう。SynapseScriptの記述は以下の通り。
/*** Assignments ***/ value1 = Value("20"); value2 = Value("3"); division = Metrics("./path/to/Plugins/Division2"); transcript = Transcript(); /*** Synapses ***/ value1 to: division.dividend; value2 to: division.divisor; division send: quotient to: transcript;
ワークスペースに記述したプログラムを全て選択して実行してみると、確かにトランスクリプト上に「20÷3」の解として「6.66666...」が表示されている。