-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode_analyzer.py
More file actions
41 lines (33 loc) · 1.23 KB
/
Copy pathcode_analyzer.py
File metadata and controls
41 lines (33 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import re
class CodeAnalyzer:
def analyze_code(self, code: str):
"""
Analyze the given code to detect language, functions, and classes.
Args:
code (str): The source code to analyze.
Returns:
dict: A summary of the analysis.
"""
# Detect language
language = self.detect_language(code)
# Extract classes and functions
classes = self.extract_classes(code)
functions = self.extract_functions(code)
return {
"language": language,
"classes": classes,
"functions": functions
}
def detect_language(self, code: str) -> str:
"""A simplified language detector."""
if "def " in code and "class " in code:
return "python"
elif "function " in code or "var " in code:
return "javascript"
return "unknown"
def extract_classes(self, code: str) -> list:
"""Extract class names from the code."""
return re.findall(r'class\s+(\w+)', code)
def extract_functions(self, code: str) -> list:
"""Extract function names from the code."""
return re.findall(r'def\s+(\w+)', code)