Thanks Alex,

We already have a keyword scanner[1] so we should ensure your dictionary
words are in there.

I'd rather add the scan to the automated build rather than rely upon the
committers to remember to run it (at least one of the committers is lazy
like that ;-) )

[1]
http://svn.apache.org/viewcvs.cgi/incubator/harmony/standard/tools/keywordscan

Regards,
Tim

Alex Orlov wrote:
> On 4/7/06, Chris Gray <[EMAIL PROTECTED]> wrote:
>> On Thursday 06 April 2006 23:59, Tim Ellison wrote:
>>> You can run the Eclipse IDE on Classpath or Harmony(*) class libraries,
>>> both are sufficiently well advanced to run it.
>>>
>>> (*) you need to use the regex code from regex-beans-math which hasn't
>>> been merged into the build process yet
>> I knew eclipse ran on Classpath (e.g. gcj), wasn't sure about Harmony. That's
>> good to hear.
>>
>> IMO Harmony developers should be encouraged to use a Sun-free workstation
>> whenever possible, to avoid this kind of slip-up. There should also be
>> automatic detectors for references to sun.* or com.sun.* classes.
> 
> Hi folks,
> 
> BTW we use simple script to check if the sources contain the words we
> would like to avoid. You can find it attached. The usage is pretty
> straightforward:
> 
>   perl check_bad_words.pl <dictionary> <directory or file>
> 
> Also attached is dictionary file that contains "Sun" and "GPL" as two
> sample words. You can turn on your imagination and enhance the
> dictionary significantly. :)
> 
> May we propose the committers to run it before committing anyuthing to SVN?
> 
> Thanks,
> Alex Orlov.
> Intel Middleware Products Division
> 
> 
>> Regards,
>>
>> Chris
>>
>> --
>> Chris Gray        /k/ Embedded Java Solutions      BE0503765045
>> Embedded & Mobile Java, OSGi    http://www.k-embedded-java.com/
>> [EMAIL PROTECTED]                             +32 3 216 0369
>>
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> #!/usr/bin/perl
>>
>> use File::Spec;
>> use strict;
>>
>> my $ext_src = "java|c|h|cpp|hpp|j|jfl|ccode";
>> my $ext_sup = "xml|txt|pl|sh|bat|cmd";
>> my $ext = "(" . $ext_src . "|" . $ext_sup . ")";
>> my $filename = "copyright|license|notice|readme";
>> my %bad_words = ();
>>
>> sub readDictionary {
>>      my ($dic) = @_;
>>      if (-f $dic) {
>>              open (FD_DIC, "< $dic") or die "Can't open dictionary file: 
>> $dic\n";
>>              while (<FD_DIC>) {
>>                      unless (/^#/ || /^\s+$/) {
>>                              my ($word, $area) = split(" ; ");
>>                              chomp $area;
>>                              my @areas = split(":", $area);
>>                              push @{$bad_words{$word}}, @areas;
>>                      }
>>              }
>>              close(FD_DIC);
>>      } else {
>>              die "Invalid dictionary file: $dic\n";
>>      }
>> }
>>
>> sub readDir {
>>      my ($file) = @_;
>>      if (-d $file) {
>>              if (opendir(FD_DIR, $file)) {
>>                      chdir ($file);
>>                      foreach my $item (readdir(FD_DIR)) {
>>                              if ($item ne '.' && $item ne '..') {
>>                                      readDir($item);
>>                              }
>>                      }
>>                      chdir ("..");
>>                      closedir (FD_DIR);
>>              } else {
>>                      print "Can't open dir $file\n";
>>              }
>>      } elsif (-f $file) {
>>              if ($file =~ /\.$ext$/ || $file =~ /^$filename/i) {
>>                      &searchBadWords(&readFile($file), $file);
>>              }
>>      } else {
>>              print "File or directory doesn't exist: $file\n";
>>      }
>> }
>>
>> sub searchBadWords($$) {
>>      my ($content, $file) = @_;
>>         my ($prev, $after, $match, $area);
>>      my $abs_fname = File::Spec->rel2abs($file);
>>      foreach my $word (sort keys %bad_words) {
>>              my $checkable = 0; # false
>>              foreach $area (@{$bad_words{$word}}) {
>>                      if (($area eq "all") or (index($abs_fname, $area) ne 
>> -1)) {
>>                              $checkable = 1; # true
>>                      }
>>              }
>>              if ($checkable) {
>>                      if ($content =~ m/$word/i) {
>>                              $match = $&;
>>                              chomp($match);
>>                              $prev = $`;
>>                              $after = $';
>>                              print "File: $abs_fname\n";
>>                              print "Bad word: $match\n";
>>                              print "Line #" . &getLineNumber($prev) . "\n";
>>                              print "String: " . &getString($prev, $after, 
>> $match) . "\n";
>>                              print "------------------------------------\n";
>>                      }       
>>              }
>>      }
>>      if ($file =~ /^*\.($ext_src)/) {
>>          if ($content =~ /[\s_]bug[\s_]*(#*)(\d+)/) {
>>              $match = $&;
>>              chomp($match);
>>              $prev = $`;
>>              $after = $';
>>              print "File: $abs_fname\n";
>>              print "Bug mentioning: $match\n";
>>              print "Line #" . &getLineNumber($prev) . "\n";
>>              print "String: " . &getString($prev, $after, $match) . "\n";
>>              print "------------------------------------\n";
>>          }
>>      }
>> }
>>
>> sub readFile($) {
>>      my($file_name) = @_;
>>      my $content = "";       
>>      if (open(FH, "< " . $file_name)) {
>>              while (<FH>) {
>>                      $content .= $_;
>>              }
>>              close FH;
>>      } else {
>>              printf STDERR "Can't open file $file_name\n";
>>      }
>>      $content;
>> }
>>
>> sub getString($$$) {
>>      my($prev, $after, $match) = @_;
>>      my $last_p = rindex($prev, "\n");
>>      my $first_a = index($after, "\n");
>>      substr($prev, $last_p + 1, length($prev) - $last_p) . $match . 
>> substr($after, 0, $first_a);
>> }
>>
>> sub getLineNumber($) {
>>      my($string) = @_;
>>      my $lnum = 1;
>>      while ($string =~ m/\n/g) {
>>              $lnum++;
>>      }
>>      $lnum;
>> }
>>
>> if (scalar(@ARGV) < 2) {
>>      print "Usage: perl check_bad_words.pl <dictionary> <directory or file>";
>>      exit;
>> }
>>
>> &readDictionary($ARGV[0]);
>> &readDir($ARGV[1]);
>>
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to