indent 整形ツール

コマンドではなくエディタで整形する人の方が多いと思うが。。。
人が書いたコードを一挙に、または、会社のルールで決まった整形などと統一したい場合はコマンドが便利かもしれない。
コマンドで使える整形ツールはindent.exeとastyle.exeがある。
信州大学 井澤研究室
indent.exeは古くからありC言語用といっていい。
astyle.exeはC++やJavaにも使える。

Windows上でしかもマウス操作で簡単に扱う

indent.exeやastyle.exeファイルを
C:\Documents and Settings\ログイン名\SendToに置くのが単純だ。
コマンドでも扱いたい場合は、c:\windows\system32ににでもindext.exeファイルを置き、
C:\Documents and Settings\ログイン名\SendToにはindent.exeファイルへのショートカットファイルを作る。ここではショートカットキーの名前をindent.exeとしておく。

使い方

Cのソースファイルを狙って右クリックメニューで[送る(N)]でindent.exeを選ぶ。
狙ったCのソースファイルは整形されているはず。
なお、整形前のバックアップが自動的に作られている。ファイル名に~が付いているのがバックアップファイルだ。

以下のようなCのソースコードがある。このファイルをa.cとして保存しておく。
エクスプローラでa.cを選択してから右クリックメニューで[送る(N)]でindent.exeを選ぶ。
int main(void) {int kkk;printf("afa");
retrun 0;}
以下が整形後のa.cのファイル。
int
main (void)
{
  int kkk;
  printf ("afa");
  retrun 0;
}
a.c~がバックアップファイル。整形前のファイルだ。
デフォルトの整形方式はGUNスタイルだ。
int
mainをint mainにしたいなら-krスイッチを使う。
この例は、indent.exeファイルをC:\WINDOWS\system32の置いている。
  • krなどのスイッチはインターネットやコマンドで確認できる。
C:\Documents and Settings\administrator>indent  --help
使用法: indent ファイル [-o 出力ファイル ] [ オプション ]
      indent ファイル1 ファイル2 ... ファイルN [ オプション ]
      -he  短名|長名 オプション一覧
      -ho  オプション説明

indent.exeコマンドのスイッチのヘルプを見る

