You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by se...@apache.org on 2013/05/18 17:34:36 UTC

svn commit: r1484128 - /creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java

Author: sebb
Date: Sat May 18 15:34:36 2013
New Revision: 1484128

URL: http://svn.apache.org/r1484128
Log:
RAT-138 RAT runs very slowly on some input
Use String matching by default rather than building patterns

Modified:
    creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java

Modified: creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java
URL: http://svn.apache.org/viewvc/creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java?rev=1484128&r1=1484127&r2=1484128&view=diff
==============================================================================
--- creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java (original)
+++ creadur/rat/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java Sat May 18 15:34:36 2013
@@ -27,57 +27,75 @@ import org.apache.rat.api.MetaData;
 
 public class GeneratedLicenseNotRequired implements IHeaderMatcher {
 
-    private static final Pattern[] DEFAULT_PATTERNS = {Pattern.compile(".*generated by Cayenne.*"),
-        Pattern.compile(".*Generated By:JJTree.*"),
-        Pattern.compile(".*Generated By:JavaCC.*"),
-        Pattern.compile(".*THIS FILE IS AUTOMATICALLY GENERATED.*"),
-        Pattern.compile(".*NOTE: this file is autogenerated by XBeans.*"),
-        Pattern.compile(".*This file was automatically generated by .*"),
-        Pattern.compile(".*# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!.*"),
-        Pattern.compile(".*# Microsoft Developer Studio Generated NMAKE File.*"),
-        Pattern.compile(".*# Microsoft Developer Studio Generated Build File.*"),
-        Pattern.compile(".*Generated from configure.ac by autoheader.*"),
-        Pattern.compile(".*generated automatically by aclocal.*"),
-        Pattern.compile(".*build.xml generated by maven from project.xml.*"),
-        Pattern.compile(".*This file was generated by.*"),
-        Pattern.compile(".*This file has been automatically generated..*"),
-        Pattern.compile(".*Automatically generated - do not modify!.*"),
-        Pattern.compile(".*Javadoc style sheet.*"),
-        Pattern.compile(".*SOURCE FILE GENERATATED.*"),
-        Pattern.compile(".*Generated by the Batik.*"),
-        Pattern.compile(".*this file is autogenerated.*"),
-        Pattern.compile(".*This class was autogenerated.*"),
-        Pattern.compile(".*Generated by Maven.*"),
-        Pattern.compile(".*Autogenerated by Thrift.*"),
-        Pattern.compile(".*DO NOT EDIT THIS FILE - it is machine generated.*"),
-        Pattern.compile(".*This class was generated by.*")};
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    private static final Pattern[] EMPTY_PATTERN_ARRAY = new Pattern[0];
+
+    private static final String[] DEFAULT_PHRASES = {
+        "generated by Cayenne",
+        "Generated By:JJTree",
+        "Generated By:JavaCC",
+        "THIS FILE IS AUTOMATICALLY GENERATED",
+        "NOTE: this file is autogenerated by XBeans",
+        "This file was automatically generated by ",
+        "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!",
+        "# Microsoft Developer Studio Generated NMAKE File",
+        "# Microsoft Developer Studio Generated Build File",
+        "Generated from configure.ac by autoheader",
+        "generated automatically by aclocal",
+        "build.xml generated by maven from project.xml",
+        "This file was generated by",
+        "This file has been automatically generated.",
+        "Automatically generated - do not modify!",
+        "Javadoc style sheet",
+        "SOURCE FILE GENERATATED",
+        "Generated by the Batik",
+        "this file is autogenerated",
+        "This class was autogenerated",
+        "Generated by Maven",
+        "Autogenerated by Thrift",
+        "DO NOT EDIT THIS FILE - it is machine generated",
+        "This class was generated by"};
     
     
+    // Uses either patterns or strings currently (not both)
     private final Pattern[] linePatterns;
-    private final int numberOfPatterns;
+    private final String[] phrases;
     
     public GeneratedLicenseNotRequired() {
-        this(DEFAULT_PATTERNS);
+        this(DEFAULT_PHRASES);
     }
     
     public GeneratedLicenseNotRequired(final Pattern[] linePatterns) {
         this.linePatterns = linePatterns;
-        this.numberOfPatterns = linePatterns.length;
+        this.phrases = EMPTY_STRING_ARRAY;
+    }
+
+    public GeneratedLicenseNotRequired(final String[] lines) {
+        this.linePatterns = EMPTY_PATTERN_ARRAY;
+        this.phrases = lines;
     }
 
     public boolean match(Document subject, String line) throws RatHeaderAnalysisException {
         boolean result = false;
-        for (int i=0;i<numberOfPatterns;i++) {
-            if (linePatterns[i].matcher(line).matches()) {
+        for (Pattern pat : linePatterns) {
+            if (pat.matcher(line).matches()) {
                 result = true;
                 reportOnLicense(subject);
                 break;
             }
         }
+        for(String phrase : phrases) {
+            if (line.contains(phrase)) {
+                result = true;
+                reportOnLicense(subject);
+                break;
+            }                
+        }
         return result;
     }
 
-    private void reportOnLicense(Document subject) throws RatHeaderAnalysisException {
+    private void reportOnLicense(Document subject) {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_CATEGORY_DATUM_GEN);
     }