From ba8f663f16c3e8c4abd2ef7ec5966a7dc338b962 Mon Sep 17 00:00:00 2001 From: "David A. Wheeler" Date: Sun, 25 Aug 2013 08:16:13 -0400 Subject: Initial commit of version 2.26. --- sql_count | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 sql_count (limited to 'sql_count') diff --git a/sql_count b/sql_count new file mode 100755 index 0000000..8240fd9 --- /dev/null +++ b/sql_count @@ -0,0 +1,76 @@ +#!/usr/bin/perl +# sql_count - count physical lines of code in SQL. + +# SQL is really screwed up in its commenting system. +# In ANSI, "--" means start of comment, but this causes many problems +# with automatically generated SQL queries. For example, given: +# UPDATE tbl_name SET credit=credit-!payment! +# If !payment! is automatically substituted for a negative number, +# a comment is unexpectedly generated. + +# So, this program accepts "-- " (dash-dash-space) as a comment character. +# It also supports "#" and /* .. */, which are supported by MySQL. + +# This is part of SLOCCount, a toolsuite that counts +# source lines of code (SLOC). +# Copyright (C) 2001-2004 David A. Wheeler. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# To contact David A. Wheeler, see his website at: +# http://www.dwheeler.com. +# +# + +$total_sloc = 0; + +# Do we have "-f" (read list of files from second argument)? +if (($#ARGV >= 1) && ($ARGV[0] eq "-f")) { + # Yes, we have -f + if ($ARGV[1] eq "-") { + # The list of files is in STDIN + while () { + chomp ($_); + &count_file ($_); + } + } else { + # The list of files is in the file $ARGV[1] + open (FILEWITHLIST, $ARGV[1]) || die "Error: Could not open $filewithlist\n"; + while () { + chomp ($_); + &count_file ($_); + } + close FILEWITHLIST; + } + shift @ARGV; shift @ARGV; +} +# Process all (remaining) arguments as file names +while ($file = shift @ARGV) { + &count_file ($file); +} + +print "Total:\n"; +print "$total_sloc\n"; + +sub count_file { + my ($file) = @_; + my $sloc = 0; + + $result = `sed -e "s/#.*//" -e "s/-- .*//" < "$file" | c_count`; + $result =~ m/^\s*([0-9]+)/; + $sloc = $1; + print "$sloc $file\n"; + $total_sloc += $sloc; +} -- cgit v1.2.1