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)