きれいめ系iOSプログラマのためのモテXcode5コーデ術(Uncrustify, VVDocumenter)

  • 175
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

こんにちは。haranicleです。
今回は、きれいなソースコードを生産したい「きれいめ系プログラマ」な皆さんのために、
コードフォーマッタの設定とコメントの記述を助けてくれるXcodeのプラグインを紹介します。

※Xcode5.1で使用する場合は、以下のように設定してください。(2014/04/06追記)
iOSモテコーデ術Xcode5.1対応

コードフォーマッタ

開発メンバが多かったり、期間が長いプロジェクトだとコードフォーマットがバラバラでイケてないソースコードが生産されがちです。
モテなソースコードを生産するために、コードフォーマットを決めて自動で整形してあげましょう。
今回は以下を実現します。

  • Xcode5でビルドに成功したタイミングで、自動的にコードフォーマッタを実行できる。

  • プロジェクト毎に異なるコードフォーマットを設定できる。

※本章は下記ページをベースに記載しています。
Xcode で コードフォーマッター Uncrustify を使う - FUKULOG開発者ブログ

前提条件

  • Homebrewがインストール済みであること。

  • Xcode5とCommand Line Toolsがインストール済みであること。

  • 試しにフォーマッタを実行してみるXcodeのプロジェクト(今回はMoteSampleという名前のSingle View Applicationフォーマットのプロジェクト)を作成していること。

以下の説明は、これらの条件を満たしていることが前提です。

Uncrustifyのインストール

Uncrustifyをインストールします。
Xcodeのプラグイン版もありますが、今回は、ビルド時に自動実行させるためにHomebrew版を使用します。
以下のコマンドをターミナルで実行してください。

$ brew install uncrustify

Uncrustifyを実行するスクリプトの作成

~/bin/配下(フォルダがない場合は新規に作成する)にuncrustifyという名前のファイルを作成し、uncrustifyに以下を記述します。

uncrustify
#!/usr/bin/ruby
base_path = ENV['PWD']

puts "running uncrustify for xcode project path: #{base_path}"

if base_path != nil
  paths = `find "#{base_path}" -name "*.m" -o -name "*.h" -o -name "*.mm" -o -name "*.c"`
  if paths.kind_of?(String) then
    paths = paths.split(/\r?\n/).map {|line| line.chomp}
  end
  paths = paths.collect do |path|
    path.gsub(/(^[^\n]+?)(\n)/, '"\\1"')
  end
  paths = paths.join(" ")
  result = `/usr/local/bin/uncrustify -c "#{base_path}"/.uncrustifyconfig --no-backup #{paths}`;
  puts result
else
  puts "Invalid base path..."
end

(2013/12/15修正 paths = `find... の結果がArrayではなく改行区切りのStringで取得されてしまった時にコードフォーマッタを実行できないバグを修正しました。)

スクリプトに実行権限を追加

以下のコマンドをターミナルで実行して、スクリプトに実行権限を付与します。

$ chmod +x ~/bin/uncrustify

Uncrustifyのフォーマットの作成

MoteSampleフォルダ(プロジェクトフォルダのルート)内に.uncrustifyconfigというファイルを作成し、下記ページのフォーマットを記述します(各パラメータについて日本語解説がついてて素敵です)。

uncrustify - 意識の高さからかコードフォーマッター設定を公開 - Qiita [キータ]

Xcodeの設定

Xcode>Preferences...>Behaviors>Build>Succeedsと順に選択し、Runのチェックボックスを✓します。
次にRunの横のドロップダウンからChoose Script...をクリックし、~/bin/uncrustifyを選択してOpenをクリックします。

これでXcodeでビルド成功時に自動でフォーマッタが走るようになりました。
Command Line Toolsがインストールされていないと実行されないので注意してください。
(僕はココで若干ハマりました...)

動作確認

MoteSampleのViewController.mに以下を記述します。

ViewController.m
-(BOOL)isMoteru:(NSInteger)age    faceSize:(CGSize)faceSize money:(NSInteger)money{return NO;}

⌘+Bでビルドし、ビルド成功のタイミングで以下のように整形されれば成功です。

ViewController.m
- (BOOL)isMoteru:(NSInteger)age faceSize:(CGSize)faceSize money:(NSInteger)money
{
    return NO;
}

.uncrustifyconfigをチームで共有すれば、全員が同じコードフォーマットのソースコードを生産できますね。

VVDocumenter

Uncrustifyはインデントなどの整形は出来ますが、変数名やコメントの記述方法については整形できません。
変数名は仕方ないとして、せめてコメントのフォーマットは統一したい!
折角コメント書くんだからAppledocを使ってAPIドキュメントを作りたい!
そんなきれいめ系プログラマなあなたにおすすめしたいのがVVDocumenterです。
VVDocumenterはXcodeで"///"と入力すると、自動的にJavadocライクなコメントを生成してくれるXcodeのプラグインです。

前提条件

  • Xcode5がインストール済みであること。

  • 試しにVVDocumenterを実行してみるXcodeのプロジェクト(今回はMoteSampleという名前のSingle View Applicationフォーマットのプロジェクト)を作成していること。

以下の説明は、これらの条件を満たしていることが前提です。

VVDocumenterのインストール

ダウンロード

下記URLからVVDocumenter-Xcodeを取得します。
git cloneするなりダウンロードするなりお好きにどうぞ。

onevcat/VVDocumenter-Xcode · GitHub

インストール

  1. ダウンロードしてきたファイルの中のVVDocumenter-Xcode.xcodeprojをXcodeで開きます。

  2. ⌘+Bでビルドし、Buld Succeededと表示されればインストール成功です。

  3. Xcodeを再起動します。

動作確認

MoteSampleを開き適当なメソッドの前にカーソルを合わせ、"///"を入力します。
Javadocライクなコメントが挿入されたら成功です。
@param@returnを自動で挿入してくれるので便利ですね。

おまけ

Xcodeでリファレンス表示も!

VVDocumenterでコメントを書いておくとXcodeでメソッド名を⌥+クリックでサクッとリファレンスを見ることができます。

こんな感じでソースコードを書いておいて。

source.png

メソッド名を⌥+クリックでリファレンス表示!

reference.png

これだけでも、インストールする価値がありますね。

Appledocも!

上記ソースコードからAppledocでAPIドキュメントを生成するとこんな感じになります。

appledoc.png

おわりに

コードフォーマッタとVVDocumenterを設定したのに全然モテない!おかしい!