Python源文件中的语句计数
对于任何事情来说,代码行都是一个糟糕的度量,原因在此未讨论。但是,有没有一种简洁的方法来计算Python源代码文件中的语句 计算物理代码行,而不是我发现给出合理数字的本地代码行。计算物理代码行,而不是我发现给出合理数字的本地代码行。使用ast模块从Python代码解析和构造语法树。您将能够基于该树和节点应用所需的自定义计数算法。使用ast模块从Python代码解析和构造语法树。您将能够基于该树和节点应用所需的自定义计数算法。pylint在其输出报告中直接给出:Python源文件中的语句计数,python,Python,对于任何事情来说,代码行都是一个糟糕的度量,原因在此未讨论。但是,有没有一种简洁的方法来计算Python源代码文件中的语句 计算物理代码行,而不是我发现给出合理数字的本地代码行。计算物理代码行,而不是我发现给出合理数字的本地代码行。使用ast模块从Python代码解析和构造语法树。您将能够基于该树和节点应用所需的自定义计数算法。使用ast模块从Python代码解析和构造语法树。您将能够基于该树和节点应用所需的自定义计数算法。pylint在其输出报告中直接给出: pylint main.py
pylint main.py
...
Report
======
145 statements analysed.
pylint在其输出报告中直接给出:
pylint main.py
...
Report
======
145 statements analysed.
虽然这是一个老帖子。下面是一段代码,它以与PyLint相同的方式对python源文件中的语句进行计数
from astroid import MANAGER
# Tested with astroid 2.3.0.dev0
class ASTWalker:
"""
Class to walk over the Astroid nodes
"""
def __init__(self):
self.nbstatements = 0
def walk(self, astroid_node):
"""
Recurse in the astroid node children and count the statements.
"""
if astroid_node.is_statement:
self.nbstatements += 1
# recurse on children
for child in astroid_node.get_children():
self.walk(child)
walker = ASTWalker()
ast_node = MANAGER.ast_from_file("/my/file/name", source=True)
walker.walk(ast_node)
print(walker.nbstatements)
虽然这是一个老帖子。下面是一段代码,它以与PyLint相同的方式对python源文件中的语句进行计数
from astroid import MANAGER
# Tested with astroid 2.3.0.dev0
class ASTWalker:
"""
Class to walk over the Astroid nodes
"""
def __init__(self):
self.nbstatements = 0
def walk(self, astroid_node):
"""
Recurse in the astroid node children and count the statements.
"""
if astroid_node.is_statement:
self.nbstatements += 1
# recurse on children
for child in astroid_node.get_children():
self.walk(child)
walker = ASTWalker()
ast_node = MANAGER.ast_from_file("/my/file/name", source=True)
walker.walk(ast_node)
print(walker.nbstatements)
那么你想排除什么呢?空行和注释?所有注释,包括docstring?对应用程序控制流没有意义的所有内容-空行、注释等,也包括在内;分开的语句。可能重复:我认为语句/表达式的数量与代码行的数量一样具有误导性……那么您想排除什么呢?空行和注释?所有注释,包括docstring?对应用程序控制流没有意义的所有内容-空行、注释等,也包括在内;分开的陈述。可能重复:陈述/表达的数量与代码行的数量一样具有误导性…是的,但这个数字是无用的,因此它不是进行对话的正确位置为什么是useless@MikkoOhtamaa相反,如果你要抱怨解决方案,你最好给出一些理由。是的,但这个数字是无用的,所以它不是一个合适的地方来讨论为什么它是useless@MikkoOhtamaa相反,如果你要抱怨解决方案,你最好给出一些理由。有没有办法从Pylint获得唯一的语句计数?Pylint-reports=y main.py将显示所有消息以及语句计数。是否有任何方法仅从Pylint获取语句计数?Pylint-reports=y main.py将显示所有消息以及语句计数。