It’s a relatively trivial task, really easy to do with the command prompt and GNU wc:
for /f "delims=" %P in ('dir /s /b *.cs') do wc -l "%P" >> D:\codewordcounts.txt
I executed this within the desired directory (my BASeBlock source folder, if you must know) and the result was a file filled with numbers and files; I wrote a quick python script to parse that and add up the numbers that were at the start of each line, but then I figured, why not just write the whole think in python and forget about the rest of it, so I did.
for root,subFolders,files in os.walk(folder):
for file in files:
if not fnmatch.fnmatch(buildpath,excludemask):
#counts the lines in filename.
countit = open(filename)
for line in countit:
searchfor = sys.argv
searchin = sys.argv
excludethese = sys.argv
print "examining files matching " + searchfor + " in directory " + searchin
+ " excluding " + excludethese
for countthese in searchfolder(searchin,searchfor,excludethese):
totalcount = totalcount + Countlines(countthese)
print "total line count:" + totalcount
It’s a rather basic script, and I don’t even comment it as much as I ought to. I just wanted a quick tool to be able to count the lines of code in a given directory for a given source file type. Ideally, I’d allow for multiple types, but I didn’t want to complicate the argument parsing code too much. The counting method is pretty barren, it just loops over every line and increments a counter. It seems to work relatively fast. It quickly gave me the result I wanted, which was that BASeBlock’s .cs files comprise about 53K lines of code, excluding the .designer.cs files (thus the third argument). And now I have a nice reusable script to figure this out in a jiffy without too much thinking about shell syntax or what I need to pipe to wc and what arguments I need to pass wc and whatnot. plonked in a location on my windows machine with pathext set to allow execution of .py files directly using the ActivePython interpreter and putting it on my Linux machine and adding a symlink in /usr/bin to it makes it available to me on both machines.