意識低いエンジニアの一念発起ブログ

意識低くたってたまにはブログだって書くんだ。

Eclipseでコーディング規約のインデントやら空白やらを保存時に自動で修正する

ご無沙汰しております。意識低いエンジニアです。


  • 概要

今回はEclipseで自動でコーディング規約を適用して
インデントを適正化したり(タブ→スペースの統一とか、インデントの幅を揃えたりとか)
不要な空白、空行を削除したりできるようにする方法を紹介します。(紹介とか言っていますが備忘ログですw)
トピックは以下な感じです。
googleのコーディング規約の適用
・保存時に自動でコーディング規約を適用(Java/C++)

コーディング規約と言っていますが、
あくまでコードの見栄えに関する部分だけで、
変数名とか禁止された記法とかまではチェックしてくれません。

  • 問題の発生

コーディング規約あるけど、いちいち守ってらんないですよね。
たとえば
if(hoge==fuga){

if (hoge==fuga) {
にするとか (※if後、丸閉括弧後に空白が入っています。)
if ( hoge == fuga ) {
にするとかさ。 (※ == の前後にも空白が入っていたりします。)
あとはインデントをタブで埋めるかスペースで埋めるかとかさ。
あとは1行に詰め込みすぎるやつがいたりさ。
自動化しないと、統一できないじゃないですか。
でもこういうの守らないと地味に気になって集中力がマイクロ秒単位で消費されていく気がする。

で時々

「タブでインデントしやがったタコは誰だよ!」

みたいな感じで発狂したりする。

→自動化したい。

  • 背景1

google先生がコーディング規約公開してる。
かの有名なgoogle先生だし、さぞかし素晴らしいコーディング規約なのだろう。使ってみたい。
(別にディスってないです。本当にそうなんだろうと思っています。ちゃんと読んでないけどw)

googleのコーディング規約はリポジトリで管理されています。
google-styleguide - Style guides for Google-originated open-source projects - Google Project Hosting

web上でそのまま確認することもできます。(たとえばJava
Google Java Style


  • 背景2

EclipseにはFormatter機能(ショートカットキー:Ctrl + Shift + F)があり、
インデントやら、空白やらを、指定したコーディング規約(xml形式でインポートされているもの)
にしたがって、修正してくれます。
これは便利。しかもJavaの場合、保存時に自動でフォーマットかけてくれる機能もあります。



  • 実践1(googleのコーディング規約のチェックアウトする)

Eclipseワークスペース作ったら真っ先にチェックアウトしましょう。
https://code.google.com/p/google-styleguide/

Eclipsesvnパースペクティブを開いて、以下のような感じでチェックアウト。
f:id:sgr1120:20141124012832p:plain


  • 実践2(Formatterをインポートする)

EclipseのPreferencesでFormatterで検索かけてみましょう
f:id:sgr1120:20141124014005p:plain
でてきました。

ここでImportをクリックして、先ほどチェックアウトした
コーディング規約のプロジェクトのうち、
Javaなら「eclipse-java-google-style.xml
C++なら「eclipse-cpp-google-style.xml
を選択してインポートします。


  • 実践3(保存時にFormatterをかけるようにする)

Javaの場合は簡単。Preferencesでsaveで検索。
f:id:sgr1120:20141124014600p:plain
このように
Perform the selected action on save
にチェックを入れればよい。保存するたびに自動で修正してくれる。
C++の場合はこれがない。残念。コミットする前にCtrl + Shift + Fを忘れないようにしましょう。