Re: [PATCH 1/2] checkpatch: add check for tag Co-Developed-by

From: Joe Perches
Date: Mon Mar 05 2018 - 14:29:46 EST


On Mon, 2018-03-05 at 14:58 +1100, Tobin C. Harding wrote:
> From: Joe Perches <joe@xxxxxxxxxxx>

I still think this "Co-Developed-by" stuff is unnecessary.

> Recently signature tag Co-Developed-by was added to the
> kernel (Documentation/process/5.Posting.rst). checkpatch.pl doesn't know
> about it yet. All prior tags used all lowercase characters except for first
> character. Checks for this format had to be re-worked to allow for the
> new tag.
>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Tobin C. Harding <me@xxxxxxxx>
> ---
> scripts/checkpatch.pl | 58 +++++++++++++++++++++++++++++++--------------------
> 1 file changed, 35 insertions(+), 23 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 3d4040322ae1..fbe2ae2d035f 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -461,16 +461,18 @@ our $logFunctions = qr{(?x:
> seq_vprintf|seq_printf|seq_puts
> )};
>
> -our $signature_tags = qr{(?xi:
> - Signed-off-by:|
> - Acked-by:|
> - Tested-by:|
> - Reviewed-by:|
> - Reported-by:|
> - Suggested-by:|
> - To:|
> - Cc:
> -)};
> +our @valid_signatures = (
> + "Signed-off-by:",
> + "Acked-by:",
> + "Tested-by:",
> + "Reviewed-by:",
> + "Reported-by:",
> + "Suggested-by:",
> + "Co-Developed-by:",
> + "To:",
> + "Cc:"
> +);
> +my $signature_tags = "(?x:" . join('|', @valid_signatures) . ")";
>
> our @typeListMisordered = (
> qr{char\s+(?:un)?signed},
> @@ -2193,6 +2195,17 @@ sub pos_last_openparen {
> return length(expand_tabs(substr($line, 0, $last_openparen))) + 1;
> }
>
> +sub get_preferred_sign_off {
> + my ($sign_off) = @_;
> +
> + foreach my $sig (@valid_signatures) {
> + if (lc($sign_off) eq lc($sig)) {
> + return $sig;
> + }
> + }
> + return "";
> +}
> +
> sub process {
> my $filename = shift;
>
> @@ -2499,35 +2512,34 @@ sub process {
> my $sign_off = $2;
> my $space_after = $3;
> my $email = $4;
> - my $ucfirst_sign_off = ucfirst(lc($sign_off));
> + my $preferred_sign_off = ucfirst(lc($sign_off));
>
> - if ($sign_off !~ /$signature_tags/) {
> + if ($sign_off !~ /$signature_tags/i) {
> WARN("BAD_SIGN_OFF",
> "Non-standard signature: $sign_off\n" . $herecurr);
> - }
> - if (defined $space_before && $space_before ne "") {
> + } elsif ($sign_off !~ /$signature_tags/) {
> + $preferred_sign_off = get_preferred_sign_off($sign_off);
> if (WARN("BAD_SIGN_OFF",
> - "Do not use whitespace before $ucfirst_sign_off\n" . $herecurr) &&
> + "'$preferred_sign_off' is the preferred signature form\n" . $herecurr) &&
> $fix) {
> - $fixed[$fixlinenr] =
> - "$ucfirst_sign_off $email";
> + $fixed[$fixlinenr] = "$preferred_sign_off $email";
> }
> }
> - if ($sign_off =~ /-by:$/i && $sign_off ne $ucfirst_sign_off) {
> + if (defined $space_before && $space_before ne "") {
> if (WARN("BAD_SIGN_OFF",
> - "'$ucfirst_sign_off' is the preferred signature form\n" . $herecurr) &&
> + "Do not use whitespace before $preferred_sign_off\n" . $herecurr) &&
> $fix) {
> $fixed[$fixlinenr] =
> - "$ucfirst_sign_off $email";
> + "$preferred_sign_off $email";
> }
> -
> }
> +
> if (!defined $space_after || $space_after ne " ") {
> if (WARN("BAD_SIGN_OFF",
> - "Use a single space after $ucfirst_sign_off\n" . $herecurr) &&
> + "Use a single space after $preferred_sign_off\n" . $herecurr) &&
> $fix) {
> $fixed[$fixlinenr] =
> - "$ucfirst_sign_off $email";
> + "$preferred_sign_off $email";
> }
> }
>