Coding guidelines for the ALICE O2 project.
Documents
Formatting tool
The ALICE O2 projects use clang-format to push for a common code formatting. The rules are defined in
the clang-format configuration file in this repository (which is propagated to other AliceO2Group repositories). With an adiabatic
approach, all changes have to follow the formatting rules. A script, described below, can be
used to integrate the formatting into git and suggest formatting only for
changed lines.
Install clang-format and git integration
Note : The installation of clang using aliBuild is not necessary on Mac.
- Build clang (to be done once)
aliBuild build --defaults o2 Clang
- Load clang and clang-format
- Install git-clang-format
cd $HOME mkdir -p bin cd bin wget llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/git-clang-format chmod u+x git-clang-format
Check files' formatting
Show correctly formatted version of a file :
clang-format -style=file SOURCEFILE
Directly apply the style to a file :
clang-format -style=file -i SOURCEFILE
Apply the style to all the source and header files in a directory (recursive) :
find . -iname "*.h" -o -iname "*.cpp" | xargs clang-format -style=file -i
Display what needs to be fixed in a file :
clang-format -style=file <SOURCEFILE> | diff <SOURCEFILE> -
Check commits' formatting
git clang-format invokes clang-format on the changes in current files
or a specific commit. E.g. for the last commit
Or for all commits done with respect to the remote branch state
git clang-format origin/dev
Using an IDE
A number of config files are available here for various IDEs.
Configuration files for editors
CLion
- Download,
- Go to File -> Import Settings.
FAQ
- Q I strongly disagree with rule X !
- A Feel free to contact the WP3 (alice-o2-wp3@cern.ch) to share your concern(s). Rules have already been amended, abandoned or added based on the users feedback. However, please comply with the rules until a change is agreed by CWG11.