initial
This commit is contained in:
37
ReactDev/core/file_analyzer.py
Normal file
37
ReactDev/core/file_analyzer.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import esprima
|
||||
from ..utils.logger import log
|
||||
|
||||
class FileAnalyzer:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def analyze_file(self, file_path: str) -> dict:
|
||||
"""
|
||||
Анализирует файл и извлекает информацию о функциях.
|
||||
"""
|
||||
log(f"Analyzing file: {file_path}")
|
||||
with open(file_path, "r") as f:
|
||||
code = f.read()
|
||||
|
||||
try:
|
||||
parsed = esprima.parseScript(code, loc=True)
|
||||
functions = self._extract_functions(parsed)
|
||||
return functions
|
||||
except Exception as e:
|
||||
log(f"Error parsing file {file_path}: {e}", level="error")
|
||||
return {}
|
||||
|
||||
def _extract_functions(self, ast: dict) -> dict:
|
||||
"""
|
||||
Извлекает информацию о функциях из AST.
|
||||
"""
|
||||
functions = {}
|
||||
for node in ast.body:
|
||||
if node.type == "FunctionDeclaration":
|
||||
name = node.id.name
|
||||
params = [param.name for param in node.params]
|
||||
functions[name] = {
|
||||
"params": params,
|
||||
"return_type": "unknown", # Тип возвращаемого значения не всегда доступен
|
||||
}
|
||||
return functions
|
||||
Reference in New Issue
Block a user