Project

General

Profile

Task #3895

Updated by Davide Pesavento over 7 years ago

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. 
 * "`explicit`" "explicit" and "`virtual`" "virtual" are not considered return types (and rightly so), but this means that explicit constructors and virtual destructors are written all in one line. This is minor and I think we can adapt our code style. 
 * The tool gets *very* confused by macros such as `PUBLIC_WITH_TESTS_ELSE_PRIVATE` 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. 
 * The alignment of "`<<`" "<<" after a line break within a logging macro is not what you would expect. 

 At least a few of these could be fixed with clever use of a lexer or similar, perhaps a Perl or Python script. However, unless there is someone who wants to manage the extra parts, it could be unmaintainable.

Back