ROS 2のC++コードをフォーマットしよう!
概要
c++のコードをそのまま書いたままにしていませんか?
コードの整形を常にしておくと、見やすかったり、バグの抑制になるかもしれません
ということでコード整形をやる方法について紹介します
コード整形
コード整形を行う場合、
・保存時にコード整形をやる
・やりたい時にコード整形をやる
2択があると思います。
それぞれ別のやり方で説明したいと思います。
保存時にコード整形をやる
VSCodeを使用します
事前にclang-formatをインストールします
sudo apt install clang-format
次にVSCodeの方で下記のプラグイン(Clang-Format[Xaver Hellauer])をインストールします
次にVScodeの方でformatに関する設定を書きます。
VSCode上でCtl+Shift+p
のショートカットキーでコマンドパレットを展開します。
その中でPreferences: Open User Settings (JSON)
を選択します。
選択したら、setting.json
が下記のように開かれます。(書かれてる内容は別々なので以下の図と違っても問題ないです。)
そこにformatの設定について追記をします。
開いたsetting.jsonに下記の設定を追加します。
"clang-format.executable": "/usr/bin/clang-format",
"editor.formatOnSave": true,
"editor.formatOnType": false,
"[cpp]": {
"editor.defaultFormatter": "xaver.clang-format"
},
これでc++のコードを保存した時にコードが整形されると思います。
また、clang-formatは、.clang-formatというファイルでフォーマットのルールを変更することが出来ます。そのルールさえ用意すれば、フォーマットをかけた時に誰でも同じようなコードになるので
複数人で開発をする時に便利です。
ROS 2のHumbleだと以下の.clang-format
が公開されています。
パッケージの一番上にこれを持ってくるだけで良いです。
↓こんな感じ
repository
├── .clang-format
├── include
└── src
やりたい時にコード整形をやる
ROS 2ではコードをフォーマットするコマンドラインツールがament_lintに組み込まれています。
以下でコマンドでコードのフォーマットが可能です。
ament_uncrustify --reformat src/ include/
コード整形ではないが
コード整形ではないが、ROS 2のコードして問題があったときに指摘してくれる
Linterというのがあります。
パッケージ下で以下のコマンドを実行すると、ここを直せとお叱りを受けます。
ament_cpplint
イケイケパッケージにするためにぜひやってみてください。
Discussion