如何使用Python计算JS源中的注释行?

时间:2015-12-22 09:58:39

标签: python lines

我正在用Python编写一个小工具来计算源代码行,注释行和空行/空行。

实际上我可以计算所有的行并且都是空的,但我很难计算评论,有人可以帮我吗?我是这个郎的新手。

def file_len(pFile):
    filled,blanks = 0
    for line in open(pFile).readlines():
        if line.strip():
            filled += 1
        if not line.strip():
            blanks += 1
    return filled, blanks


url = 'C:/blablablabla/littlesource.js'
f = open(url, 'r')
k = f.read()
print(k)

source_properties = file_len(url)
print('Code: ',source_properties[0],'Empty: ',source_properties[1])
f.close()

对于“代码”我实际上意味着所有来源都不是空行,所以我不能做“注释行=(所有行) - (源代码行) - (空行/空行)”按照jkdev的建议...

1 个答案:

答案 0 :(得分:0)

问题有时是代码//但它不是评论。

例如:

url = "http://helloworld/"

如果我搜索//,我会错误地计算此行。 首先,我从代码中删除所有字符串

code_without_strings = re.sub("""("[^"]+"|'[^']+')""", "", code)

之后我找到所有//(每行只有一次)并计算其数量

 len(re.findall("(//.*(\n|$))", code_without_strings))

如果您还想考虑/* */,可能会有点复杂。

 len(re.findall("(/\*.*?\*/", code_without_strings, flags=re.S))

但是您必须考虑//位于/* */块内的情况。您可以通过首先计算多行注释的数量,然后删除它们(与我们对字符串的操作相同)然后计算单行注释