Flex Formatterが出ました

今日、弊社に初の税務調査が来るので少々緊張してるよねむらです。
こんにちは。


flexで開発してるときに、コードのフォーマッタが欲しい!と思った人も多いと思います。
無料のフォーマッター欲しい><
そんな時に、いいのあるよ!とid:shot6から情報を頂いたので
Flexのコードフォーマッタを一昨日使ってみたので使い方と説明をメモしておきます。
asファイルとmxmlファイルのフォーマット可能です。

インストール

Eclipseプラグインとして提供されているので、以下からFlexPrettyPrintCommand_0.6.5.jarをダウンロードします。
名前がかわいいです。
http://sourceforge.net/projects/flexformatter/

FlexBuilderを使ってるEclipseのpluginsフォルダにコピーします。

そうすると以下のようなボタンが2つ表示されます。

左のボタン Format Flex code (select lines)

コードをフォーマットしてくれます。

private        function test ( e : FlexEvent     )   : 
     void   {
        trace("format me!");
    }
}

↑のコードは↓ようになります

private function test(e:FlexEvent):void
{
    trace("format me!");
}

右のボタン Indent Flex code (select lines)

選択コードのインデントを調整します。

    private function test(   e   : FlexEvent) :   void   {
       if (true) {
     trace("format me!");      
       }
    }

↑のコードは↓ようになります

private function test(   e   : FlexEvent) :   void   {
    if (true) {
        trace("format me!");      
    }
}

インデントだけで、引数の括弧前後の空白や、:の前後の空白はフォーマットしません。

カスタマイズ

:の前後はスペース1個だろう!いやスペースは入れない!
BSD/オールマンスタイルだ!
と喧嘩すると困るので、フォーマットのカスタマイズをします。

設定

Window
┗Preferences...
  ┗Flex Formatting

上記メニューで、フォーマットのカスタマイズが出来ます。

右側で設定したフォーマットを確認可能です。

私が試しに設定してみたのは

インデントにスペースを使用

IndentationでUse spacesを選択

BSDスタイルで括弧をつける

Open brace on new lineのチェックをはずす

else ifを1行にする

Else-If on same line

同じ設定を複数で共有するには

チームで設定を共有するには、設定をExportして他の人はそれを取り込めば良いです。
方法は、設定画面から Export... ボタンを押して、適当な名前で保存します。
私は、なんとなくxmlかな?と思いflex-format.xmlとしました。
そうすると以下のようなファイルが出来上がりました。

MXML.maxLineLength=200
MXML.sortAttrMode=0
Actionscript.blankLinesBeforeClasses=1
Actionscript.keepElseIfOnSameLine=true
Actionscript.wrapArrayDeclMode=1
Actionscript.putOpenBraceOnNewLine=false
Actionscript.wrapMethodCallMode=1
Actionscript.blankLinesBeforeFunctions=1
MXML.attrWrapMode=52
Actionscript.keepSLCommentsOnColumn1=true
Actionscript.spacesAfterComma=1
Actionscript.blankLinesBeforeControlStatements=0
Actionscript.spacesAroundAssignment=0
Actionscript.keepBlankLines=true
MXML.sortAttrData=
Actionscript.maxLineLength=200
Actionscript.putElseOnNewLine=false
Actionscript.spacesBeforeComma=0
Actionscript.wrapEmbeddedXMLMode=2
MXML.attrsPerLine=1
Actionscript.putCatchOnNewLine=false
Actionscript.breakLinesBeforeComma=true
MXML.spacesAroundEquals=0
Actionscript.wrapMethodDeclMode=1
MXML.sortExtraAttrs=false
Flex.useTabs=false
Actionscript.spacesAroundBinarySymbolicOperator=1
Actionscript.wrapExpressionMode=1

xmlじゃないですね><ただのテキストでした。

これを、設定画面からImport...ボタンで他のメンバが取り込めばチームで共通フォーマットで開発出来ますね。

感想

個人的には、なかなか良いと思いました。
これで、みんな綺麗なコードが書けますね、万歳。

id:c9katayamaにはそんなのなくても綺麗に書けよ!と怒られっぱなしです。

雑記

先日、知り合いのお店の入口にいた犬をなでて手を洗わずに蒸しパンを手でちぎって食べたせいか
食当たりになってしまいました...
皆さん、犬を触ったら手を洗いましょうね。