while(){ chop(); ($mr, $stmp1, $ndelta, $nadd, $ndel, $i, $bugs, $isBug, $isClient, $mm, $ff)=split(/\;/); if ($mrs{$mr}>0){next;} $mrs{$mr}++; @Bugs=split(/\:/,$bugs); foreach $mod ("$isClient",split(/ /,$mm)){ $nlines{$mod}+=$nadd; $ndelta{$mod}+=$ndelta; $nmr{$mod}++; if ($isBug){ foreach $bug (@Bugs){ $nbug{$mod}{$bug}++; } $fixers{$mod}{$i}++; }else{ $coders{$mod}{$i}++; } $logins{$mod}{$i}++; } } sub srt { $nmr{$a} <=> $nmr{$b}; } foreach $mod (sort srt keys %nmr){ $nbugs=scalar(keys %{ $nbug{$mod} }); if ($nmr{$mod} > 0 && $ndelta{$mod} && $nlines{$mod} > 0){ print "$mod\;$nmr{$mod}\;$ndelta{$mod}\;$nlines{$mod}"; $tmp=$nbugs/$nmr{$mod}+0.0;print "\;$tmp"; $tmp=$nbugs/$ndelta{$mod}+0.0;print "\;$tmp"; $tmp=$nbugs/$nlines{$mod}+0.0;print "\;$tmp"; $ninsidef=0; foreach $dev (keys %{ $fixers{$mod} }){ if ($dev =~ /\@netscape\.com/){ $ninsidef++; } } foreach $dev (keys %{ $coders{$mod} }){ if ($dev =~ /\@netscape\.com/){ $ninsidec++; } } $nnmr=0;$nnmrf=0;$nnmrc=0;$nnmri=0;$nnmrif=0;$nnmric=0; foreach $dev (keys %{ $logins{$mod} }){ $nnmr+=$logins{$mod}{$dev}; if ($fixers{$mod}{$dev} ne ""){ $nnmrf+=$fixers{$mod}{$dev}; } if ($coders{$mod}{$dev} ne ""){ $nnmrc+=$coders{$mod}{$dev}; } if ($dev =~ /\@netscape\.com/){ $ninside++; $nnmri+=$logins{$mod}{$dev}; if ($fixers{$mod}{$dev} ne ""){ $nnmrif+=$fixers{$mod}{$dev}; } if ($coders{$mod}{$dev} ne ""){ $nnmric+=$coders{$mod}{$dev}; } } } if ($nnmrc>0){$nnmric=1.0*$nnmric/$nnmrc;} if ($nnmrf>0){$nnmrif=1.0*$nnmrif/$nnmrf;} $nfixers=scalar (keys %{ $fixers{$mod} }); $ncoders=scalar (keys %{ $coders{$mod} }); $nlogins=scalar (keys %{ $logins{$mod} }); if ($nfixers > 0){ $ninsidef=1.0*$ninsidef/$nfixers; } if ($ninsidec > 0){$ninsidec=1.0*$ninsidec/$ncoders;} $ninside=1.0*$ninside/$nlogins; print "\;$nfixers\;$ncoders\;$nlogins\;$ninsidef\;$ninsidec\;$ninside\;$nnmrif\;$nnmric\n"; } }