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

2024-04-20 02:09:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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建议的那样做“注释行=(所有行)-(源代码行)-(空白/空行)。。。你知道吗


Tags: urlsourcelenif源代码linepropertiesopen
1条回答
网友
1楼 · 发布于 2024-04-20 02:09:57

问题是有时代码有//但不是注释。你知道吗

例如:

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))

但接下来必须考虑//位于/* */块内的情况。首先计算多行注释的数量,然后删除它们(与我们对字符串所做的相同),然后计算单行注释的数量

相关问题 更多 >