#!/usr/bin/perl # #******************************************************************************* # #Copyright (c) 2009, Perforce Software, Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #******************************************************************************* # #Author: Stephen Moon # #Date: August 6, 2010 #Program: Lines add, deleted, and changed between two difference releases # #******************************************************************************* use warnings; use strict; sub main() { my $argc = @ARGV; if($argc != 2) { die "Usage: codeChange.pl \n"; } my $p4 = "p4 -p public.perforce.com:1666 -u smoon"; open(OUT,">codeChange.txt") or die "Unable to open codeChange.txt\n"; my ($lineAddCt,$lineAddRange) = (0,0); my ($lineDelCt,$lineDelRange) = (0,0); my ($lineChgCt,$lineChgRange) = (0,0); foreach(`$p4 diff2 $ARGV[0] $ARGV[1]`) { #lines added if(/^\d+a\d+$/) { print OUT "NAN: $_"; $lineAddCt++; } if(/^\d+a(\d+),(\d+)$/) { $lineAddRange = $2 - $1; $lineAddCt = $lineAddCt + $lineAddRange; print OUT "NANcN: $_"; } #lines deleted if(/^\d+d\d+$/) { print OUT "NDN: $_"; $lineDelCt++; } if(/^(\d+),(\d+)d\d+$/) { $lineDelRange = $2 - $1; $lineDelCt = $lineDelCt + $lineDelRange; print OUT "NcNDN: $_"; } #lines changed if(/^\d+c\d+$/) { print OUT "NCN: $_"; $lineChgCt++; } if(/^(\d+),(\d+)c\d+$/) { $lineChgRange = $2 - $1; $lineChgCt = $lineDelCt + $lineChgRange; print OUT "NcNCN: $_"; } if(/^\d+c(\d+),(\d+)$/) { $lineChgRange = $2 - $1; $lineChgCt = $lineDelCt + $lineChgRange; print OUT "NCNcN: $_"; } if(/^(\d+),(\d+)c(\d+),(\d+)$/) { $lineChgRange = ($4 - $3) - ($2 - $1); $lineChgCt = $lineDelCt + abs($lineChgRange); print OUT "NcNCNcN: $_"; } }#end of foreach loop print "Lines added are: " . $lineAddCt . "\n"; print "Lines deleted are: " . $lineDelCt . "\n"; print "Lines changed are: " . $lineChgCt . "\n"; close(OUT); } &main();