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). >>>>>> [0] https://gist.github.com/almusil/d9fc05c9e9ab6cef9448e123b49c351e >>>>>> [1] >>>>> >> https://docs.ovn.org/en/stable/internals/contributing/coding-style.html >>>>>> >>>>>> -- >>>>>> >>>>>> 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 >>>>> >>>>> >>>> >> >> > > -- > > 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