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

1from __future__ import annotations 

2 

3 

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 } 

11 

12 content_lower = content.lower() 

13 

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") 

24 

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") 

33 

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") 

40 

41 return patterns