Home

Awesome

ROSCpp Code Format

Why waste your valuable development time formatting code manually when we are trying to build amazing robots?

The repo contains an auto formatting script for the ROS C++ Style Guidelines.

Updated June 2020 to support Ubuntu 18.04 / ROS Melodic.

Setup

Usage

You can run clang_format in several ways:

Command Line

Format single file:

clang-format-3.9 -i -style=file MY_ROS_NODE.cpp

Format entire directory recursively including subfolders:

find . -name '*.h' -or -name '*.hpp' -or -name '*.cpp' | xargs clang-format-3.9 -i -style=file $1

Emacs Editor Configuration

In your ~/.emacs config file, add the following:

Format your source code if its in some directory such as the catkin_ws (feel free to change keywords catkin_ws):

(defun run-ros-clang-format ()
  "Runs clang-format on cpp,h files in catkin_ws/ and reverts buffer."
  (interactive)
  (and
   (string-match "/catkin_ws/.*\\.\\(h\\|cpp\\)$" buffer-file-name)
   (save-some-buffers 'no-confirm)
   (shell-command (concat "clang-format-3.9 -style=file -i " buffer-file-name))
   (message (concat "Saved and ran clang-format on " buffer-file-name))
   (revert-buffer t t t)
))

Set a keyboard shortcut to run, such as F12

(global-set-key [f12] 'run-ros-clang-format)

Atom Editor Configuration

Install the clang-format package via the Atom package manager or apm install clang-format.

In the package settings set clang-format-3.9 as your executable and point 'Style' to your .clang_format file.

Usage with Qt

To set up Qt Creator to use this clang formatting follow the instructions here.

On the Clang Format Panel change the Clang Format command to 'clang-format-4.0'. After this, choose Use predefined style: File, and then create a soft link on the root of your files workspace (where all your code is) pointing to this file and with the same name (.clang-format).

It is recomended to deactivate the Enable auto format on file save option and create a keyboard shortcut

Usage with Sublime

Installation Package Control in Sublime:

https://packagecontrol.io/installation

Configuration Clang format in Sublime:

https://github.com/rosshemsley/SublimeClangFormat/blob/master/README.md

Usage with Visual Studio Code

Install the C/C++ extension.

Put the .clang-format file in your workspace.

Select Format Document in the right-click context menu, or use the shortcut Ctrl+Shift+I.

This explanation and more here.

Exceptions to clang-format

Occationally the auto formatting used by clang-format might not make sense e.g. for lists of items that are easier to read on separate lines. It can be overwritten with the commands:

// clang-format off
... some untouched code
// clang-format on

Use this sparingly though.