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

スポンサード リンク

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

2011年3月1日 (火)

Notepad++perltidy する

やっぱり Perl スクリプトは perltidy をかけておかないと気持ち悪いよね。 Emacs からは perltidy を呼べるように設定済み

基本 Perl スクリプトを書く時は Emacs なのだが、Windows 上でさくっと書く時もある。最近は Windows 上のテキストエディタNotepad++ を使っているので、同様に Notepad++ からも呼べるように設定しておこう。

以下 Notepad++ v5.8.7 (UNICODE)、[全般設定] で言語に日本語を指定してある状態での設定手順。PerlStrawberry Perl で cpanm が入った状態。

perltidyインストール

以下のコマンドで perltidyインストールする。

 cpanm Perl::Tidy

NppExec v0.4.1 をインストール

Notepad++ v5.8.7 に 外部コマンドを実行する NppExec プラグインが入っていなかったのでインストール

NppExec_041_dll_Unicode.zip をダウンロードしてきて展開し c:\Program Files\Notepad++\plugins に NppExec.dll をコピーする。

Notepad++ から perltidy を呼び出せるようにする

Notepad++ を起動し以下の設定を行う。途中 Notepad を再起動するように指定されたら指示に従って起動しなおす。

perltidy 呼び出しを定義
 c:\strawberry\perl\bin\wperl.exe -x -S perltidy --quiet --preserve-line-endings --backup-and-modify-in-place "$(FULL_CURRENT_PATH)"
  1. [プラグイン]-[NppExec]-[Execute]。
  2. 開いたダイアログの Command(s): に上記コマンドを入力。
  3. [Save] ボタンを押す。
  4. Script name: に perltidy と入力して [Save] ボタン。
  5. もう1回 [Save] を押してダイアログを閉じる。
[マクロ] メニューに登録する
  1. [プラグイン]-[NppExec]-[Advancecd Options]。
  2. 開いたダイアログの Item name: に perltidy と入力。
  3. Associated script: で perltidy を選択。
  4. [Add/Modify] を押す。Menu items に perltidy :: perltidy が追加される。
  5. [Place to Macros submenu] にチェック。

これで [マクロ]-[perltidy] と指定できるようになる。

.perltidyrc を置く

お気に入りの .perltidyrc (perltidy.ini でも OK)を

 perltidy -dpro

で表示されるディレクトリのどこかに置くか、置き場所を PERLTIDY 環境変数に設定しておくか、コマンドラインオプションに -pro=filename という形で指定しておく。

Naney の .perltidyrc はこんな感じ

実行する

適当に Perl スクリプトファイルを開いて [マクロ]-[perltidy] を実行。ウィンドウの下部に Console 出力が表示される。 処理が終わったら [ファイル]-[開き直す]をすると整形された Perl スクリプトが表示される。

上記の手順を Notepad++ マクロ化しようとしたんだけれど、これは失敗。

2006年9月11日から使っている perltidy の設定

perltidy の設定ファイル .perltidyrc は以前に載せた後 --vertical-tightness-closing を 2 に変えたあといじってなかった。 こんな感じ。

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

 # Code 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=2 # default is 0
 --want-break-before="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
                                # default is ". << >> -> && ||"

 # HTML Options
 -nnn
 --nohtml-entities

その後新しいオプションが増えているのでチェックしなくては。

[ 3月1日全て ]

2011年4月27日 (水)

cpanm 入れて perltidy 入れて

perltidy が無いと Perlソースコードが書けない体なのです。 なので cpanm でホームディレクトリ以下にインストール

まずは ~/local/perl 以下に CPAN モジュールをインストールして使えるように、Bash の設定ファイルに以下を追加。

 export PERL_CPANM_OPT="--local-lib=$HOME/local/perl"
 PERL5LIB=$PERL5LIB:$HOME/local/perl/lib/perl5:$HOME/local/perl/lib/perl5/x86_64-linux-thread-multi
 PATH=$PATH:$HOME/local/perl/bin

そして以下を実行(~/local/bin は PATH に設定しているところ)。

 cd ~/local/bin
 curl -LO http://xrl.us/cpanm
 chmod 755 ./cpanm

cpanm のインストールはこれで OK。後は

 cpanm Perl::Tidy

perltidyインストール完了。

あとはお好みな .perltidyrc を用意したり Emacs から呼べるように設定したりすれば OK。

今日のさえずり: 風強いな。スカートはいてこないで良かった。

