import os
import re
def extract_classes_and_methods(java_code):
classes_and_methods = {}
class_pattern = re.compile(r'\bclass\s+(\w+)')
method_pattern = re.compile(r'\b(public|private|protected)\s+\w+\s+(\w+)\s*\([^)]*\)\s*{')
classes = class_pattern.findall(java_code)
print(f"Found classes: {classes}") # 调试输出类名
for class_name in classes:
classes_and_methods[class_name] = []
for match in method_pattern.finditer(java_code):
method_name = match.group(2)
for class_name in classes_and_methods:
if java_code.find(class_name) < match.start():
classes_and_methods[class_name].append(method_name)
break
print(f"Classes and methods: {classes_and_methods}") # 调试输出类和方法
return classes_and_methods
def parse_java_files_in_directory(directory):
if not os.path.isdir(directory):
print(f"The directory {directory} does not exist or is not a directory.")
return {}
java_files = [os.path.join(root, file)
for root, _, files in os.walk(directory)
for file in files if file.endswith('.java')]
print(f"Java files found: {java_files}") # 调试输出Java文件列表
all_classes_and_methods = {}
for java_file in java_files:
print(f"Processing file: {java_file}") # 调试输出当前处理的文件
with open(java_file, 'r', encoding='utf-8') as file:
java_code = file.read()
classes_and_methods = extract_classes_and_methods(java_code)
all_classes_and_methods.update(classes_and_methods)
return all_classes_and_methods
def main():
directory = 'C:\\Users\\Lenovo\\Desktop\\network\\network-chat-room-system\\src\\server' # 请替换为Java文件所在目录
print(f"Scanning directory: {directory}") # 调试输出扫描目录
classes_and_methods = parse_java_files_in_directory(directory)
for class_name, methods in classes_and_methods.items():
print(f"Class: {class_name}")
for method in methods:
print(f" Method: {method}")
print()
if __name__ == "__main__":
main()
用于打印Java项目类名和方法名的python脚本
最新推荐文章于 2024-07-14 14:59:27 发布