I agree with Ian — looks like a false positive on closer inspection. The cost of requiring braces on single-line statements is one of a reduction in signal-to-noise ratio (and I suppose less fitting on the screen).
Cheers, Jeff. > On 12 Jan 2020, at 01:32, Bevan Weiss <bevan.we...@gmail.com> wrote: > > Is there any harm in having braces for each if / else / for / while statement > (regardless of if it’s single line or not)? > There is the possibility of harm in not doing it, so it seems that adding it > to the code style rules, would be prudent. > > That Coverity is throwing a positive at this implies that it is not ‘good’ > coding practise in this instance (given it’s a macro being called, and the > macro could easily expand to something which causes issues in the Kicad > codebase, but nowhere else). > > - Bevan > > From: Kicad-developers > <kicad-developers-bounces+bevan.weiss=gmail....@lists.launchpad.net> On > Behalf Of Ian McInerney > Sent: 12 January 2020 12:24 > To: Jeff Young <j...@rokeby.ie> > Cc: KiCad Developers <kicad-developers@lists.launchpad.net> > Subject: Re: [Kicad-developers] Coverity finds an ugly bug in wxWidgets > > I thought that Wayne was agreeing with requiring them on all lengths of > statements (single line). > > Although, now that I look at the code closer, I don't know if this is as dire > a problem. While it is a macro, it is defined like this: > #define wxLogTrace > \ > if ( !wxLog::IsLevelEnabled(wxLOG_Trace, wxLOG_COMPONENT) ) > \ > {} > \ > else > \ > wxMAKE_LOGGER(Trace).LogTrace > > so it has an else statement already included in it. That means that any else > condition following it will be placed with the next higher level of if > statements outside the macro (and there is no worry about having an else-if > associated with this, since the else must come after all else-if statements, > meaning that this if condition is effectively ended). > > The wxASSERT macro is an example of a case where they did introduce a guard > scope around the macro contents (by placing it inside a do-while loop that > only executes the first pass), since it is an if with only an else-if > statement and no else statement. If they hadn't given it that scoping, then > any else statements in user code that follows it would be associated with the > wxASSERT if statement instead. > > It seems to me that on closer inspection, this may just be Coverity throwing > a false positive at us. > > -Ian > > On Sun, Jan 12, 2020 at 12:42 AM Jeff Young <j...@rokeby.ie > <mailto:j...@rokeby.ie>> wrote: >> We could also just require them on if/then/else statements…. >> >> >>> On 12 Jan 2020, at 00:35, Jeff Young <j...@rokeby.ie >>> <mailto:j...@rokeby.ie>> wrote: >>> >>> Sure, but unless we go with Seth’s option, then it’s just going to happen >>> again…. >>> >>> >>>> On 11 Jan 2020, at 23:28, Wayne Stambaugh <stambau...@gmail.com >>>> <mailto:stambau...@gmail.com>> wrote: >>>> >>>> I agree that adding the curly brackets would be the best option as well. >>>> It's less than ideal but it resolves the issue. >>>> >>>> On 1/11/20 6:21 PM, Ian McInerney wrote: >>>> >>>>> That is probably the best option, since many things in wxWidgets are >>>>> implemented as macros but masquerade as functions. >>>>> >>>>> -Ian >>>>> >>>>> On Sat, Jan 11, 2020 at 10:07 PM <s...@kipro-pcb.com >>>>> <mailto:s...@kipro-pcb.com> >>>>> <mailto:s...@kipro-pcb.com <mailto:s...@kipro-pcb.com>>> wrote: >>>>> >>>>> I suppose that we could update our coding policy to require braces >>>>> even for single line statements. >>>>> >>>>> -Seth >>>>> >>>>> On Jan 11, 2020 1:28 PM, Jeff Young <j...@rokeby.ie >>>>> <mailto:j...@rokeby.ie> >>>>> <mailto:j...@rokeby.ie <mailto:j...@rokeby.ie>>> wrote: >>>>> >>>>> This looks safe enough: >>>>> >>>>> if( n_changed ) >>>>> wxLogTrace( "CN", "Cluster %p : net : %d %s\n", cluster.get(), >>>>> cluster->OriginNet(), (const char*) >>>>> cluster->OriginNetName().c_str() ); >>>>> else >>>>> wxLogTrace( "CN", "Cluster %p : nothing to propagate\n", >>>>> cluster.get() ); >>>>> >>>>> >>>>> Sadly, the macro wxLogTrace is not parenthesized, and starts >>>>> with an if statement. So the else doesn’t go where you think it >>>>> does…. >>>>> >>>>> Any ideas on how to fix this that don’t include constantly >>>>> checking to see if new instances have been introduced? >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~kicad-developers >>>>> <https://launchpad.net/~kicad-developers> >>>>> Post to : kicad-developers@lists.launchpad.net >>>>> <mailto:kicad-developers@lists.launchpad.net> >>>>> <mailto:kicad-developers@lists.launchpad.net >>>>> <mailto:kicad-developers@lists.launchpad.net>> >>>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>>> <https://launchpad.net/~kicad-developers> >>>>> More help : https://help.launchpad.net/ListHelp >>>>> <https://help.launchpad.net/ListHelp> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~kicad-developers >>>>> <https://launchpad.net/~kicad-developers> >>>>> Post to : kicad-developers@lists.launchpad.net >>>>> <mailto:kicad-developers@lists.launchpad.net> >>>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>>> <https://launchpad.net/~kicad-developers> >>>>> More help : https://help.launchpad.net/ListHelp >>>>> <https://help.launchpad.net/ListHelp> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~kicad-developers >>>> <https://launchpad.net/~kicad-developers> >>>> Post to : kicad-developers@lists.launchpad.net >>>> <mailto:kicad-developers@lists.launchpad.net> >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> <https://launchpad.net/~kicad-developers> >>>> More help : https://help.launchpad.net/ListHelp >>>> <https://help.launchpad.net/ListHelp> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~kicad-developers >>> <https://launchpad.net/~kicad-developers> >>> Post to : kicad-developers@lists.launchpad.net >>> <mailto:kicad-developers@lists.launchpad.net> >>> Unsubscribe : https://launchpad.net/~kicad-developers >>> <https://launchpad.net/~kicad-developers> >>> More help : https://help.launchpad.net/ListHelp >>> <https://help.launchpad.net/ListHelp> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp>_______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers> > Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > Unsubscribe : https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers> > More help : https://help.launchpad.net/ListHelp > <https://help.launchpad.net/ListHelp>
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp