[Development] clang-format config file.

Olivier Goffart olivier at woboq.com
Thu Jun 30 12:52:19 CEST 2016


Hi,

I have made a clang-format config file. I believe it should go into the 
qtrepotools repository, so I made this pull request:
https://codereview.qt-project.org/163941

You can download this file from there and put it in the parent directory of 
your qt repositories.  (clang-format search all the parent folders for a 
.clang-format file)

We don't want to reformat existing files, but this help to format only the 
lines that are touched in a given commit.  The git-clang-format tool can be 
used for that.

The git-clang-format tool is part of the clang. So it is probably packaged in 
your distribution as part of clang.

To use it, simply commit as before, but before pushing, run:

  git-clang-format HEAD^
  git diff  
  # look at the changes made by clang-format, possibly retify some of it
  git commit -a --amend

Then you can push.

If you want to run git-clang-format on several commit separately, the --exec 
feature of git rebase comes handy:

  git rebase -i --exec "git-clang-format HEAD^"

The rebase will stop if clang-format does changes so you can apply the changes 
to that last commit and continue with git rebase --continue

                        ⁂

The conf file is based on the WebKit style which is the closest builtin style 
to Qt. Then it was adjusted to fit better to the existing Qt style.

It follows the style closely, but there are some cases that might not be 
following existing practices. The question is if we want to try to fix clang-
format to be able to cope with them, or simply adapt the coding style to fit 
clang-format config.

Some of the things that are not possible with clang-format if to have all the 
function in one line like we sometimes have in our headers:

  inline const QString operator+(const QString &s1, const QString &s2)
  { QString t(s1); t += s2; return t; }


The style disabled any re-wraping of the comments, because the qdoc rules are 
not encoded in clang-format. So comments will not be touched.

But in general, I have been trying it on a few commits and it works quite 
well. You should try it as well and report the problems so they can be 
addressed.

-- 
Olivier

Woboq - Qt services and support - https://woboq.com - https://code.woboq.org



More information about the Development mailing list