On Tue, Jun 25, 2024 at 12:41 PM Eelco Chaudron <echau...@redhat.com> wrote:

>
>
> On 25 Jun 2024, at 12:22, Ales Musil wrote:
>
> > On Tue, Jun 25, 2024 at 12:14 PM Eelco Chaudron <echau...@redhat.com>
> wrote:
> >
> >>
> >>
> >> On 25 Jun 2024, at 11:53, Ales Musil wrote:
> >>
> >>> On Tue, Jun 25, 2024 at 11:20 AM Eelco Chaudron <echau...@redhat.com>
> >> wrote:
> >>>
> >>>>
> >>>>
> >>>> On 25 Jun 2024, at 10:11, Dumitru Ceara wrote:
> >>>>
> >>>>> On 6/25/24 08:54, Ales Musil wrote:
> >>>>>> On Tue, Jun 25, 2024 at 8:48 AM Eelco Chaudron <echau...@redhat.com
> >
> >>>> wrote:
> >>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On 24 Jun 2024, at 17:52, Ales Musil via discuss wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>
> >>>>> Hi Ales,
> >>>>>
> >>>>> Thanks for bringing this up!
> >>>>>
> >>>>>>>> I would like to propose a universal coding style using
> clang-format
> >>>> [0].
> >>>>>>>> I've put together the config file that is matching the current
> >> coding
> >>>>>>> style
> >>>>>>>> as closely as possible [1]. I've tried it on some random pieces of
> >>>> code
> >>>>>>>> that we have in the OVN codebase and there are some instances
> where
> >> it
> >>>>>>>> doesn't much 1:1 (down below). The idea would be to add this into
> CI
> >>>> and
> >>>>>>>> run this only on diff so we don't have to modify old code. Let me
> >> know
> >>>>>>> what
> >>>>>>>> you think and if it would be acceptable. In the end we can have a
> >>>> style
> >>>>>>> and
> >>>>>>>> let some pieces of code diverge on that.
> >>>>>>>
> >>>>>>> I like the idea as it makes the maintainer’s live easier, as some
> >> might
> >>>>>>> slip through, and we can always ignore a specific warning if some
> >> other
> >>>>>>> style is used in the whole file. If it’s a directory you can
> override
> >>>> the
> >>>>>>> parent config file.
> >>>>>>>
> >>>>>
> >>>>> I agree, it will still be up to the maintainer to "waive" some of the
> >>>>> warnings if the suggested change would make the code look unnatural.
> >>>>> But, in my opinion, that should be fine.
> >>>>>
> >>>>>>
> >>>>>>>> Before:
> >>>>>>>> ctl_error(ctx, "Same routing policy already existed on the "
> >>>>>>>>           "logical router %s.", ctx->argv[1]);
> >>>>>>>>
> >>>>>>>> After:
> >>>>>>>>
> >>>>>>>> ctl_error(ctx,
> >>>>>>>>           "Same routing policy already existed on the logical "
> >>>>>>>>           "router %s.",
> >>>>>>>>           ctx->argv[1]);
> >>>>>>>
> >>>>>>> This might be something to get use too, or ignore (in GitHub), as
> >>>> almost
> >>>>>>> all code will continue filling up the next line(s).
> >>>>>>>
> >>>>>>
> >>>>>> Yeah it's a bit strange, however still readable, it really depends
> on
> >>>> the
> >>>>>> length of the string in this case. If the string fits into one line
> >> it's
> >>>>>> capable of having multiple arguments next to each other.
> >>>>>>
> >>>>>
> >>>>> Same here, it's not great but also not that terrible.  I think it's
> >>>>> probably acceptable.
> >>>>>
> >>>>>>
> >>>>>>>
> >>>>>>>> Before:
> >>>>>>>> return (out_port != VIGP_CONTROL_PATH
> >>>>>>>>         ? alpheus_output_port(dp, skb, out_port)
> >>>>>>>>         : alpheus_output_control(dp, skb, fwd_save_skb(skb),
> >>>>>>>>                                  VIGR_ACTION));
> >>>>>>>>
> >>>>>>>> After:
> >>>>>>>> return (
> >>>>>>>>     out_port != VIGP_CONTROL_PATH
> >>>>>>>>         ? alpheus_output_port(dp, skb, out_port)
> >>>>>>>>         : alpheus_output_control(dp, skb, fwd_save_skb(skb),
> >>>>>>> VIGR_ACTION));
> >>>>>>>
> >>>>>>> I assume this is a none problem, as you do not need the outer
> >>>> parenthesis
> >>>>>>> on return. Or is this for general match with parenthesis?
> >>>>>>>
> >>>>>>
> >>>>>> This is specific (from what I can tell) to return statements.
> Without
> >>>> the
> >>>>>> parenthesis it's way better:
> >>>>>>
> >>>>>> return out_port != VIGP_CONTROL_PATH
> >>>>>>            ? alpheus_output_port(dp, skb, out_port)
> >>>>>>            : alpheus_output_control(dp, skb, fwd_save_skb(skb),
> >>>>>>                                     VIGR_ACTION);
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> This one I don't really like but hopefully we won't have a lot of
> these
> >>>>> situations (multi-line ternary).  We should probably add clear
> >>>>> documentation (maybe we should improve the contribution guide in
> >>>>> general) and mention that warnings generated for multi-line ternary
> can
> >>>>> be ignored and the documented coding style should be used instead.
> >>>>
> >>>> I have not used clang’s linter for a while, but can you tell it not to
> >>>> warn/ignore specific styles? If not, maybe we can have the GitHub
> >> wrapper
> >>>> ignore specific style warnings.
> >>>>
> >>>
> >>>
> >>> You can use annotation on specific pieces of code via simple comment
> e.g.
> >>> "/*clang-format off */". We could use those to skip the warnings if
> >> needed.
> >>
> >> I do not think we should add this, as the code would quickly become a
> >> mess. I was suggesting that when you run this on the diff during the
> GitHub
> >> action, to add a wrapper that will not report certain violations, i.e.
> the
> >> ones we do not care about (do not like).
> >>
> >
> > Wouldn't that be very hard to detect? If we get diff of things that
> should
> > be changed I'm not sure how to detect if it's something that we should
> > ignore.
>
> Guess it’s not clear to me what you are going to use to lint only the
> diff. I was assuming the tool you were using will tell you why you are not
> compliant (maybe hinting to the configuration parameter), which you could
> then grep on.
>
> But I have not looked at tooling around this for quite a while. Last time
> I used this was just for vscode to correct my coding on the fly (but that
> was a couple of years ago).
>
> //Eelco
>
>
So there is a git-clang-format tool that can report diff what is supposed
to be applied, or it can do the fixing itself. The clang-format has
something called dry run, which reports only warning/errors but nothing
specific. All are classified as "code should be clang-formatted
[-Wclang-format-violations]". I don't think we can ignore specific ones.

Thanks,
Ales
-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

amu...@redhat.com
<https://red.ht/sig>
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to