Coding Convention
ROS Application follows Google Style Guide for coding convention. A few rules might be ignored depending on modules. For the full list of ignored rules, please see the following link:
C/C++
When you push your commits, ALWAYS run clang-format & cpplint to submit a commit with style change. If there is a change due to code style issues, make two separate commits: (Please do not include other codes' style change in the same commit)
- commit with style change only (i.e., commit clang-formatted original code - not your code change).
- commit with your code change only (i.e., contents only).
clang-format (https://clang.llvm.org/docs/ClangFormat.html)
clang-format automatically formats your code. Please, refer to http://releases.llvm.org/3.9.0/tools/clang/docs/ClangFormatStyleOptions.html for more details.
- Install the latest clang-format (>= 3.8)
$ sudo apt-cache search clang-format
$ sudo apt-get install -y clang-format-XX.XX
- Copy clang-format file from AuDri/ROS/catkin/style/.clang-format to your caktin workspace (catkin_ws), or copy .clang-format to root path of source codes.
- Run clang-format with --style=File option:
$ clang-format-XX.XX -i --style=File [my_source_code_file]
or
$ find . -name '*.h' -or -name '*.hpp' -or -name '*.cpp' | xargs clang-format-XX.XX -i -style=file $1
cpplint (https://github.com/cpplint/cpplint)
cpplint is a static C++ style checker following Google's C++ style guide. cpplint for ROS modules is available at AuDri/ROS/catkin/style/cpplint.py.
- Directly run it with:
$ python cpplint.py [file_path]
or
$ find . -name '*.h' -or -name '*.hpp' -or -name '*.cpp' | xargs python cpplint.py $1
Python
Formatter yapf (https://github.com/google/yapf)
We use yapf as a formatter for python files. It changes the python files according to the defined style in ~/.config/yapf/style file. We use pep 8. We use style config as below. You can use yapf with PIP.
$ sudo pip install --proxy=http://10.112.1.184:8080 yapf
$ vi ~/.config/yapf/style
[style]
based\_on\_style = pep8
indent\_width = 4
split\_before\_logical\_operator = true
$ yapf -i *.py
Checker pylint (https://www.pylint.org)
Pylint is a source code, bug and quality checker for the Python programming language. It follows the style recommended by PEP 8, the Python style guide. To check a python file with pylint:
$ sudo pip install --proxy=http://10.112.1.184:8080 pylint
$ cd AuDri
$ cp ROS/catkin/style/.pylintrc ~/
$ pylint your_file.py
Then, modify incorrect statements that are checked by pylint before submitting your PR.
PHP
PHP_Beautifier (https://github.com/clbustos/PHP_Beautifier)
This program reformat and beautify PHP 4 and PHP 5 source code files automatically. It is written in PHP 5 and has a command line tool
$ sudo apt-get install php-pear
$ sudo pear install PHP_Beautifier-0.1.15
The results of the search are