From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Tomoki Sekiyama <tomoki.sekiyama@hds.com>, qemu-devel@nongnu.org
Cc: libaiqing@huawei.com, ghammer@redhat.com, stefanha@gmail.com,
lcapitulino@redhat.com, vrozenfe@redhat.com, pbonzini@redhat.com,
seiji.aguchi@hds.com, lersek@redhat.com, areis@redhat.com
Subject: Re: [Qemu-devel] [PATCH v7 03/10] checkpatch.pl: Check .cpp files
Date: Mon, 22 Jul 2013 16:21:17 -0500 [thread overview]
Message-ID: <20130722212117.16294.36600@loki> (raw)
In-Reply-To: <20130715162037.16676.9660.stgit@outback>
Quoting Tomoki Sekiyama (2013-07-15 11:20:37)
> Enable checkpatch.pl to apply the same checks as C source files for
> C++ files with .cpp extensions. It also adds some exceptions for C++
> sources to suppress errors for:
> - <> used in C++ template arguments (e.g. template <class T>)
> - :: used to represent namespaces (e.g. SomeClass::method())
> - : used in class declaration (e.g. class T : public Super)
> - ~ used in destructor method name (e.g. T::~T())
> - spacing around 'catch' (e.g. catch (...))
>
> Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
One small nit below about documentation. Looks good otherwise.
> ---
> scripts/checkpatch.pl | 37 +++++++++++++++++++++++++++++--------
> 1 file changed, 29 insertions(+), 8 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index ec0aa4c..0ef72b5 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -1363,7 +1363,7 @@ sub process {
> # Check for incorrect file permissions
> if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) {
> my $permhere = $here . "FILE: $realfile\n";
> - if ($realfile =~ /(Makefile|Kconfig|\.c|\.h|\.S|\.tmpl)$/) {
> + if ($realfile =~ /(Makefile|Kconfig|\.c|\.cpp|\.h|\.S|\.tmpl)$/) {
> ERROR("do not set execute permissions for source files\n" . $permhere);
> }
> }
> @@ -1460,7 +1460,7 @@ sub process {
> }
>
> # check we are in a valid source file if not then ignore this hunk
> - next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
> + next if ($realfile !~ /\.(h|c|cpp|s|S|pl|sh)$/);
>
> #80 column limit
> if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ &&
> @@ -1495,7 +1495,7 @@ sub process {
> }
>
> # check we are in a valid source file C or perl if not then ignore this hunk
> - next if ($realfile !~ /\.(h|c|pl)$/);
> + next if ($realfile !~ /\.(h|c|cpp|pl)$/);
>
> # in QEMU, no tabs are allowed
> if ($rawline =~ /^\+.* /) {
> @@ -1505,7 +1505,7 @@ sub process {
> }
>
> # check we are in a valid C source file if not then ignore this hunk
> - next if ($realfile !~ /\.(h|c)$/);
> + next if ($realfile !~ /\.(h|c|cpp)$/);
>
> # check for RCS/CVS revision markers
> if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) {
> @@ -1969,6 +1969,9 @@ sub process {
> asm|__asm__)$/x)
> {
>
> + # Ignore 'catch (...)' in C++
> + } elsif ($name =~ /^catch$/ && $realfile =~ /(\.cpp|\.h)$/) {
> +
> # cpp #define statements have non-optional spaces, ie
> # if there is a space between the name and the open
> # parenthesis it is simply not a parameter group.
> @@ -1992,7 +1995,7 @@ sub process {
> \+=|-=|\*=|\/=|%=|\^=|\|=|&=|
> =>|->|<<|>>|<|>|=|!|~|
> &&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%|
> - \?|:
> + \?|::|:
> }x;
> my @elements = split(/($ops|;)/, $opline);
> my $off = 0;
> @@ -2066,7 +2069,8 @@ sub process {
> # ->
> # : when part of a bitfield
> } elsif ($op eq '->' || $opv eq ':B') {
> - if ($ctx =~ /Wx.|.xW/) {
> + if ($ctx =~ /Wx.|.xW/ &&
> + !($opv eq ':B' && $line =~ /class/)) {
Everything else seemed fairly obvious or was well commented, but I couldn't
figure out what this change was for. Could you insert a small comment to
explain?
> ERROR("spaces prohibited around that '$op' $at\n" . $hereptr);
> }
>
> @@ -2088,7 +2092,11 @@ sub process {
> } elsif ($op eq '!' || $op eq '~' ||
> $opv eq '*U' || $opv eq '-U' ||
> $opv eq '&U' || $opv eq '&&U') {
> - if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
> + if ($op eq '~' && $ca =~ /::$/ && $realfile =~ /(\.cpp|\.h)$/) {
> + # '~' used as a name of Destructor
> +
> + }
> + elsif ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
> ERROR("space required before that '$op' $at\n" . $hereptr);
> }
> if ($op eq '*' && $cc =~/\s*$Modifier\b/) {
> @@ -2126,8 +2134,9 @@ sub process {
>
> # A colon needs no spaces before when it is
> # terminating a case value or a label.
> + # Ignored if it is used in class declaration in C++.
> } elsif ($opv eq ':C' || $opv eq ':L') {
> - if ($ctx =~ /Wx./) {
> + if ($ctx =~ /Wx./ && $line !~ /class/) {
> ERROR("space prohibited before that '$op' $at\n" . $hereptr);
> }
>
> @@ -2135,6 +2144,18 @@ sub process {
> } elsif ($ctx !~ /[EWC]x[CWE]/) {
> my $ok = 0;
>
> + if ($realfile =~ /\.cpp|\.h$/) {
> + # Ignore template arguments <...> in C++
> + if (($op eq '<' || $op eq '>') && $line =~ /<.*>/) {
> + $ok = 1;
> + }
> +
> + # Ignore :: in C++
> + if ($op eq '::') {
> + $ok = 1;
> + }
> + }
> +
> # Ignore email addresses <foo@bar>
> if (($op eq '<' &&
> $cc =~ /^\S+\@\S+>/) ||
next prev parent reply other threads:[~2013-07-22 21:21 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-15 16:20 [Qemu-devel] [PATCH v7 00/10] qemu-ga: fsfreeze on Windows using VSS Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 01/10] configure: Support configuring C++ compiler Tomoki Sekiyama
2013-07-22 20:53 ` Michael Roth
2013-07-23 21:49 ` Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 02/10] Add c++ keywords to QAPI helper script Tomoki Sekiyama
2013-07-22 20:55 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 03/10] checkpatch.pl: Check .cpp files Tomoki Sekiyama
2013-07-22 21:21 ` Michael Roth [this message]
2013-07-23 21:49 ` Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 04/10] Add a script to extract VSS SDK headers on POSIX system Tomoki Sekiyama
2013-07-22 21:27 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 05/10] qemu-ga: Add configure options to specify path to Windows/VSS SDK Tomoki Sekiyama
2013-07-22 21:42 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 06/10] error: Add error_set_win32 and error_setg_win32 Tomoki Sekiyama
2013-07-22 21:50 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 07/10] qemu-ga: Add Windows VSS provider and requester as DLL Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 08/10] qemu-ga: Call Windows VSS requester in fsfreeze command handler Tomoki Sekiyama
2013-07-15 16:21 ` [Qemu-devel] [PATCH v7 09/10] qemu-ga: Install Windows VSS provider on `qemu-ga -s install' Tomoki Sekiyama
2013-07-15 16:21 ` [Qemu-devel] [PATCH v7 10/10] QMP/qemu-ga-client: Make timeout longer for guest-fsfreeze-freeze command Tomoki Sekiyama
2013-07-18 22:19 ` [Qemu-devel] [PATCH v7 00/10] qemu-ga: fsfreeze on Windows using VSS Michael Roth
2013-07-19 3:40 ` Tomoki Sekiyama
2013-07-22 20:02 ` Tomoki Sekiyama
2013-07-22 20:33 ` Michael Roth
2013-07-22 21:33 ` Tomoki Sekiyama
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=20130722212117.16294.36600@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=areis@redhat.com \
--cc=ghammer@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=lersek@redhat.com \
--cc=libaiqing@huawei.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=seiji.aguchi@hds.com \
--cc=stefanha@gmail.com \
--cc=tomoki.sekiyama@hds.com \
--cc=vrozenfe@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.