Coverage for src\llm_code_lens\analyzer\__init__.py: 29%

28 statements  

« prev     ^ index     » next       coverage.py v7.7.0, created at 2025-05-25 12:07 +0300

1from .base import ProjectAnalyzer, AnalysisResult, BaseAnalyzer 

2from .python import PythonAnalyzer 

3from .javascript import JavaScriptAnalyzer 

4from .config import ( 

5 analyze_package_json, 

6 analyze_tsconfig, 

7 extract_readme_summary 

8) 

9 

10# Create a lazy-loading proxy for SQLServerAnalyzer 

11class SQLServerAnalyzerProxy: 

12 def __new__(cls, *args, **kwargs): 

13 try: 

14 from .sql import SQLServerAnalyzer as RealSQLServerAnalyzer 

15 return RealSQLServerAnalyzer(*args, **kwargs) 

16 except ImportError as e: 

17 import warnings 

18 warnings.warn(f"SQL Server analysis functionality is not available: {e}. " 

19 "Install pyodbc and required ODBC drivers to enable this feature.") 

20 

21 # Return a dummy analyzer that provides the same interface but does nothing 

22 class DummySQLServerAnalyzer(BaseAnalyzer): 

23 def __init__(self, *args, **kwargs): 

24 pass 

25 

26 def analyze_file(self, file_path): 

27 return {"type": "sql", "metrics": {"loc": 0}, "errors": ["SQL analysis not available"]} 

28 

29 def connect(self, connection_string=None): 

30 pass 

31 

32 def list_databases(self): 

33 return [] 

34 

35 def analyze_database(self, database): 

36 return {"stored_procedures": [], "views": [], "functions": []} 

37 

38 def __del__(self): 

39 pass 

40 

41 return DummySQLServerAnalyzer(*args, **kwargs) 

42 

43# Use the proxy instead of direct import 

44SQLServerAnalyzer = SQLServerAnalyzerProxy 

45 

46__all__ = [ 

47 'ProjectAnalyzer', 

48 'AnalysisResult', 

49 'BaseAnalyzer', 

50 'PythonAnalyzer', 

51 'JavaScriptAnalyzer', 

52 'SQLServerAnalyzer', 

53 'analyze_package_json', 

54 'analyze_tsconfig', 

55 'extract_readme_summary' 

56]