From: Josh Triplett <josh@joshtriplett.org>
To: Joe Perches <joe@perches.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Andy Whitcroft <apw@canonical.com>
Subject: Re: [PATCH] checkpatch: More comprehensive split strings warning
Date: Tue, 3 Dec 2013 00:56:46 -0800 [thread overview]
Message-ID: <20131203085646.GA24252@leaf> (raw)
In-Reply-To: <1386049457.15309.23.camel@joe-AO722>
On Mon, Dec 02, 2013 at 09:44:17PM -0800, Joe Perches wrote:
> The current checkpatch test for split strings does
> not find several cases that should be found.
>
> For instance:
>
> diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
> []
> @@ -1868,7 +1865,8 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm,
> /* Else poor success; go back to mode in "active" table */
> } else {
> IWL_DEBUG_RATE(mvm,
> - "LQ: GOING BACK TO THE OLD TABLE suc=%d cur-tpt=%d old-tpt=%d\n",
> + "GOING BACK TO THE OLD TABLE: SR %d "
> + "cur-tpt %d old-tpt %d\n",
> window->success_ratio,
> window->average_tpt,
> lq_sta->last_tpt);
>
> does not currently emit a warning.
>
> Improve the test to find these cases.
>
> Add more exceptions to reduce false positives for
> assembly and octal/hex string constants.
Nice choice of exceptions; that should work quite well.
> Signed-off-by: Joe Perches <joe@perches.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> scripts/checkpatch.pl | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 38be5d5..1d0d5ac 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2049,16 +2049,12 @@ sub process {
> }
>
> # Check for user-visible strings broken across lines, which breaks the ability
> -# to grep for the string. Limited to strings used as parameters (those
> -# following an open parenthesis), which almost completely eliminates false
> -# positives, as well as warning only once per parameter rather than once per
> -# line of the string. Make an exception when the previous string ends in a
> -# newline (multiple lines in one string constant) or \n\t (common in inline
> -# assembly to indent the instruction on the following line).
> +# to grep for the string. Make exceptions when the previous string ends in a
> +# newline (multiple lines in one string constant) or '\t', '\r', ';', or '{'
> +# (common in inline assembly) or is a octal \123 or hexadecimal \xaf value
> if ($line =~ /^\+\s*"/ &&
> $prevline =~ /"\s*$/ &&
> - $prevline =~ /\(/ &&
> - $prevrawline !~ /\\n(?:\\t)*"\s*$/) {
> + $prevrawline !~ /(?:\\(?:[ntr]|[0-7]{1,3}|x[0-9a-fA-F]{1,2})|;\s*|\{\s*)"\s*$/) {
> WARN("SPLIT_STRING",
> "quoted string split across lines\n" . $hereprev);
> }
>
>
prev parent reply other threads:[~2013-12-03 8:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-02 21:23 checkpatch not warning for some split strings Joe Perches
2013-12-02 21:33 ` Josh Triplett
2013-12-03 5:44 ` [PATCH] checkpatch: More comprehensive split strings warning Joe Perches
2013-12-03 8:56 ` Josh Triplett [this message]
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=20131203085646.GA24252@leaf \
--to=josh@joshtriplett.org \
--cc=akpm@linux-foundation.org \
--cc=apw@canonical.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.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 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.