This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Some real-life feedback on -Wmisleading-indentation


On 01/11/2016 07:53 AM, David Malcolm wrote:


In Chapter 31 of "Code Complete" (I'm looking at the 2nd edition),
McConnell discusses the use of whitespace in code layout; he talks about
both blank lines and indentation as being useful for providing hints to
the human reader about the structure of the code.

In several places he talks about the use of blank lines for separating
groups of related statements into "paragraphs", that blank lines in code
can and should be used to demarcate logical "blocks" of related
statements (e.g. pp747-8 of 2nd edition).

I think that in the Wine example above the blank lines do effectively
create "paragraphs" of code to a human, and I agree that a human reader
is unlikely to think of the

if (0)

as guarding the

    params.cArgs = 1;

since they're in different "paragraphs".

I apologize if I'm belaboring the point here, but I think that
-Wmisleading-indentation should make use of blank lines of code.

I've posted patches to do so here, firstly here:

https://gcc.gnu.org/ml/gcc-patches/2015-10/msg03225.html

which was rejected thusly by Jeff:
I would argue that each of these does represent misleading
indentation and that the warning is warranted for each.
Perhaps they aren't as bad as prior cases, but I'd still
consider them mis-leading.
(https://gcc.gnu.org/ml/gcc-patches/2015-10/msg03242.html)
I still stand by that assessment.

ISTM for the wine case the backwards indentation (column-wise) of the IF may be the right filter, maybe that in conjunction with the blank line heuristic. However, I stand by my belief that the blank line heuristic is wrong when used by itself.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]