Actions
Task #3895
openWrite a style file for clang-format
Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
Due date:
% Done:
0%
Estimated time:
Tags:
Description
Clang-format is a tool that reformats C++ code (among other languages) according to a configuration file. The program is expressive and useful, and it would be a good extension to the toolchain.
Currently, the system has some limitations. According to Davide Pesavento:
"break-after-return-type" doesn't work on overloaded operators, they are not considered functions, thus the rule isn't applied.Fixed in clang-format 10constexpr
/explicit
/virtual
are not considered return types (and rightly so), but this means that constexpr/explicit constructors and virtual destructors are reformatted all on one line. This is minor and I think we can adapt our code style.- In lambda expressions, clang-format always removes the space between capture list and param list. This is very minor and we can adapt our style.
- clang-format gets very confused by macros such as
PUBLIC_WITH_TESTS_ELSE_PRIVATE
(I guess it doesn't expand them) and it makes a terrible mess with the lines that follow, until it encounters another access specifier or the end of the class declaration. With clang-format 10, this behavior can be improved by adding these macros toStatementMacros
. Even then, it's still less than ideal becauseAccessModifierOffset
is not applied, but maybe we can live with it. - The alignment of "
<<
" after a line break within a logging macro is not what you would expect. One potential workaround is to list all logging macros inWhitespaceSensitiveMacros
, but that disables formatting completely inside those macros. Enums containing few short enumerators that could fit in one line are reformatted to be all on the same line.This was made configurable viaAllowShortEnumsOnASingleLine
in clang-format 11- It would be nice if we could enable
AlignConsecutiveAssignments
for enums only.
We should also take a look at uncrustify.
Actions