Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(861)

Unified Diff: android_webview/tools/find_copyrights.pl

Issue 622493004: [Android WebView] Rewrite copyrights scanner in Python (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add license header to the manual test script Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/tools/copyright_scanner.py ('k') | android_webview/tools/find_files.pl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/tools/find_copyrights.pl
diff --git a/android_webview/tools/find_copyrights.pl b/android_webview/tools/find_copyrights.pl
deleted file mode 100755
index 494b9883ab3abe86d7a3f1361ecbfcf0af1fe19a..0000000000000000000000000000000000000000
--- a/android_webview/tools/find_copyrights.pl
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Use: echo filename1.cc ... | find_copyrights.pl
-# or: find_copyrights.pl list_file
-# or: find_files.pl ... | find_copyrights.pl
-
-use strict;
-use warnings;
-use File::Basename;
-
-sub check_is_generated_file($);
-sub start_copyright_parsing();
-
-my $progname = basename($0);
-
-my $generated_file_scan_boundary = 25;
-while (<>) {
- chomp;
- my $file = $_;
- my $file_header = '';
- my %copyrights;
- open (F, "<$file") or die "$progname: Unable to access $file\n";
- my $parse_copyright = start_copyright_parsing();
- while (<F>) {
- $file_header .= $_ unless $. > $generated_file_scan_boundary;
- my $copyright_match = $parse_copyright->($_, $.);
- if ($copyright_match) {
- $copyrights{lc("$copyright_match")} = "$copyright_match";
- }
- }
- close(F);
- my $copyright = join(" / ", sort values %copyrights);
- print "$file\t";
- if (check_is_generated_file($file_header)) {
- print "GENERATED FILE";
- } else {
- print ($copyright or "*No copyright*");
- }
- print "\n";
-}
-
-sub check_is_generated_file($) {
- my $license = uc($_[0]);
- # Remove Python multiline comments to avoid false positives
- if (index($license, '"""') != -1) {
- $license =~ s/"""[^"]*(?:"""|$)//mg;
- }
- if (index($license, "'''") != -1) {
- $license =~ s/'''[^']*(?:'''|$)//mg;
- }
- # Quick checks using index.
- if (index($license, 'ALL CHANGES MADE IN THIS FILE WILL BE LOST') != -1) {
- return 1;
- }
- if (index($license, 'DO NOT EDIT') != -1 ||
- index($license, 'DO NOT DELETE') != -1 ||
- index($license, 'GENERATED') != -1) {
- return ($license =~ /(All changes made in this file will be lost' .
- 'DO NOT (EDIT|delete this file)|Generated (at|automatically|data)' .
- '|Automatically generated|\Wgenerated\s+(?:\w+\s+)*file\W)/i);
- }
- return 0;
-}
-
-sub are_within_increasing_progression($$$) {
- my $delta = $_[0] - $_[1];
- return $delta >= 0 && $delta <= $_[2];
-}
-
-sub start_copyright_parsing() {
- my $max_line_numbers_proximity = 3;
- # Set up the defaults the way that proximity checks will not succeed.
- my $last_a_item_line_number = -200;
- my $last_b_item_line_number = -100;
-
- return sub {
- my $line = $_[0];
- my $line_number = $_[1];
-
- # Remove C / C++ strings to avoid false positives.
- if (index($line, '"') != -1) {
- $line =~ s/"[^"\\]*(?:\\.[^"\\]*)*"//g;
- }
-
- my $uc_line = uc($line);
-
- # Record '(a)' and '(b)' last occurences in C++ comments.
- my $cpp_comment_idx = index($uc_line, '//');
- if ($cpp_comment_idx != -1) {
- if (index($uc_line, '(A)') > $cpp_comment_idx) {
- $last_a_item_line_number = $line_number;
- }
- if (index($uc_line, '(B)') > $cpp_comment_idx) {
- $last_b_item_line_number = $line_number;
- }
- }
-
- # Fast bailout, uses the same patterns as the regexp.
- if (index($uc_line, 'COPYRIGHT') == -1 &&
- index($uc_line, 'COPR.') == -1 &&
- index($uc_line, '\x{00a9}') == -1 &&
- index($uc_line, '\xc2\xa9') == -1) {
-
- my $c_item_index = index($uc_line, '(C)');
- return '' if ($c_item_index == -1);
- # Filter out 'c' used as a list item inside C++ comments.
- # E.g. "// blah-blah (a) blah\n// blah-blah (b) and (c) blah"
- if ($c_item_index > $cpp_comment_idx &&
- are_within_increasing_progression(
- $line_number,
- $last_b_item_line_number,
- $max_line_numbers_proximity) &&
- are_within_increasing_progression(
- $last_b_item_line_number,
- $last_a_item_line_number,
- $max_line_numbers_proximity)) {
- return '';
- }
- }
-
- my $copyright_indicator_regex =
- '(?:copyright|copr\.|\x{00a9}|\xc2\xa9|\(c\))';
- my $full_copyright_indicator_regex =
- sprintf '(?:\W|^)%s(?::\s*|\s+)(\w.*)$', $copyright_indicator_regex;
- my $copyright_disindicator_regex =
- '\b(?:info(?:rmation)?|notice|and|or)\b';
-
- my $copyright = '';
- if ($line =~ m%$full_copyright_indicator_regex%i) {
- my $match = $1;
- if ($match !~ m%^\s*$copyright_disindicator_regex%i) {
- $match =~ s/([,.])?\s*$//;
- $match =~ s/$copyright_indicator_regex//ig;
- $match =~ s/^\s+//;
- $match =~ s/\s{2,}/ /g;
- $match =~ s/\\@/@/g;
- $copyright = $match;
- }
- }
-
- return $copyright;
- }
-}
« no previous file with comments | « android_webview/tools/copyright_scanner.py ('k') | android_webview/tools/find_files.pl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698