トップ(最新)

nDiki : perltidy

perltidy

Perl ソースコードを読み込んで、インデントの修正などを行い整形されたソースコードを出力するツール。GNU GPL のもと公開されている。

このツールを用いることで、スタイルの統一された見やすいソースコードにすることができる。 また、ソースコードをハイライトした HTML ファイルを作成することもできる。

使用例: ソースコードを整形する

 perltidy source.pl

整形された source.pl.tdy というファイルが生成される。

使用例: HTML テキスト出力

ソースコードをハイライトして行番号付きの HTML テキストを生成する場合は

 perltidy -html -nnn --nohtml-entities source.pl

とする。

ActivePerl へのオンラインインストール (PPM パッケージ)

Windows 上で ActivePerl を利用している場合は、PPM パッケージの形でネットワークインストールできる。

コマンド プロンプト上で、以下を実行する:

 ppm install Perl-Tidy

スポンサード リンク

Related term

2006年4月23日 (日)

Perl プリティプリンタの定番 perltidy このエントリーを含むはてなブックマーク

スポンサード リンク

一昨日は時間がなかったので、Perl プログラムの色付きプリントアウト作成に Emacs の htmlize.el を使用したのだが、残念ながらこれだと Emacs を使っていない人には薦めることができない。

ということで調べたところどうやら perltidy が定番の様子。 Perl Best Practices でも紹介されているらしい。

@ HTML テキスト出力

ソースコードをハイライトして行番号付きの HTML テキストを生成する場合は

 perltidy -html -nnn --nohtml-entities source.pl

とする。

@ Emacs からの perltidy の呼び出し

perltidy の真価はソースのリフォーマットにある。 これを使用するとソースコードを統一のとれたスタイルに整えることができる。

Emacs からはリージョン選択して

 M-1 M-| perltidy

するか、http://www.emacswiki.org/.../CPerlMode で紹介されている

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

を .emacs などに書いておいて M-x perltidy-region することで整形することができる。

今までは CPerl mode 頼りだったけれど、これからはリポジトリにコミットする前に perltidy を通すようにしようかな。

まずは自分好みにあわせた、.perltidyrc を作成せねば。

◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。


[ 4月23日全て ]

2006年4月24日 (月)

perltidy のコマンドファイルでデフォルト設定 このエントリーを含むはてなブックマーク

perltidy をいろいろいじった結果、今のところ自分好みの設定は以下:

 # Basic Options
 --maximum-line-length=78       # default is 80
 --indent-columns=2             # (!= perlstyle) default is 4
 --preserve-line-endings

 # Conde Indentation Control
 --line-up-parentheses          #
 --nooutdent-long-lines         # default is --outdent-long-lines

 # Whitespace Control
 --paren-tightness=2            # default is 1
 --square-bracket-tightness=2   # default is 1
 --brace-tightness=2            # default is 1
 --nospace-for-semicolon        # default is --space-for-semicolon

 # Line Break Control
 --vertical-tightness=2         # default is 0
 --vertical-tightness-closing=1 # default is 0
 --want-break-before="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
                                # default is ". << >> -> && ||"

 # HTML Options
 -nnn
 --nohtml-entities

一応 Perl Best Practices (は持っていないので Web で公開されているサンプルファイル)の perltidyrc や perlstyle などを参考にしつつ作成。

インデント幅その他、比較的タイトがお好き。


[ 4月24日全て ]

2006年4月28日 (金)

第2回 社内 Perl 勉強会 このエントリーを含むはてなブックマーク

リャマ本を使用した社内 Perl 勉強会の2回目を開催。 今回は7人。直前に社長につかまって約20分遅れのスタート (スミマセン)。

進行方法はほぼ前回と同じで、事前に練習問題を解いておき、勉強会では互いにコードレビューをしながら進行役の私がポイントを説明していく形式。

今日は「初めてのPerl 第3版」第3章が範囲で、リストと配列がテーマ。

@ 今回の変更点と反省点

  • 解答のソースコードは全員 perltidy で色付き HTML に変換してプリントアウトして持ってくるようにしてもらった。前回より見易さアップ。
  • 前回は1人1解答につき1枚プリントして持参してもらったが、今回は各自出席者分プリントアウトし持ち寄ってもらうことにした。これによって、それぞれ配られたプログラムをゆっくりレビューできる。書き込みもできるし、持ち帰ることもできるので効果あり。
    • 反省点はプリントの枚数が多くなって混乱したこと(「第2問の○○さんの解答プリントはどれだっけ?」)。次回は、冒頭で全員のものを集めて問題番号ごとに整理してステープラーでまとめるという形にしよう。
  • ソースコードの先頭にコメントとして問題番号と作成者名を入れてもらうようにしたのだが、それだけだと誰のものか区別しにくいとの意見。
    • perltidy のオプションで HTML 化した時にタイトルをいじれればいいのだが、そのような機能はなさそうだ。
    • それこそ誰か、練習として H1 要素を書き換えるスクリプトとか書いてくれないかなぁ。

今のところ、全員ついてこれている様子。 スカラーコンテキストとリストコンテキストは、Perl 初心者にとってとっつきにくい部分の一つだと思うので、これが理解できれば結構いけそうな気もする。

今回はトータル80分ぐらい。7人だと1時間半ぐらい確保しておいた方がいいかもしれないな。

次回はゴールデンウィークを挟んで2週間後。


[ 4月28日全て ]

2006年7月25日 (火)

Perl 用の doxygen のようなツールはないのかな このエントリーを含むはてなブックマーク

WiKickerソースコードを人に説明するのにプリントアウトして説明するのに、doxygen のようなツールが欲しいのだけれど Perl 用のものはないのかな。

  1. ソースコードを色付けした HTML に変換してくれる
  2. Pod とコード本体を混在してドキュメント化してくれる
  3. ソースツリー内のファイルをそれぞれ処理してくれて、インデックスファイルも生成してくれる。
  4. できれば識別子がリンクになってくれる

というのが希望。1 だけなら結構いろいろなツールがあり、1 + 2 なら perltidy で実現できる。 しかし 3、4 までしてくれるツールが見つけられない。

とりあえず perltidyPerl::Tidy と File::Find で再帰的にまとめて HTML に変換するスクリプトだけは書いて、一気に変換だけはできるようにしておいた。

インデックスの作成までは面倒なので未着手。


[ 7月25日全て ]

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日全て ]

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.027464s / load averages: 0.27, 0.16, 0.11
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)