[cfe-dev] Warning on strange indent

Alp Toker alp at nuanti.com
Mon Feb 24 18:00:32 PST 2014


On 24/02/2014 21:41, Philip Reames wrote:
> I can't help with the work itself, but as a developer I'd love to see 
> something like this in Clang. It would be very very useful.
>
> I can see an argument for this being stylistic, but as an 
> off-by-default option, I see no real downside to including it.

Yes, in fact there are already whitespace-sensitive warning diagnostics 
that are on by default:

$ cat ws.cpp
void f() {
for (;;);
return;
}

$ clang ws.cpp
ws.cpp:2:11: warning: for loop has empty body [-Wempty-body]
for (;;);
^
ws.cpp:2:11: note: put the semicolon on a separate line to silence this 
warning
1 warning generated.

It'll be a good idea to group these together under a warning category so 
they can be disabled by tools like ccache that compress or modify the 
user's whitespace, say -Wno-significant-whitespace.

Alp.


>
> Philip
>
> On 02/23/2014 03:58 PM, Nico Weber wrote:
>> Hi,
>>
>> motivated by the current libsecurity_ssl brouhaha, I experimented 
>> with giving clang a -Windent that warns on strange indent. For 
>> performance and other reasons, it it only compares the indent of the 
>> first statement after a non-composite if/for/while with the indent of 
>> the if/for/while itself, and warns if the statement following the 
>> if/for/while (not the child of the if/for/while, but the statement 
>> after that) has a higher indent than the if/for/while. So it'd warn 
>> on this:
>>
>> if (1)
>> do_stuff();
>> do_stuff(); // Has higher indent than the if
>>
>> This works better than I thought it would – I tried it on chromium, 
>> and while it fires quite a bit, when it fires it's justified most of 
>> the time. It's probably too loud to be enabled by default, but it 
>> should do well in nicely-formatted codebases such as llvm, webkit, 
>> chromium's non-third-party code, etc.
>>
>> I'm away for the next week, but maybe someone wants to pick it up. 
>> The patch and many code snippets that are tricky are in 
>> http://llvm.org/bugs/show_bug.cgi?id=18938 .
>>
>> (I also tried a different approach that didn't work as well, see bug.)
>>
>> Nico
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-dev mailing list