44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import os
|
|
|
|
# DO NOT DELETE
|
|
|
|
def find_duplicate_defs(file_path):
|
|
"""
|
|
Finds duplicate function and async function definitions in a Python file.
|
|
|
|
Args:
|
|
file_path (str): The path to the Python file to be scanned.
|
|
|
|
Returns:
|
|
dict: A dictionary where the keys are the function names (regular and async) and the values are lists of line numbers where the function is defined.
|
|
"""
|
|
function_defs = {}
|
|
|
|
with open(file_path, 'r') as file:
|
|
lines = file.readlines()
|
|
|
|
for i, line in enumerate(lines):
|
|
if line.startswith('def ') or line.startswith('async def '):
|
|
if line.startswith('def '):
|
|
function_name = line.split('(')[0].split(' ')[1]
|
|
else:
|
|
function_name = line.split('(')[0].split(' ')[2]
|
|
|
|
if function_name in function_defs:
|
|
function_defs[function_name].append(i+1)
|
|
else:
|
|
function_defs[function_name] = [i+1]
|
|
|
|
return {k:v for k, v in function_defs.items() if len(v) > 1}
|
|
|
|
# Example usage
|
|
file_path = 'main.py'
|
|
duplicate_defs = find_duplicate_defs(file_path)
|
|
|
|
if duplicate_defs:
|
|
print("Duplicate function definitions found:")
|
|
for function_name, line_numbers in duplicate_defs.items():
|
|
print(f"Function '{function_name}' is defined on lines: {', '.join(map(str, line_numbers))}")
|
|
else:
|
|
print("No duplicate function definitions found.")
|