[PATCH] Add utilities to check style

Simo simo at samba.org
Tue Apr 24 17:35:54 UTC 2018


On Tue, 2018-04-24 at 19:04 +1000, Martin Schwenke via samba-technical
wrote:
> On Mon, 23 Apr 2018 11:48:25 -0400, Simo <simo at samba.org> wrote:
> 
> > On Mon, 2018-04-23 at 16:13 +1000, Martin Schwenke wrote:
> > > On Sat, 21 Apr 2018 17:34:12 -0400, Simo via samba-technical
> > > <samba-technical at lists.samba.org> wrote:
> > >   
> > 
> >  [...]  
> >  [...]  
> > > > On Sun, 2018-04-22 at 09:25 +1200, Gary Lockyer via samba-technical
> > > > wrote:  
> > 
> >  [...]  
> > > > You are right, attached fixed patch.  
> > > 
> > > A couple more comments, now that I've tested it on more changes...  :-)
> > > 
> > > * It doesn't like comments like this:
> > > 
> > >   /*
> > >      Hello world
> > >   */
> > > 
> > >   Either do I!  :-)  However, README.Coding doesn't say anything about
> > >   this and we have plenty of them in the code.  Not sure what to
> > >   suggest here.  
> > 
> > Unless we have a strong desire to allow those, I would just switch to
> > the more consistent checks this tool performs.
> > More checks are not necessarily bad unless we have an explicit reason
> > to dislike a more specific style check.
> > More consistency is always a good thing in my book, more freedom is ok
> > only when there is a good reason to allow it.
> 
> I agree.  But then we should propose updates to READING.Coding in
> parallel.

I can do that.

> > > * The "Un-cuddled open brace" thing is going to be annoying
> > > 
> > >   If you're initialising an array of structures then I don't see how
> > >   you can avoid this warning.
> > > 
> > >   Similarly, when initialising a fairly long array of structures you
> > >   might want to have the values inline, with opening and closing braces
> > >   on the same line as the data.  However, this generates lots of
> > >   complaints.  :-(  
> > 
> > I do not see why we want this to be a thing to be honest,.
> > 
> > We do:
> >   struct foo bar = {
> >     data
> >   }
> > We do not do:
> >   struct foo bar = 
> >   {
> >      data
> >   }
> > do we ?
> 
> No, but we do:
> 
> struct foo bar[] = {
> 	{ "a", 1 },
> 	{ "b", 2 },
> };
> 
> The above generates extra warnings.
> 
> However, even if you do:
> 
> struct foo bar[] = {
> 	{
> 		"a", 1
> 	},
> 	{
> 		"b", 2 
> 	},
> };
> 
> (which gets unwieldy for large initialisations) those opening braces
> are still un-cuddled... though the other warnings go away.  :-(

Oh, I did not notice the warnings, I will fix that, I think the style
in the first case is just fine.

> > > * "Preprocessor statement in function body" is also interesting
> > > 
> > >   We have:
> > > 
> > > static bool syslog_log_validate(const char *option)
> > > {
> > >         if (option == NULL) {
> > >                 return true;
> > > #ifdef _PATH_LOG
> > >         } else if (strcmp(option, "nonblocking") == 0) {
> > >                 return true;
> > > #endif
> > >         } else if (strcmp(option, "udp") == 0) {
> > >                 return true;
> > >         } else if (strcmp(option, "udp-rfc5424") == 0) {
> > >                 return true;
> > >         }
> > > 
> > >         return false;
> > > }
> > > 
> > >   This seems like a sensible thing to do...  
> > 
> > Tend do be horrible for readbility and also source of code flow errors,
> > but if we *really* want that I guess we can disable that check too.
> 
> I think it is OK for short functions.  I'm not sure how else you would
> do it, apart from defining different functions depending on whether
> _PATH_LOG is defined.

I always defined different helper functions in recent years:
#ifdef _PATH_LONG
bool check_nonblocking(const char *option)
{
	return strcmp(option, "nonblocking") == 0;
}
#else
bool check_nonblocking(const char *option)
{
	return false
}

and in the body:
[..]
	} else if check_nonblocking(option) {
		return true;
[..]

> > Attached new patch that disables also preprocessor statement checks,
> > but keeps the rest. including un-cuddled errors. Can you show me an
> > example where the style using a bare braces is desirable ?
> 
> Yeah, above.  :-)

Thanks, will see if we can address that, easily, or will disable ...

Simo.

> peace & happiness,
> martin
> 



More information about the samba-technical mailing list