summaryrefslogtreecommitdiff
path: root/scripts/hasCopyright.pl
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2012-10-04 18:52:06 +0200
committerhjk <qthjk@ovi.com>2012-10-05 11:49:06 +0200
commitffb90dff22f411176f10dedc85778a348ea2852f (patch)
tree18c975eda1e6aaf86f0d5a55370ac309f87af64d /scripts/hasCopyright.pl
parentecf8b82cdc1bbf0bc2f9ef4d6196772b8fb700c2 (diff)
downloadqt-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.pl122
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;