Some points on clang-format usage

Stephan Bergmann sbergman at redhat.com
Wed Dec 13 09:50:31 UTC 2017


On 11/17/2017 10:03 AM, Stephan Bergmann wrote:
> * clang-format cannot automatically reformat code
> 
> Most comments in the code are written by humans, for humans.  They are 
> often placed in a way that makes it technically unclear what code they 
> pertain to, relying on humans to nevertheless easily discern that.  For 
> example, in
> 
>> void f(int x) { g(x + 1); } // long comment explaining how g 
>> internally subtracts one
> 
> the comment clearly pertains to the call to g.  Yet, clang-format will 
> reformat this to something like
> 
>> void f(int x)
>> {
>>     g(x + 1);
>> } // long comment explaining how g internally subtracts one
> 
> instead of
> 
>> void f(int x)
>> {
>>     g(x + 1); // long comment explaining how g internally subtracts one
>> }
> 
> thereby obscuring things.  Always review automatically reformatted code 
> for glitches like this.


Another gotcha to watch out for related to comments is how

> void decl1(); // lengthy comment comment comment comment comment comment comment comment comment
>               // comment comment comment comment comment comment comment comment pertaining to decl1
> void decl2();
>     // lengthy comment comment comment comment comment comment comment comment pertaining to decl2
> void decl3();
> 
> void f() {
>     statement1(); // lengthy comment comment comment comment comment comment comment comment comment
>                   // comment comment comment comment comment comment pertaining to statement1
>     statement2();
>         // lengthy comment comment comment comment comment comment comment pertaining to statement2
>     statement3();
> }

is reformatted to

> void decl1(); // lengthy comment comment comment comment comment comment comment comment comment
>     // comment comment comment comment comment comment comment comment pertaining to decl1
> void decl2();
> // lengthy comment comment comment comment comment comment comment comment pertaining to decl2
> void decl3();
> 
> void f()
> {
>     statement1(); // lengthy comment comment comment comment comment comment comment comment comment
>         // comment comment comment comment comment comment pertaining to statement1
>     statement2();
>     // lengthy comment comment comment comment comment comment comment pertaining to statement2
>     statement3();
> }


More information about the LibreOffice mailing list