Interesting discussion about using clang-format Qt wide. As someone who 
implemented something like that in a project (of smaller size than Qt, but not 
all that small) some points:
 
- clang-format virtually annihilates A LOT of manual work. It might not seem 
like much but I have measured it and even had to work on two projects 
simultaneously where only one had clang-format. It was staggering how much time 
is spent on formatting when done manually. And how much it annoys you since you 
KNOW it can be done for you, automatically and always correctly. It also speed 
things up because if you make a formatting mistake it will be corrected as soon 
as you save the file in Qt Creator. So you don't bother correcting it, you just 
go on typing or hit ctrl+s if it annoys you to see it. You will get seriously 
addicted to that. It is really quite liberating.
 
- I have read many concerns here about loss of immediate history, that 
clang-format does not get it always right etc. Well we had those too but one 
thing beats them all - free consistency. I could hardly believe it but even 
though I did not like all of the rules we put in it the fact that they were 
consistent everywhere made reading the code far easier than before. You could 
not be surprised, you knew where will everything be. Whether it was includes 
and their ordering (the epic battles about that in pre-clang-format era...), 
alignment, wrapping, you name it. Once you could rely on the fact that it will 
be the same everywhere you suddenly did not have to focus on formatting which 
(again surprisingly) took a lot of code review time for all parties.
 
- Continuous integration. I cannot stress this one enough. Make it a standard 
in the repo, make everyone enable it in Qt Creator, make a git hook and make it 
part of the build. Our CI failed when someone committed incorrectly formatted 
file telling him as much even before compilation or anything. It happened 
rarely as most people used the git hook but still.
 
- Most people will be sceptical until they start working with it. I guess this 
is a given for any new technology or approach. I know I was. But I am yet to 
come by a colleague that would complain about it or who would want to remove 
it. It might not be perfect but the benefits far outweigh any issues.
 
And on more practical note:
 
- We converted all sources at once and it has not caused any problems - it's 
just formatting anyhow.
- Some files (very few) turned out to be somewhat broken but the reason for that was that 
they were curiously formatted in the first place. We fixed those as they were 
encountered. It generated negligible amount of extra "work" (as mentioned 
hitting Enter for new line and saving file to reformat typically was the trick).
 
I became a huge fan of clang-format thanks to making my work a lot more 
pleasant and less tedious experience. It might not seem like much but it really 
makes a big difference in daily work. I really hope it will be adopted Qt-wide.
 
My 2 cents and I would gladly answer any questions about practicalities as 
someone who did pretty much all of it from converting all sources to 
implementing the git hook and CI stuff.
 
Best wishes,


Michael Vlach
Software Engineer
NCR

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to