Java 代码行数统计程序
用 Java 完成了一个 DNS Resolver 的作业程序。自我感觉结构写得还不错,便拿着到处和同学比测试速度和测试用例。到最后,实在是比无可比,便想到了比代码行数……
计算代码行数需要去除代码中多余的空白行和注释行。所幸 Cure 有用 Python 写过一个代码行数统计程序,便取过来,配合 Java 语法规则,做了些小修改。便完成了这个 Java 代码行数统计程序。
使用该程序需要 Python 运行库支持,使用命令行,
计算代码行数需要去除代码中多余的空白行和注释行。所幸 Cure 有用 Python 写过一个代码行数统计程序,便取过来,配合 Java 语法规则,做了些小修改。便完成了这个 Java 代码行数统计程序。
使用该程序需要 Python 运行库支持,使用命令行,
python LineCount.py在网上还找到一个代码语法高亮着色器,着色一下修改后的代码,贴出来看看效果。
import sys; import os; class LineCount: def trim(self, docstring): if not docstring: return '' lines = docstring.expandtabs().splitlines() indent = sys.maxint for line in lines[1:]: stripped = line.lstrip() if stripped: indent = min(indent, len(line) - len(stripped)) trimmed = [lines[0].strip()] if indent < sys.maxint: for line in lines[1:]: trimmed.append(line[indent:].rstrip()) while trimmed and not trimmed[-1]: trimmed.pop() while trimmed and not trimmed[0]: trimmed.pop(0) return '\n'.join(trimmed) def FileLineCount(self, filename): (filepath,tempfilename) = os.path.split(filename); (shotname,extension) = os.path.splitext(tempfilename); if extension == '.java': # file type file = open(filename,'r'); self.sourceFileCount += 1; allLines = file.readlines(); file.close(); lineCount = 0; commentCount = 0; blankCount = 0; codeCount = 0; for eachLine in allLines: if eachLine != " " : eachLine = eachLine.replace(" ", ""); # remove space eachLine = self.trim(eachLine); # remove tabIndent if (eachLine.startswith("//") == 1 or eachLine.startswith("*") == 1 or eachLine.startswith("/*") == 1 or eachLine.startswith("*/") == 1): # LINECOMMENT commentCount += 1; else : if eachLine == "": blankCount += 1; else : codeCount += 1; lineCount = lineCount + 1; self.all += lineCount; self.allComment += commentCount; self.allBlank += blankCount; self.allSource += codeCount; print filename; print ' Total :',lineCount; print ' Comment :',commentCount; print ' Blank :',blankCount; print ' Source :',codeCount; def CalulateCodeCount(self,filename): if os.path.isdir(filename) : if not filename.endswith('\\'): filename += '\\'; for file in os.listdir(filename): if os.path.isdir(filename + file): self.CalulateCodeCount(filename + file); else: self.FileLineCount(filename + file); else: self.FileLineCount(filename); # Open File def __init__(self): self.all = 0; self.allComment = 0; self.allBlank = 0; self.allSource = 0; self.sourceFileCount= 0; filename = raw_input('Enter file name: '); self.CalulateCodeCount(filename); if self.sourceFileCount == 0 : print 'No Code File'; pass; print '\n'; print '***************** All Files **********************'; print ' Files :',self.sourceFileCount; print ' Total :',self.all; print ' Comment :',self.allComment; print ' Blank :',self.allBlank; print ' Source :',self.allSource; print '****************************************************'; myLineCount = LineCount();