2009年5月4日月曜日

AIR/Flex3でASDocを出力

AdobeAIRのソースでASDocを出力を試してみました。
ソースコードのコメントの記述からHTMLのドキュメントを出力してくれます。JavaでいうところのJavaDocと同じです。

ソースを出力するのは、
Flex3の場合 {FlexSDK}/bin/asdoc
AdobeAIRの場合 {FlexSDK}/bin/aasdoc もしくは {FlexSDK}/bin/asdoc +configname=air
を使います。

ちなみに、Linux/Macで使うaasdocのシェルスクリプトは改行コードがCRLFで提供されているようで、そのまま動かすと以下のエラーが発生するという罠がありますww

/bin/sh^M: bad interpreter: No such file or directory

改行コードをLFに直して使いましょー。

MXMLにて <mx:source="airgear.as"/> を使ってActionScriptファイルを指定している場合、どうやらASDocには出力できないようです。なんともまぁ....
上記の記述をしたActionScriptファイルはパッケージ名、クラス名がないので、ASDocにて出力をかけた時にビルドエラーが発生します。

col: 1 エラー: public 属性はパッケージ内でのみ使用できます。

って感じの。

この記述、私はめっちゃ多用しているので、ああー使えないなぁって感じ。
AIR GEARにもASDoc出力のメニュー追加しようと思ったのにな。

Flex Bug System:[SDK-782]Error when generating asdoc on an mxml file that references an AS script source に上がってます。
このチケットでは、Milestoneが「SDK Gumbo - Release」になっているのですが、根本的な解決をしたのか、excludeを出来る指定が追加されたのか...この記述だけでは分からないので、flex-sdk-4.0.0-4904 にてみてみました。

結果。。。。根本的な解決はないみたい。残念。
asdocのコマンドライン引数に、-exclude-sources [path-element] [...] というのが増えていたので、ここに指定しなさい...って事みたい。
[path-element]には、,(カンマ)区切りで複数のものが指定できるけど、*(ワイルドカード)の指定は出来なさそうでした。
んんー、キビシぃ。
しかも、ASDocを出力したいAS内で、excludeに指定しているASクラスを使っている場合、excludeで無視してくれないっぽい。

大規模なシステムでは、ASDocはいるだろうなぁー & <mx:source="airgear.as"/>のインポート機能を使うだろうー って思うんですけど、こぅいぅ事があるのであれば、始めに構成は考えておくのは必須っぽい。

<mx:source="airgear.as"/>を記述しているMXMLとASファイル は固定パッケージ内に納めるようにする。
ASDocで出力するクラスは、上記のクラスは使用しないようにする。
つまり...ASDocで出力したいクラスは、ライブラリ(swc)として作成し、参照関係もMXMLの方からライブラリを参照する一方通行にする。

んー、そんな事を考えさせたら大規模アプリが果たしてできるんだろうかねー。疑問だ。
Javaでは考えられない感じだなー。頑張れAdobeさん。
• • •