[Python编程]统计Java源文件代码行数,注释行数,空白行数

每次学习新的语言,就想重新实现一遍做过的课设=,=
这里实现的是"综合性实验 Java源代码分析程序"的第三部分
第二部分见:[Python编程]统计目录下Java源文件的关键字出现次数
原来的Java实现在这:
[Java]统计Java源文件代码行数,注释行数,空白行数

1.说明

在Java源程序中的行共有3种:

(1)代码行,可运行的Java源代码。例如:
int n = 10;
(2) 注释行,3种注释均可。例如:
 /**
  文档注释
 */

 /*
   多行注释
 */
 
 //单行注释
(3)空行,既无代码,也无注释;

2. 代码实现

根据第二部分的统计关键字稍作修改得到,
逻辑很清晰:
1.读取一个文件,将文件分割为多行存在列表lines中
2.当前总行数+len(lines)
3.对lines使用line迭代,如果line==’’ 空白行数+1,继续下一行
4.如果line匹配为注释行 注释行数+1
5.否则,被匹配为代码行,代码行+1

row_count = blank_count = note_count = code_count = 0


def code_analyze(filepath):
    with open(filepath) as file:
        lines = file.read().strip().split('\n')  # 一次性读取一个文件,并用换行分割每一行
        global row_count, blank_count, note_count, code_count  # 只是复习全局变量用法,不推荐
        row_count += len(lines)
        for line in lines:
            if line == '':
                blank_count += 1
                continue
            noteline = re.match(r'^/(.*)|^\*(.*)|(.*)\*/$', line.strip(), flags=0)  # 匹配以/、/*、*开头 或*/结尾的注释行
            if noteline is None:  # 匹配为代码行
                code_count += 1
            else:
                note_count += 1

3.测试

root = r'E:\java\util'
search(root)
for f in filelist: code_analyze(f)
print("源程序总行数:", row_count)
print("代码行数:", code_count, ",占", round(code_count / row_count*100, 2), "%")
print("注释行数:", note_count, ",占", round(note_count / row_count*100,2), "%")
print("空白行数:", blank_count, ",占", round(blank_count / row_count*100,2), "%")

对util文件夹进行测试(测试文档下载地址:百度网盘
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xHibiki/article/details/83789923