2011年04月27日

  • 09:14 風強いな。スカートはいてこないで良かった。
  • 09:26 駅からオフィスの間にベーカリーないかな。そろそろお昼にパン食べたい。ちょっと横道に入るぐらいの範囲にあると嬉しい。
  • 09:42 出社。
  • 10:09 そういえば、朝ドリンクマシーンでアイスコーヒーをチョイスしたら、カルピスみたいなのが出てきた。ミルク水だった(まだ机の上にある)。
  • 12:16 上のフロアに巨大な虎がいてビックリした。PostScript のアレみたいな顔の。
  • 12:43 初学食。
  • 12:46 イーゴカード気になる。
  • 14:46 cpanm 入れて perltidy をセットアップ。perltidy が無いと Perl プログラム書けない。
  • 14:52 1行も修正しないでチケットをクローズできる予感。
  • 15:52 ack も入れて (setq grep-find-command "~/local/perl/bin/ack --nocolor --nogroup ")
  • 16:56 Becky! また「データの整合性エラーが発生しました。」が出た。泣ける。Sylpheed にするか。
  • 17:10 やはり1行も修正せずにチケットクローズった。
  • 17:37 @yasa_gurek0 花粉まだ飛んでますね。止めてみたんですが、そうしたらムズムズが戻ってきました。
  • 18:21 @mahoyaya こちらは Becky! で連日でまくりです。最新バージョンなんですけどねぇ。
  • 18:34 退勤。この時間でも風強いままだな、今日は。
  • 18:57 @yasa_gurek0 やはり例年通りゴールデンウイーク明けまでは飛ぶんですかねぇ
  • 21:38 次の URL から Cacoo 登録すると作成できるシート数が +5 っていうのやってる。 https://cacoo.com/r/y8Zcb @cacooapp
  • 21:39メールきてたから、もうみんな紹介してるのかな。
  • 22:26 @nye_c ありがとうございます。16進数的にはまだまだ……(というありがちな言い訳)。
  • 22:46 「秋田の書店」ってあったのを見て「秋田書店?」と思ったけど、秋田書店の本社は東京都千代田区飯田橋
  • 22:46 秋田貞夫氏によって創立されたから秋田書店なのか。
[ 4月27日全て ]

2011年6月14日 (火)

perltidy の --line-up-parentheses 諦め

perltidy の設定ファイル .perltidyrc の見直し。

 # Basic Options
 --maximum-line-length=78        # default is 80
 --indent-columns=2              # default is 4
 --preserve-line-endings
 --iterations=2                  # Add!

 # Code Indentation Control
 --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
 --opening-brace-always-on-right # Add!
 --break-before-all-operators    # change from --want-break-before

 # HTML Options
 -nnn
 --nohtml-entities

今回の変更点:

  • --iteration=2 を追加。
  • --line-up-parentheses を指定するのを止め。
    • ( の位置が深い桁数のところにあって、そこで桁揃えするスペースが無いと次の行が右寄せにになるのだけれど、どうもこれが美しくなく感じてきたので。
  • --vertical-tightness と --vertical-tightness-closing を外す。
    • --line-up-parentheses 無しにこれらを指定すると、インデントが1段余計に入るので。
  • --opening-brace-always-on-right を指定。
    • if などでの { がそのキーワードと同一行に置けない場合に独立した行に置かれるのを止めさせる。
  • -- break-before-all-operators を指定。
    • 今までは --want-break-before を列挙していたけど、結局全部指定しているので。

基本タイトな整形が好きなので --vertical-tightness 系を切るのは断腸の思いではあるが、この設定の方が整形に一貫性があるのでよしとしよう。

[ 6月14日全て ]

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 ほど賢くない感じだけれど、これで一貫したスタイルで書けるようになるのでいい感じかな。

今日のさえずり: Get The Perl T シャツ着てたけど、今日はずっと JavaScript いじってた

2012年07月19日

[ 7月19日全て ]

2012年9月21日 (金)

今日のさえずり: 生プルーン、ソルダムみたいな感じだった

naney:8009096930

2012年09月21日

[ 9月21日全て ]

2013年9月6日 (金)

【日記】 GitHub / GitHub Enterprise っていう SNS が楽しくなってきたとか

今週ぐらいからぼちぼち本格的に GHE 使い始めていて pull request も実は初めて使ったんだけれど、まず便利そう。 pull request に pull request とかやってみたけど、普通にみんなそういう風にしているのかな。

あと perltidyChangeLog 確認したら気がつかないうちにフラグがいろいろ増えていた。今は 2011年6月に見直した .perltidyrc で安定して整形してくれていて困っていないんだけれど、新しいフラグの効果も試してみた方がいいのかな。1つ1つ試してどっちがいいかとか結構悩むんだよねぇ。

今日のさえずり: 中学校の歴史の先生に「オベンジョダロ」って覚えるって言われて

naney:9680733055

2013年09月06日

  • 09:03 Xperia GX 上にある写真データ全部 PC か Dropbox に移した。今後はこまめにやろう。
  • 09:15 タッチと浅倉南とナポリタン。 http://flic.kr/p/fKshEB
  • 09:23 検索したところタッチの南風のナポリタンはモデルが存在するらしい。
  • 09:30 モヘンジョダロは中学校の歴史の先生に「オベンジョダロ」って覚えるって言われて、30年弱経った今でも忘れてないし、臨終の時にも思い出すかもしれない。
  • 09:32 オベンジョダロ?
  • 10:14ドコモからのお知らせ : 本日の一部報道について | お知らせ | NTTドコモhttp://bit.ly/1ek7FjQ
  • 10:24 前回(2011年) .perltidyrc を見直してその後ずっと使ってきたんだけれど、今 perltidy の最新の ChangeLog 見たらまたいっぱいフラグが増えてる。試すの吐きそう。
  • 12:51 9月になったので愛妻弁当再開。祝。 (@ 株式会社ミクシィ (mixi, Inc.) w/ 2 others) http://4sq.com/14vPWi9
  • 15:40 GitHub / GitHub Enterprise って Gravatar Email を別にできるのか(知らなくて Gravatar の方にメールアドレス追加をした)。
[ 9月6日全て ]

2014年2月25日 (火)

今日のさえずり: いつでも亀クエ

2014年02月25日

naney:12772158903

[ 2月25日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

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

follow us in feedly

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

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