Coding guidelines for the ALICE O2 project.
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.
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
alienv load Clang/latest
- 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
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> -
git clang-format
invokes clang-format
on the changes in current files
or a specific commit. E.g. for the last commit
git clang-format HEAD~1
Or for all commits done with respect to the remote branch state
git clang-format origin/dev
A number of config files are available here for various IDEs.
- Download,
- Go to File -> Import Settings.
- Q I strongly disagree with rule X !
- A Feel free to contact the WP3 ([email protected]) 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.