From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Wang, Lei" <lei4.wang@intel.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC PATCH] Add qemu .clang-format
Date: Thu, 1 Sep 2022 09:12:49 +0100 [thread overview]
Message-ID: <YxBpgeL7yJIkXV/f@redhat.com> (raw)
In-Reply-To: <d865b7f4-b3bc-9f24-a697-6ff830637133@intel.com>
On Thu, Sep 01, 2022 at 09:08:33AM +0800, Wang, Lei wrote:
> On 8/31/2022 6:39 PM, Daniel P. Berrangé wrote:
> > On Wed, Aug 31, 2022 at 05:18:34PM +0800, Wang, Lei wrote:
> > >
> > >
> > > On 8/31/2022 4:49 PM, Daniel P. Berrangé wrote:
> > > > On Wed, Aug 31, 2022 at 02:23:51PM +0800, Wang, Lei wrote:
> > > > >
> > > > > On 10/2/2015 1:30 AM, marcandre.lureau@redhat.com wrote:
> > > > > > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> > > > > >
> > > > > > clang-format is awesome to reflow your code according to qemu coding
> > > > > > style in an editor (in the region you modify).
> > > > > >
> > > > > > (note: clang-tidy should be able to add missing braces around
> > > > > > statements, but I haven't tried it, it's quite recent)
> > > > > >
> > > > > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > > > > > ---
> > > > > > .clang-format | 6 ++++++
> > > > > > 1 file changed, 6 insertions(+)
> > > > > > create mode 100644 .clang-format
> > > > > >
> > > > > > diff --git a/.clang-format b/.clang-format
> > > > > > new file mode 100644
> > > > > > index 0000000..6422547
> > > > > > --- /dev/null
> > > > > > +++ b/.clang-format
> > > > > > @@ -0,0 +1,6 @@
> > > > > > +BasedOnStyle: LLVM
> > > > > > +IndentWidth: 4
> > > > > > +UseTab: Never
> > > > > > +BreakBeforeBraces: Linux
> > > > > > +AllowShortIfStatementsOnASingleLine: false
> > > > > > +IndentCaseLabels: false
> > > > >
> > > > > Hi, any progress on this? I also found a gist on GitHub which can be a
> > > > > reference: https://gist.github.com/elmarco/aa5e0b23567f46fb7f0e73cde586a0c1
> > > >
> > > > clang-format is a great tool and I'd highly recommend its use on
> > > > any newly started projects, and even retrospectively on existing
> > > > projects which are small scale. Adding it to large existing projects
> > > > is problematic though.
> > > >
> > > > None of the QEMU code complies with it today and indeed there is
> > > > quite a bit of style variance across different parts of QEMU. If
> > > > we add this config file, and someone makes a 1 line change in a
> > > > file, clang-format will reformat the entire file contents.
> > > >
> > > > The only practical way to introduce use of clang-format would be
> > > > to do a bulk reformat of the entire codebase. That is something
> > > > that is quite disruptive to both people with patches they're
> > > > working on but not submitted yet, as well as people wanting to
> > > > cherry-pick new commits back to old code branches.
> > > >
> > > > With regards,
> > > > Daniel
> > >
> > > I think the benefits of introducing clang-format mainly for its ability to
> > > format a code range, which means for any future contributions, we could
> > > encourage a range format before the patch is generated. This can extensively
> > > simplify my workflow, especially because I use the Neovim + LSP combination,
> > > which supports a built-in function "lua vim.lsp.buf.range_formatting()".
> >
> > IMHO partial format conversions are even worse than full conversions,
> > because they would make code inconsistent within the scope of a file.
>
> So you mean when we're adding new code in an old file, the coding style
> should also be the old one? That sounds a bit unreasonable. I thought we are
> shifting the coding style in an on-demand way, so we can finally achieve to
> the new style mildly, if each time we're using the old coding style, that
> could be impossible.
From my POV as a maintainer, the best situation would be consistency across
the entire codebase. Since we likely won't get that though, then next best
is consistency across the subsystem directory, and next best is consistency
across the whole file. Mixing code styles within a file is the worst IMHO.
>
> > > I have no interest in reformatting the existing code and also think using it
> > > to reformat an entire file shouldn't be encouraged, but, we can leverage
> > > this tool to give future contributions a better experience. It's also
> > > important to note that the kernel already has a ".clang-format" file, so I
> > > think we can give it a try:)
> >
> > The mere action of introducing a .clang-format file in the root of the
> > repository will cause some contributors' editors to automatically
> > reformat files every time they are saved. IOW even if you don't want
> > intend to do reformatting, that will be a net result.
>
> I think that depends on developer's configuration, as far as I know, format
> on save is a feature which can be easily disabled on most of the IDE's, such
> as VSCode.
You could disable it, but it requires each developer to know that we're
shipping a clang-format that should not in fact be used to reformat
code, which is rather counterintuitive.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2022-09-01 8:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-01 17:30 [Qemu-devel] [RFC PATCH] Add qemu .clang-format marcandre.lureau
2022-08-31 6:23 ` Wang, Lei
2022-08-31 8:49 ` Daniel P. Berrangé
2022-08-31 9:18 ` Wang, Lei
2022-08-31 10:39 ` Daniel P. Berrangé
2022-09-01 1:08 ` Wang, Lei
2022-09-01 8:12 ` Daniel P. Berrangé [this message]
2022-09-01 8:43 ` Wang, Lei
2022-09-01 11:55 ` Alex Bennée
2022-09-02 2:05 ` Wang, Lei
2022-09-02 8:52 ` Daniel P. Berrangé
2022-08-31 10:26 ` Marc-André Lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YxBpgeL7yJIkXV/f@redhat.com \
--to=berrange@redhat.com \
--cc=lei4.wang@intel.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).