C:\Documents and Settings\administrator>indent  -ho
GNU indent 2.2.9 オプション一覧
usage: indent file [-o outfile ] [ options ]
      indent file1 file2 ... fileN [ options ]

  • h -help ヘルプ。
  • ho -? オプションのヘルプ(これ)。
  • version バージョン確認。
  • v -nv 経過メッセージを出す/出さない。
  • npro .indent.pro を読み込まない。
  • o FILE 出力をFILEにする。
  • e FILE エラーをFILEに出力する。
  • st ファイルにでなく標準出力。
  • ut -nut タブを使う/使わない
  • tsN タブサイズを N に。デフォルト 8。
  • Ttypename 型名として扱う名前を設定。複数指定可。

  • bacc -nbacc 条件コンパイルブロックの前後に空行を置く/置かない。
  • bad -nbad 宣言文の後ろに1行空行を置く/置かない。
  • badp -nbadp 関数定義の後に空行を置く/置かない。
  • bap -nbap 関数定義本体の後ろに1行空行を置く/置かない。
  • bbb -nbbb コメント行の前に1行空行を置く/置かない。
  • bc -nbc 宣言文で','があるとその都度改行する/しない。
  • bfda -nbfda 関数宣言/定義の引数を変数ごとに改行する/しない
  • bfde -nbfde 関数宣言/定義の')'を単独改行する/しない
  • brs struct の '{' を同一行に置く。
  • bls struct の '{' を次の行に置く。
  • brf 関数定義の '{' を同一行に置く。
  • blf 関数定義の '{' を同一行に置く。
  • br if文につく'{'を、'if'のある行の行末に置く。
  • bl if文につく'{'を、'if'のある行の次の行に置く。
  • bliN 'if' に対する'{'のインデント数。
               例) -bl -bli2 -i4
                   if (x > 0)
                     {
                       x--;
                     }
  • bs -nbs sizeofの後に空白を置く/置かない。
  • bbo -nbbo 行を分けるとき'&&'や'||'の前で改行する/後で改行する。
  • cN 文の行末のコメントをN桁目から配置。
  • c++ (未実装. c++のトークンをちょっと考慮する?)
               ※ indent は c++には対応していません。
  • cbiN case に対する '{' のインデント数。
  • cdN 宣言文の後ろにあるコメントをN桁目より配置する。
  • cdb -ncdb コメント行を次のように変形する/しない。
               (文末に置かれたコメントには影響しない)
               -cdb例) /*
                           コメント
                        */
  • ciN 一文を複数行にわけるときの1行目に対するインデント桁数をNに
               する。Nが省略されたばあいは-iで指定された値にする。
               例) -nlp -ci2
                       p1 = first_procedure (second_procedure (p2, p3),
                         third_procedure (p4, p5));
  • cliN 'switch'に対する'case'のインデント数。
  • ce -nce ifのブロックの'}'と'else'をくっつけて同じ行に置く/分離する。
  • cdw -ncdw do{}while();の while を'}'と同じ行に置く/分離する。
  • cpN '#else'や'#endif'の後ろにあるコメントをN桁より配置する。
  • cs -ncs キャストの後ろに空白を1つ置く/置かない。
  • dN 行コメントのインデント.
  • diN 宣言文での変数(識別子)へのインデント数。
               -di16例)int             foo;
                       char           *bar;
  • dj -ndj 宣言を左揃えにする/しない
  • eei -neei (extra-expression-indentation)
  • fc1 -nfc1 行頭より始まるコメントの変形が行えるようにする/しない。
  • fca -nfca すべてのコメントの変形が行えるようにする/しない。
  • lN 一行の桁数。
  • lcN コメント右マージン。
  • hnl -nhnl 一文中に改行があればその位置を利用して、その範囲でさらに
               長い行があれば改行する/しない。
  • iN 基本のインデント数。
  • ipN -nip オールドスタイルの関数定義で引数の宣言につけるインデントを
               N桁にする。-nipは -ip0に同じ。
  • lp -nlp ( ) や [ ] の対が一行に納まらず複数行になるとき、
               1行目の'('や'['の次の桁を2行目以降の開始位置にする/しない。
               lp例) p1 = first_procedure (second_procedure (p2, p3),
                                           third_procedure (p4, p5));
  • lps -nlps ('#'と'if'などの間の空白を削除する/しない)
  • pcs -npcs 関数呼出で関数名と'('の間に空白を1つ置く/置かない。
  • piN (paren-indentation)
  • pmt -npmt (このwin32版では未サポート preserve_mtime)
  • psl -npsl 関数定義で関数の型と関数名とを1行にせず、分ける/分けない.
               psl例)  static char *
                       function(void)
                       {
  • prs -nprs 括弧の後に空白を置く/置かない。
  • sbiN structに対する'{'のインデント数.
  • sc -nsc 複数行の/*コメント*/で各行頭に'*'を置く/置かない。
  • sob -nsob 元sourceの任意に置かれた空行を取りのぞく/そのまま残す。
  • ss -nss 'for'や'whie'文で空ループとしての';'が同じ行にあれば、
               その';'の前に空白を一つ置く/置かない。
  • saw -nsaw while の後に空白を置く/置かない。

  • kr K&R スタイルにする。
               -nbad -bap  -nbc  -bbo  -hnl  -br   -brs  -c33  -cd33 -ncdb
               -ce   -ci4  -cli0 -d0   -di1  -nfc1 -i4   -ip0  -l75  -lp
               -npcs -nprs -npsl -sai  -saf  -saw  -cs   -nsc  -nsob -nfca
               -cp33 -nss
  • gnu GNUスタイルにする。
               -nbad -bap  -bbo  -hnl  -nbc  -bl   -bls  -ncdb -cs   -nce
               -di2  -ndj  -nfc1 -i2   -ip5  -lp   -pcs  -nprs -psl  -nsc
               -sai  -saf  -saw  -nsob -bli2 -cp1  -nfca
  • orig オリジナルのindentのデフォルトオプション設定を行う.
               -nbap -nbad -bbo  -hnl  -bc   -br   -brs  -c33  -cd33 -cdb
               -ce   -ci4  -cli0 -cp33 -di16 -fc1  -fca  -i4   -l75  -lp
               -npcs -nprs -psl  -sc   -sai  -saf  -saw  -nsob -nss  -ts8
※非標準オプション
  • mbc -nmbc MS全角文字の2バイト目を考慮する/しない。
  • sjis -nsjis -mbc/-nmbcに同じ.
  • bapsN 関数定義本体の後ろにN行空行を置く。(-bap の N行版)
  • badsN グローバルな宣言文の後ろにN行空行を置く。
「今日の訪問数: -
「昨日の訪問数: -
「今までの訪問数: -
名前:
コメント:
最終更新:2009年12月24日 02:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル