091. 编写一个函数,实现简单的代码分析工具

以下是一个简单的 Python 函数,用于实现一个基本的代码分析工具。这个工具可以统计代码中的行数、注释行数、空行数等基本信息,并且可以简单地检查代码中是否存在某些常见的错误(例如未关闭的括号)。

示例代码

def analyze_code(file_path):
    """
    简单的代码分析工具
    功能:
    1. 统计代码行数、注释行数、空行数
    2. 检查是否存在未关闭的括号(圆括号、方括号、花括号)
    :param file_path: 要分析的代码文件路径
    """
    total_lines = 0
    comment_lines = 0
    empty_lines = 0
    bracket_stack = []

    try:
        with open(file_path, "r", encoding="utf-8") as file:
            for line in file:
                total_lines += 1
                line = line.strip()

                # 检查空行
                if line == "":
                    empty_lines += 1
                    continue

                # 检查注释行
                if line.startswith("#") or line.startswith("//"):
                    comment_lines += 1
                    continue

                # 检查括号
                for char in line:
                    if char in "([{":
                        bracket_stack.append(char)
                    elif char in ")}]":
                        if not bracket_stack:
                            print(f"Error: Unmatched closing bracket '{char}' at line {total_lines}")
                        else:
                            open_bracket = bracket_stack.pop()
                            if (open_bracket == "(" and char != ")") or \
                               (open_bracket == "[" and char != "]") or \
                               (open_bracket == "{" and char != "}"):
                                print(f"Error: Mismatched brackets '{open_bracket}' and '{char}' at line {total_lines}")

        # 检查是否有未关闭的括号
        if bracket_stack:
            print(f"Error: Unmatched opening brackets {bracket_stack} at the end of the file")

        # 打印统计信息
        print(f"Total lines: {total_lines}")
        print(f"Comment lines: {comment_lines}")
        print(f"Empty lines: {empty_lines}")

    except FileNotFoundError:
        print(f"Error: File '{file_path}' not found.")
    except Exception as e:
        print(f"An error occurred: {e}")

# 示例用法
file_path = "example.py"  # 替换为你的代码文件路径
analyze_code(file_path)

功能说明

统计信息

  • 统计代码的总行数、注释行数和空行数。

  • 注释行的判断基于行首是否为 #//(适用于 Python 和 C/C++ 等语言)。

  • 空行是通过判断行是否为空字符串来确定的。

括号检查

  • 使用栈来检查代码中是否存在未关闭的括号(圆括号 ()、方括号 []、花括号 {})。

  • 如果发现未匹配的括号,会打印错误信息并指出所在的行号。

错误处理

  • 如果文件不存在,会提示文件未找到。

  • 其他异常也会被捕获并打印错误信息。

使用方法

将代码保存为一个 .py 文件,然后将需要分析的代码文件路径传递给 analyze_code 函数即可。例如:

file_path = "example.py"  # 替换为你的代码文件路径
analyze_code(file_path)

你可以根据需要扩展这个工具的功能,例如增加对特定代码风格的检查、统计变量和函数的使用情况等。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)