おすすめのC++コードフォーマッタ/ビューティファイア徹底解説
ソースコードを美しく整形し、適切なインデントを自動で整えてくれるC++コードフォーマッタ(ビューティファイア)は、実にたくさんの種類が存在します。コードの可読性を向上させ、チーム開発でのスタイル統一にも役立つこれらのツールは、C++プログラマーにとって欠かせない存在といえるでしょう。
本記事では、代表的なC++コードフォーマッタ/ビューティファイアを、ローカル環境向けとオンラインサービス向けに分けてご紹介します。
ローカルで使えるC++コードフォーマッタ/ビューティファイア
| ツール名 | 概要 |
|---|---|
| Astyle | ソースコードフォーマッタです。C++やJavaをはじめ、複数のプログラミング言語に対応しています。最新バージョンは2.03で、2013年4月にリリースされました。 |
| Clang-Format | Clangコンパイラに付属するコマンドラインツールです。オープンソースとして公開されており、C++とPythonで実装されています。最新バージョンは3.3です。 |
| Universal Indent GUI | さまざまな言語向けのコード整形ツールを、GUIから簡単に操作できるようにしたツールです。最新バージョンは1.2.0で、2012年1月にリリースされました。 |
| Jindent | Javaで開発されたコード整形ツールで、C、C++、Java、SQLなど幅広い言語のコードビューティファイに対応しています。 |
| Cppcheck | オープンソースの静的解析ツールです。最新バージョンは1.59で、2013年3月にリリースされました。厳密にはコード整形ツールではなく、コードの問題点を検出する品質チェック用ツールという位置づけです。 |
オンラインで使えるC++コードフォーマッタ/ビューティファイア
インストール不要で手軽に利用できる、オンラインのコード整形サービスも多数あります。主なものは以下の通りです。
| ツール名 | 概要 |
|---|---|
| Quick Highlighter | C++、PHP、HTML、Perlなど複数の言語に対応したコード整形ツールです。組み込みのキーワードやデータ型をハイライト表示してくれます。 |
| Semantic Designs Code Formatter | ブラウザ上で利用できるオンラインのコードビューティファイアで、C++言語に対応しています。 |
| PrettyPrinter | C++、C、Java、PHPなどの言語に対応しており、細かい整形オプションも提供されています。 |
| Highlight.js | コード内の構文を自動的にハイライト表示するツールです。C++、Ruby、Perlなど、多くの言語に対応しています。 |
| Polystyle | ユーザー個人のコーディングスタイルを学習し、それに合わせてソースコードを自動的に再整形してくれるツールです。C++、CSS、HTML、Javaなどに対応しています。 |
まとめ
コードフォーマッタを活用すれば、手作業でのインデント調整から解放され、常に読みやすく一貫性のあるコードを保つことができます。CLIツールによる自動整形が必要な場合は「Clang-Format」や「Astyle」、GUIで手軽に試したい場合は「Universal Indent GUI」、環境構築なしでさっと使いたい場合にはオンラインツールが便利です。プロジェクトの規模や開発スタイルに合わせて、最適なツールを選んでみてください。
-
C++で解く「迷路 II」問題 ― 壁に当たるまで転がるボールの最短距離をBFSで求める
問題概要 空きマスと壁からなる迷路の中にボールがあります。ボールは上・下・左・右のいずれかの方向に転がって空きマスを進むことができますが、壁にぶつかるまで止まることはできません。ボールが停止したときに、初めて次の方向を選ぶことができます。 ボールのスタート位置、目的地、そして迷路そのものが与えられるので、ボールが目的地で停止するまでの最短距離を求めてください。ここでの距離とは、ボールが転がって通過した空きマスの数のことです(スタート位置は含まず、目的地は含みます)。どうしても目的地で停止できない場合は -1 を返します。 迷路は2次元配列で表現されます。1 が壁、0 が空きスペースを意味し、迷
-
C++で解く迷路問題:転がるボールが目的地に止まれるかをBFSで判定する方法
迷路の中にボールがあるとします。迷路には空きスペース(通路)と壁があります。ボールは上下左右のいずれかの方向に転がって空き通路を進むことができますが、壁にぶつかるまで止まりません。ボールが停止したときに、次の方向を選べます。この問題では、ボールの開始位置、目的地、そして迷路そのものが与えられ、「ボールが目的地の位置で停止できるかどうか」を判定する必要があります。迷路は2次元配列で表現され、1は壁、0は空きスペースを意味します。迷路の外周はすべて壁になっています。開始位置と目的地は行・列のインデックス(座標)で与えられます。問題例たとえば、次のような2次元配列で表される迷路を考えてみましょう。0