Perl::Tidy を真面目に設定してみた


私はルーズな perler であるので、コードが大変に汚い。Perl にはほぼ標準とも言っていい、Perl::Tidy (perltidy) というコード整形ツールがあるが、ちょろっと使っただけでは、改行を潰されたりするのが自分のコーディングスタイルに合わないので使っていなかった。

今回、真面目にオプションを調べて自分の設定ファイル(.perltidyrc)を作ってみました。

これにより回避できたのは、以下のような改行の仕方が潰されてしまう事。

保存したい改行

$val eq 'value'
    and &check($val)
    or return
    ;

$res = sprintf( 'some %s format',
    $val,
);

標準のオプションで整形したコード

$val eq 'value' and &check($val)
  or return;

$res = sprintf( 'some %s format', $val, );

改行を潰さない .perltidyrc の内容

改行に関しては赤太字の所がポイントで、後はお好みで。

-enc=utf8 #文字コードはUTF-8(しかしwarning出る)
-ole=unix #改行は LF
-et=4 #スペース4個分はタブに置き換えて
--closing-token-indentation=1 #配列指定時などに、終了カッコを開始と同じ位置までインデント
--nospace-for-semicolon #forループの指定のセミコロンの前にスペースを置かない
--nooutdent-long-quotes #インデントされ過ぎた文字列があっても引き戻して来ない
--nooutdent-long-lines #インデントされ過ぎた行があっても引き戻して来ない
--tight-secret-operators 
    #0+$val などの特定の表現のときは 0 + $val の様なスペースを空けない
--minimum-space-to-comment=2 #行末コメントとコードの間のスペース
--closing-side-comments 
    #ループやsub の閉じ } の後に「 ## end sub ...」等と付ける(デバッグ用)
--maximum-fields-per-table=1 #配列要素の指定を横に並べる数
--freeze-newlines #既にある改行コードは削除しない
--break-at-old-comma-breakpoints #カンマの後の改行を変更しない
--check-syntax #整形後 perl -c -T でチェック
--backup-and-modify-in-place #ファイルを書き換えて、整形前のファイルを.bak で保存する