プロジェクト単位で仕事をする際に地味に足を引っ張るのがコーディングルール。
おおまかなルールについてはどこの現場も大差はないだろう。
しかし、細かいところ「()の中はスペース一個分入れる」「if文のtabキー一個でインデント」するなどは現場のチームやメインプログラマーの癖に合わせることになるし癖なんて十人十色人それぞれだ。
また個人個人が使うエディターによっては違うエディターを使ったとたんおじゃんなんてこともあるかもしれない。
いちいち間違いを指摘してルールを強いるよりは機械的に自動でソースコードを整備してくれる環境を作ったほうが効率的だ。
今回はそんな試みのなかで[Artisitc Style](以後:Astyle)を導入したときのお話。
Artisitc Style
Astyletとは Tal Davidson氏がフリーで提供しているソースコード用の自動整形ツールだ。
・C, C++, C#, Java のソースコードのインデントや整形を行える。
・オプションファイルを作ることでチーム、プロジェクト毎の整形の設定を適用できる。
・別のC++プログラムに内蔵できる。
などの利点がある。
詳しくは下記のサイトを参考にしてほしい。
・Artistic Style 1.15.3(和訳済み)
・Artistic Style 2.06(原文)
準備
まずは下記のサイトからAstyleをダウンロードする。
・Artistic Style - Browse /astyle at SourceForge.net
1.ダウンロードしたらファイルを解凍し、binファルダを開く。
2.フォルダ内の[Astyle.exe]を整形したいソースコードがあるフォルダに入れる。
3.exeを入れたフォルダのアドレスバーに"cmd"と入力し、Enterキーを叩いてコマンドプロンプトでフォルダを開いたらAstyleの準備は完了だ。
↑この画像のような画面が出たら準備完了。
Astyleの使い方
Astyleでは以下の形式でコマンドを叩く。
例:astyle --style=ansi test.cs```
これを実行すると指定されたソースコードが整形される。
また、整形された際にソースコードのあったフォルダ内にorig拡張子のバックアップファイルが生成される。
また複数のフォルダを整形したい場合は下記のように叩けばいい。
```astyle [Astyleコマンド] [Astyleコマンド]… *[ワイルドカード]
例:astyle --style=ansi --pad-oper *.cs
Astyleのコマンド
Astyleは複数のコマンドを組み合わせることでそれぞれに適した整形を行う。
下記はおおまかなコマンド
1.mode…言語タイプの指定
2.style…インテンドの仕方などのコーディングスタイルの指定
3.intend…インテンドの際にスペース、タブを何回使うかの指定
4.break…空白行の挿入
5.pad…空白の挿入
その他にもバックアップファイルの生成を行わせないなどの設定も出来るが詳しくは下記のサイトを参考にしてください。
・Artistic Style(AStyle) の スタイルオプション(引数)
オプションファイル
複数のコマンドをプロジェクト毎に打ち込むのは面倒。
そんな時はオプションファイルを作成しよう。
プロジェクト毎に細かいところを調整したい場合も複数のオプションファイルを作成すれば安心だ。
以下は、オプションファイルの作り方。
1.適当なテキストエディターでテキストファイルを作る。
2.テキストファイル内に上記のコマンド一覧を参考にしながら必要なコマンドを打ち込む。
↑こんな感じでコマンドを書いていく。
3.テキストファイルを保存したらファイル名を「astylerc」に変更する。
4.上記の手順でコマンドプロンプトでAstyleを起動。
5.Astyleコマンドの欄に「--optoins=[作成したオプションファイルのパス]」を打ちこむとでオプションファイル内のコマンドが全て適用され成形される。
例:astyle --options=### test.cs
また、環境変数「ARTISTIC_STYLE_OPTIONS」を作りオプションファイルをフルパスで指定するとコマンドで指定しなくても適用される。
環境変数を設定した場合でもoptionsにより他のオプションファイルを指定することが可能。
その場合双方が有効になり、optionsで指定したほうが環境変数の指定分を上書きする形になる。
また、optionsで指定したほうのみを有効にすることも可能だ。
最後に
Astyleを使ってみての感想だが使い慣れていないが使用感は悪くない。
劇的なまでに汚いソースコードにはまだ使用していないがケアレスミスの修正には丁度いいと思った。
これからはmacへの適応、より効率のいい運用に着手していこうと思う。
参考サイト
・Artistic Style(AStyle)でC++のコードをきれいに整形する
・Artisitc Style Ver2.02.1のドキュメントを訳してみた