2014-07-04 00:47:00

by Joe Perches

[permalink] [raw]
Subject: [PATCH] checkpatch: Emit a warning on file add/move/delete

Whenever files are added, moved, or deleted, the
MAINTAINERS file patterns can be out of sync or
outdated.

To try to keep MAINTAINERS more up-to-date, add a
one-time warning whenever a patch does any of those.

Signed-off-by: Joe Perches <[email protected]>
---
scripts/checkpatch.pl | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 496f9ab..0cf8b98 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1679,7 +1679,7 @@ sub process {

my $in_header_lines = $file ? 0 : 1;
my $in_commit_log = 0; #Scanning lines before patch
-
+ my $reported_maintainer_file = 0;
my $non_utf8_charset = 0;

my $last_blank_line = 0;
@@ -2012,6 +2012,17 @@ sub process {
"Please use 12 to 16 chars for the git commit ID like: '${init_char}ommit $id (\"$desc\")'\n" . $herecurr);
}

+# Check for added, moved or deleted files
+ if (!$reported_maintainer_file && !$in_commit_log &&
+ ($line =~ /^(?:new|deleted) file mode\s*\d+\s*$/ ||
+ $line =~ /^rename (?:from|to) [\w\/\.\-]+\s*$/ ||
+ ($line =~ /\{\s*([\w\/\.\-]*)\s*\=\>\s*([\w\/\.\-]*)\s*\}/ &&
+ (defined($1) || defined($2))))) {
+ $reported_maintainer_file = 1;
+ WARN("FILE_PATH_CHANGES",
+ "added, moved or deleted file(s), does MAINTAINERS need updating?\n" . $herecurr);
+ }
+
# Check for wrappage within a valid hunk of the file
if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) {
ERROR("CORRUPTED_PATCH",


2014-07-04 15:11:13

by Andy Whitcroft

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Emit a warning on file add/move/delete

On Thu, Jul 03, 2014 at 05:46:56PM -0700, Joe Perches wrote:
> Whenever files are added, moved, or deleted, the
> MAINTAINERS file patterns can be out of sync or
> outdated.
>
> To try to keep MAINTAINERS more up-to-date, add a
> one-time warning whenever a patch does any of those.
>
> Signed-off-by: Joe Perches <[email protected]>
> ---
> scripts/checkpatch.pl | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 496f9ab..0cf8b98 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -1679,7 +1679,7 @@ sub process {
>
> my $in_header_lines = $file ? 0 : 1;
> my $in_commit_log = 0; #Scanning lines before patch
> -
> + my $reported_maintainer_file = 0;
> my $non_utf8_charset = 0;
>
> my $last_blank_line = 0;
> @@ -2012,6 +2012,17 @@ sub process {
> "Please use 12 to 16 chars for the git commit ID like: '${init_char}ommit $id (\"$desc\")'\n" . $herecurr);
> }
>
> +# Check for added, moved or deleted files
> + if (!$reported_maintainer_file && !$in_commit_log &&
> + ($line =~ /^(?:new|deleted) file mode\s*\d+\s*$/ ||
> + $line =~ /^rename (?:from|to) [\w\/\.\-]+\s*$/ ||
> + ($line =~ /\{\s*([\w\/\.\-]*)\s*\=\>\s*([\w\/\.\-]*)\s*\}/ &&
> + (defined($1) || defined($2))))) {
> + $reported_maintainer_file = 1;
> + WARN("FILE_PATH_CHANGES",
> + "added, moved or deleted file(s), does MAINTAINERS need updating?\n" . $herecurr);
> + }
> +
> # Check for wrappage within a valid hunk of the file
> if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) {
> ERROR("CORRUPTED_PATCH",

That seems like a sensible plan. Sometime we might try and work out if
any entries are affected or needed.

I think you are checking against the git ways of mentioning this only,
don't know if there is any milage in checking the dates which also
convey add/remove info via datea at the epoch.

Acked-by: Andy Whitcroft <[email protected]>

-apw

2014-07-04 17:04:06

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Emit a warning on file add/move/delete

On Fri, 2014-07-04 at 16:11 +0100, Andy Whitcroft wrote:
> On Thu, Jul 03, 2014 at 05:46:56PM -0700, Joe Perches wrote:
> > Whenever files are added, moved, or deleted, the
> > MAINTAINERS file patterns can be out of sync or
> > outdated.
> >
> > To try to keep MAINTAINERS more up-to-date, add a
> > one-time warning whenever a patch does any of those.
[]
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> > +# Check for added, moved or deleted files
> > + if (!$reported_maintainer_file && !$in_commit_log &&
> > + ($line =~ /^(?:new|deleted) file mode\s*\d+\s*$/ ||
> > + $line =~ /^rename (?:from|to) [\w\/\.\-]+\s*$/ ||
> > + ($line =~ /\{\s*([\w\/\.\-]*)\s*\=\>\s*([\w\/\.\-]*)\s*\}/ &&
> > + (defined($1) || defined($2))))) {
> > + $reported_maintainer_file = 1;
> > + WARN("FILE_PATH_CHANGES",
> > + "added, moved or deleted file(s), does MAINTAINERS need updating?\n" . $herecurr);
> > + }
> > +
[]
> That seems like a sensible plan. Sometime we might try and work out if
> any entries are affected or needed.
>
> I think you are checking against the git ways of mentioning this only,

Yes, I believe so.

> don't know if there is any milage in checking the dates which also
> convey add/remove info via datea at the epoch.

I don't remember what that date format looks like.
Got an example?

Maybe there's value in checking the diff file header
for /dev/null

Something like:

--- t.c 2014-04-11 10:57:07.767131132 -0700
+++ /dev/null 2014-06-30 13:19:01.524210166 -0700

or

--- /dev/null 2014-06-30 13:19:01.524210166 -0700
+++ t.c 2014-04-11 10:57:07.767131132 -0700

Is there some other form?

2014-07-05 21:23:01

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Emit a warning on file add/move/delete

On Fri, 2014-07-04 at 16:11 +0100, Andy Whitcroft wrote:
> On Thu, Jul 03, 2014 at 05:46:56PM -0700, Joe Perches wrote:
> > Whenever files are added, moved, or deleted, the
> > MAINTAINERS file patterns can be out of sync or
> > outdated.
> >
> > To try to keep MAINTAINERS more up-to-date, add a
> > one-time warning whenever a patch does any of those.
[]
> That seems like a sensible plan. Sometime we might try and work out if
> any entries are affected or needed.

Hey again Andy.

Just fyi: I think this is not possible.

A patch series will often add or delete a file
independently from an earlier or later patch that
modifies MAINTAINERS.