行末コメントの整形

行末コメントのコメントを閉じるトークンを規定のカラムに移動するスクリプト
6年ぶりにperl使った。

適用前
    int hoge;  /* hogehoge */
適用後
    int hoge;  /* hogehoge                        */

こういう機械的なソースの整形はできるだけ自動化したいところ。

ところで、この変更は単に視覚的に見やすくするだけで情報量が全く増えていない。その上、コメントの中の文字を編集するとスペースを足したり削ったりしないといけなくなる。ソースを編集する側からすると、コストの方が大きいと思う。見やすいっていうのも、このスタイルに慣れてるだけだろうしね。
小説で考えたらさ、

男1と男2が括弧の位置について議論していた。
「会話文の閉じ括弧がさ……           」
「なに?                    」
「こんなのっておかしいよね?          」

やっぱり慣習でしかないと思うんだがなあ……。


スクリプトはこちら。

#! /usr/bin/perl

while($line = <>){

    $iCloser = rindex($line, "*/");

    # 以下3つの条件を満たす場合に行末コメントであるとする
        # コメントの開きトークンがある
        # コメントの開きトークンの前に空白文字以外の文字がある
        # コメントの閉じトークンが行の末尾にある

    if ($line =~ m~.*\S+.*/\*.+\*/.*~){
        # 処理続行
    }
    else {
        # 変更せずに出力
        print $line;
        next;
    }

    # コメントの閉じトークンの直前までを切り出す
    $strSub = substr($line, 0, $iCloser);

    # 規定のカラムまでの不足分を埋めるための文字列
    $dummy = "";

    # ここでは80カラム
    for ($i = 0; $i < (78 - $iCloser); $i++){
        $dummy = $dummy . " ";
    }
    $dummy = $dummy . "*/";

    print $strSub;
    print $dummy;
    print "\n";
}