Coverage for src/qdrant_loader/core/chunking/strategy/code/metadata/patterns.py: 93%
27 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
1from __future__ import annotations
4def identify_code_patterns(content: str) -> dict[str, list[str]]:
5 patterns = {
6 "design_patterns": [],
7 "anti_patterns": [],
8 "best_practices": [],
9 "code_smells": [],
10 }
12 content_lower = content.lower()
14 if "singleton" in content_lower or "__new__" in content:
15 patterns["design_patterns"].append("singleton")
16 if "factory" in content_lower and (
17 "create" in content_lower or "build" in content_lower
18 ):
19 patterns["design_patterns"].append("factory")
20 if "observer" in content_lower or "notify" in content_lower:
21 patterns["design_patterns"].append("observer")
22 if "strategy" in content_lower and "algorithm" in content_lower:
23 patterns["design_patterns"].append("strategy")
25 if content.count("if ") > 5:
26 patterns["code_smells"].append("too_many_conditionals")
27 if len(content.split("\n")) > 100:
28 patterns["code_smells"].append("long_method")
29 if content.count("def ") > 20 or content.count("function ") > 20:
30 patterns["code_smells"].append("large_class")
31 if "global " in content:
32 patterns["anti_patterns"].append("global_variables")
34 if '"""' in content or "'''" in content:
35 patterns["best_practices"].append("documentation")
36 if "test_" in content or "Test" in content:
37 patterns["best_practices"].append("testing")
38 if any(keyword in content for keyword in ["typing", "Type", "Optional"]):
39 patterns["best_practices"].append("type_hints")
41 return patterns