计算Python源文件中的语句

时间:2012-05-04 18:36:51

标签: python

由于此处未讨论的原因,代码行对任何事物都是不好的衡量标准。但有没有一种巧妙的方法来计算Python源代码文件中的语句?

4 个答案:

答案 0 :(得分:3)

pylint直接在其输出报告中给出:

  pylint main.py 

  ...

  Report
  ======
  145 statements analysed.

答案 1 :(得分:1)

为了计算代码的物理行(而不是逻辑代码行),我发现SLOCCount给出了合理的数字。

答案 2 :(得分:1)

使用ast模块解析并构造Python代码中的语法树。您将能够根据该树和节点应用您想要的自定义计数算法。

答案 3 :(得分:0)

尽管这是一个旧帖子。这是一段代码,它以与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)