@fieldnames=("Assigned To", 'Bug#', "CRname", "CRtime", "Component", "OS/Version", "Platform", "Priority", "Product", "QA Contact", "Reported By", "Resolution", "Severity", "Status", "Summary", "Target milestone", "URL", "Version"); $off=1; foreach $i (@fieldnames){ $n2off{$i}=$off++; } open A, "mapemail"; while(){ chop(); ($from,$to)=split(/\>/); @froms=split(/\,/,$from); foreach $fr (@froms){ $mapemail{$fr}=$to; } } while(){ chop(); ($mr, $stmp1, $ndelta, $nadd, $ndel, $i, $bugs, $isBug, $isClient, $mm, $ff,$ii)=split(/\;/); if ($mrs{$mr}>0){next;} @Bugs=split(/\:/,$bugs); foreach $bug (@Bugs){ $isChange{$bug}++; } } open(A, "gunzip < details.gz|"); while (){ chop(); @x=split(/\;/); $login=$x[$n2off{"Reported By"}]; if ($mapemail{$login} ne ""){ $login=$mapemail{$login}; } $bug=$x[$n2off{'Bug#'}]; $isCh="nochange"; if ($isChange{$bug} > 0){ $isCh="change"; } $byProd{$isCh}{$login}++; $byProd{"ALL"}{$login}++; $byProd{$x[$n2off{"Product"}]}{$login}++; $byComp{$x[$n2off{"Component"}]}{$login}++; } foreach $prod (keys %byProd){ $nrep=scalar(keys %{ $byProd{$prod} }); $nbugs=0;$nibugs=0; foreach $dev (keys %{ $byProd{$prod} }){ $nbugs+=$byProd{$prod}{$dev}; if ($dev =~ /\@netscape\.com/){ $ninside++; $nibugs+=$byProd{$prod}{$dev}; } } $ninside=$ninside/$nrep; $nibugs=1.0*$nibugs/$nbugs; if ($nbugs > 100){ print "Product\;$prod\;$nrep\;$ninside\;$nbugs\;$nibugs\n"; } } foreach $prod (keys %byComp){ $nrep=scalar(keys %{ $byComp{$prod} }); $nbugs=0;$nibugs=0; foreach $dev (keys %{ $byComp{$prod} }){ $nbugs+=$byComp{$prod}{$dev}; if ($dev =~ /\@netscape\.com/){ $ninside++; $nibugs+=$byComp{$prod}{$dev}; } } if ($nrep>0) { $ninside=$ninside/$nrep; } if ($nbugs>0) { $nibugs=1.0*$nibugs/$nbugs;} if ($nbugs > 100){ print "Component\;$prod\;$nrep\;$ninside\;$nbugs\;$nibugs\n"; } }