[Development] clang-format config file.

Dominik Holland dominik.holland at pelagicore.com
Thu Jun 30 13:01:30 CEST 2016


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 ?

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

-- 
Dominik Holland
SENIOR SOFTWARE ENGINEER

Pelagicore AG
Balanstr. 55, 81541 Munich, Germany
+49 (0)171 760 25 96
dominik.holland at pelagicore.com
www.pelagicore.com




More information about the Development mailing list