[Development] clang-format config file.

Olivier Goffart olivier at woboq.com
Thu Jun 30 13:37:01 CEST 2016


On Donnerstag, 30. Juni 2016 13:01:30 CEST Dominik Holland wrote:
> Hi Olivier,
> 
> Am 06/30/2016 um 12:52 PM schrieb Olivier Goffart:
> > 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.
> 
> I think it would be cool to have a built-in Qt config, as it would be
> very convenient also for other developers which work with Qt.
> 
> > 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.
> 
> thx for uploading this.
> 
> We used clang-format in one of our projects and what we've seen is that
> the clang-format version used for the formatting is important and can
> lead to different results.
> 
> Which version did you use ?

I was using clang 3.8.


> Debian(unstable) is currently offering the following versions for me:
> 
> clang-format - Tool to format C/C++/Obj-C code
> clang-format-3.5 - Tool to format C/C++/Obj-C code
> clang-format-3.6 - Tool to format C/C++/Obj-C code
> clang-format-3.7 - Tool to format C/C++/Obj-C code
> clang-format-3.8 - Tool to format C/C++/Obj-C code
> clang-format-3.9 - Tool to format C/C++/Obj-C code
> clang-format-3.4 - Tool to format C/C++/Obj-C code
> 
> If the version is not packaged for your distribution you might be able
> to download a binary version here: http://llvm.org/releases/download.html
> 
> Dominik

-- 
Olivier

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




More information about the Development mailing list