Re: [PATCH] scripts/checkpatch: Check for Reviewed-by under --strict

Joe Perches
2016-10-28T14:58:03Z

On Fri, 2016-10-28 at 13:49 +0100, Chris Wilson wrote:
> Some subsystem polices have a strict requirement that every patch must
> have at least one reviewer before being approved for upstream. Since
> encouraging review is good policy (great review is even better policy!)
> enforce checking for a Reviewed-by when checkpath is run with --strict
> (or with --review).

I rather dislike this as it imposes a rule outside
of what's documented in SubmittingPatches.

Ideally, please keep a private version of this.

And unless and until SubmittingPatches is updated,
please keep this separate from --strict.

> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Andy Whitcroft <apw@canonical.com>
> Cc: Joe Perches <joe@perches.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
> scripts/checkpatch.pl | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index a8368d1c4348..9eaa5a4fbbc0 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -21,6 +21,7 @@ use Getopt::Long qw(:config no_auto_abbrev);
> my $quiet = 0;
> my $tree = 1;
> my $chk_signoff = 1;
> +my $chk_review = 0;
> my $chk_patch = 1;
> my $tst_only;
> my $emacs = 0;
> @@ -69,6 +70,7 @@ Options:
> -q, --quiet quiet
> --no-tree run without a kernel tree
> --no-signoff do not check for 'Signed-off-by' line
> + --review check for 'Reviewed-by' line
> --patch treat FILE as patchfile (default)
> --emacs emacs compile window format
> --terse one line per report
> @@ -183,6 +185,7 @@ GetOptions(
> 'q|quiet+' => \$quiet,
> 'tree!' => \$tree,
> 'signoff!' => \$chk_signoff,
> + 'review!' => \$chk_review,
> 'patch!' => \$chk_patch,
> 'emacs!' => \$emacs,
> 'terse!' => \$terse,
> @@ -217,7 +220,7 @@ help(0) if ($help);
>
> list_types(0) if ($list_types);
>
> -$fix = 1 if ($fix_inplace);
> +$chk_review = 1 if ($check); # --strict implies checking for Reviewed-by
> $check_orig = $check;
>
> my $exit = 0;
> @@ -857,6 +860,7 @@ sub git_commit_info {
> }
>
> $chk_signoff = 0 if ($file);
> +$chk_review = 0 if ($file);
>
> my @rawlines = ();
> my @lines = ();
> @@ -2130,6 +2134,7 @@ sub process {
>
> our $clean = 1;
> my $signoff = 0;
> + my $review = 0;
> my $is_patch = 0;
> my $in_header_lines = $file ? 0 : 1;
> my $in_commit_log = 0; #Scanning lines before patch
> @@ -2400,6 +2405,12 @@ sub process {
> $in_commit_log = 0;
> }
>
> +# Check the patch for any review:
> + if ($line =~ /^\s*reviewed-by:/i) {
> + $review++;
> + $in_commit_log = 0;
> + }
> +
> # Check if MAINTAINERS is being updated. If so, there's probably no need to
> # emit the "does MAINTAINERS need updating?" message on file add/move/delete
> if ($line =~ /^\s*MAINTAINERS\s*\|/) {
> @@ -6204,6 +6215,10 @@ sub process {
> ERROR("MISSING_SIGN_OFF",
> "Missing Signed-off-by: line(s)\n");
> }
> + if ($is_patch && $has_commit_log && $chk_review && $review == 0) {
> + ERROR("MISSING_REVIEW",
> + "Missing Reviewed-by: line(s)\n");
> + }
>
> print report_dump();
> if ($summary && !($clean == 1 && $quiet == 1)) {