nDiki : ソースコードフォーマッタ

ソースコードフォーマッタ - source code formatter

ソースコード整形ツール、source code beautifier。

プログラムのソースコードの改行や空白などを調整して整形してくれる機能あるいはツール。

Naney のお気に入りは以下。どちらも Emacs から呼び出して開いているバッファのソースコードを整形できるようにして使用している。

スポンサード リンク

2009年8月10日 (月)

C++ソースコードフォーマッタ Uncrustify

私が Perl が好きな理由の一つとして perltidy が存在しているという点がある。 perltidyソースコード整形は柔軟にカスタマイズができて、自分の好みの整形設定を作っておける。 このツールおかげで後で整形できるので、荒々しくコードを書いてガンガンリファクタリングしていくことできる。

久しぶりに C++開発をするにあたって、C++ の同様のツールを探してみた。 perltidy のように長い式の折り返しを適切に調整してくれる整形ツールはあまり見つからない。いくつか試したところ Uncrustify にたどりついた。

設定

 uncrustify -c /dev/null --update-config-with-doc -o ~/.uncrustify.cfg

するとデフォルトの設定が書き込まれた設定ファイルができる。 これを好みの設定に書き換えていく。

ソースコード整形する

 uncrustify source.cpp

とすると整形されたソースコードが source.cpp.uncrustify に出力される。

 uncrustify --replace source.cpp

とすると source.cpp 自体を整形されたソースコードで置き換えてくれる。

Emacs からの呼び出し

perltidy の時の設定(記事)で OK。 shell-command-on-region では

  uncrustify -l CPP -q

を実行するようにする。Uncrustify は標準入力からソースコードを渡す際にはどのプログラミング言語が指定してあげる必要がある。

好みの設定は現在模索中。 長い式の中の、引数なしの関数呼び出しの開き括弧と閉じ括弧の間で折り返されることがあってそれが気持ち悪いのだが、それ以外は好みの設定になりつつある。 もうちょっと設定いじってみて確定するつもり。

スポンサード リンク
[ 8月10日全て ]

2012年7月19日 (木)

JavaScript ソースコードフォーマッタ JS Beautifier

ちょっと JavaScript コードを書く機会が増えてきそう。 そうなると、Perl コードを書く時には perltidy が手放せないように、JavaScript ソースコードフォーマッタが必要だ。 なのでとりあえず検索してよくひっかかってきた JS Beautifier を使ってみることにした。

JavaScript で書かれたバージョンと Python で書かれたバージョンがあって、後者の方はそのままコマンドラインからの呼び出しできるようになっているので、それを使うようにしてみる。

手元の環境だと Python の dev 系のファイルがインストールされていなくて setup.py が通らないので、Python からマルっと入れた。

 $ tar zxvf Python-2.7.3.tgz
 $ cd Python-2.7.3
 $ ./configure --prefix=$HOME/local/python-2.7.3
 $ make
 $ make altinstall

Pythonインストールしたら JS Beautifier をインストール

 $ git clone https://github.com/einars/js-beautify.git
 $ cd js-beautify/python
 $ $HOME/local/python-2.7.3/bin/python2.7 setup.py install

$HOME/local/python-2.7.3/bin/js-beautify がインストールされる。PATH の通ったところにシンボリックリンクしておく。

あとは Emacs から実行できるように設定。

 (defun js-beautify-region()
   "Run js-beautify on the current region."
   (interactive)
   (save-excursion
     (shell-command-on-region (point) (mark) "js-beautify -i" nil t)))

を設定しておいて、整形したいところをリージョン選択してから M-x js-beautify-region を実行するとその範囲を整形してくれる。

ちょっと使ってみた範囲では、大外ししてインデントメチャクチャとかは無かった。perltidy ほど賢くない感じだけれど、これで一貫したスタイルで書けるようになるのでいい感じかな。

[ 7月19日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.048088s / load averages: 0.30, 0.51, 0.51
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker