diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2012-10-04 18:52:06 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-10-05 11:49:06 +0200 |
commit | ffb90dff22f411176f10dedc85778a348ea2852f (patch) | |
tree | 18c975eda1e6aaf86f0d5a55370ac309f87af64d /scripts/hasCopyright.pl | |
parent | ecf8b82cdc1bbf0bc2f9ef4d6196772b8fb700c2 (diff) | |
download | qt-creator-ffb90dff22f411176f10dedc85778a348ea2852f.tar.gz |
Update copyright check script
Use perl instead of bash and avoid lots of rereading of the file,
making the script much faster to run.
Change-Id: Ic898f324b2952c593b89d8efca8ea1e344cf5858
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'scripts/hasCopyright.pl')
-rw-r--r-- | scripts/hasCopyright.pl | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/scripts/hasCopyright.pl b/scripts/hasCopyright.pl new file mode 100644 index 0000000000..575682a8af --- /dev/null +++ b/scripts/hasCopyright.pl @@ -0,0 +1,122 @@ +#!/usr/bin/perl -w + +# Report possible problems with copy right headers +# +# Sample usage: +# find . -type f | xargs ./scripts/hasCopyright.pl + +use strict; + +shift; # remove script + +sub canIgnoreNoCopyright { + my $file = shift; + return 1 if ($file =~ /\.png$/ or + $file =~ /\.ico$/ or + $file =~ /\.svg$/ or + $file =~ /\.xpm$/ or + $file =~ /\.dia$/ or + $file =~ /\/Doxyfile$/ or + $file =~ /\.qmlproject$/ or + $file =~ /\.pr[oi]$/ or + $file =~ /\.qbs$/ or + $file =~ /\.qrc$/ or + $file =~ /\.txt$/i or + $file =~ /\/README[^\/]*$/i or + $file =~ /\/LICENSE.LGPL$/i or + $file =~ /\.ui$/i or + $file =~ /\.xml$/ or + $file =~ /\.css$/ or + $file =~ /\.metainfo$/ or + $file =~ /\.json$/ or + $file =~ /\.pl$/ or + $file =~ /\.py$/ or + $file =~ /\.sh$/ or + $file =~ /\.bat$/ or + $file =~ /\.patch$/ or + $file =~ /\.sed$/ or + $file =~ /\.pro\.user$/ or + $file =~ /\.plist$/ or + $file =~ /\.qdocconf$/i or + $file =~ /\.qdocinc/); + return 0; +} + +while (1) { + my $file = shift; + last unless $file; + + my $hasCopyright = 0; + my $hasCurrent = 0; + my $hasContact = 0; + my $hasCommercial = 0; + my $hasLGPL = 0; + my $hasGPL = 0; + my $hasDigia = 0; + my $linecount = 0; + + if ($file !~ /\.png$/) { + open(my $fh, "<", $file) or die "Could not open $file.\n"; + + while (<$fh>) { + $linecount++; + last if ($linecount > 50); + + $hasCopyright = 1 if $_ =~ /Copyright/i; + $hasCurrent = 1 if $_ =~ /\(c\).*\s2012/i; + + $hasContact = 1 if $_ =~ /Contact: http:\/\/www.qt-project.org\/legal/; + $hasCommercial = 1 if $_ =~ /Commercial License Usage/; + $hasDigia = 1 if $_ =~ /Digia Plc/; + $hasLGPL = 1 if $_ =~ /GNU Lesser General Public License Usage/; + $hasGPL = 1 if $_ =~ /GNU General Public License Usage/; + } + close $fh; + } + + unless ($hasCopyright) { + print "$file\t"; + if (canIgnoreNoCopyright($file)) { + print "Warning\t"; + } else { + print "ERROR\t"; + } + print "No copyright\n"; + next; + } + + unless ($hasCurrent) { + print "$file\tERROR\tcopyright outdated\n"; + next; + } + + unless ($hasDigia) { + print "$file\tERROR\tNo digia\n"; + next; + } + + unless ($hasContact) { + print "$file\tERROR\tWrong contact\n"; + next; + } + + unless ($hasCommercial) { + print "$file\tERROR\tNo commercial license\n"; + next; + } + + unless ($hasLGPL) { + print "$file\tERROR\tNo LGPL license\n"; + next; + } + + unless ($hasGPL) { + print "$file\tERROR\tNo GPL license\n"; + next; + } + + print "$file\tinfo\tCopyright OK\n"; + +} # loop over files + +exit 0; |