Add project and language analyzers
This commit is contained in:
24
src/contextgen/analyzers/base.py
Normal file
24
src/contextgen/analyzers/base.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
"""Base analyzer class for all project analyzers."""
|
||||||
|
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
class BaseAnalyzer(ABC):
|
||||||
|
"""Base class for all project analyzers."""
|
||||||
|
|
||||||
|
def __init__(self, project_path: Path):
|
||||||
|
self.project_path = project_path
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def analyze(self) -> dict[str, Any]:
|
||||||
|
"""Analyze the project and return results."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _safe_read_file(self, path: Path, encoding: str = "utf-8") -> str | None:
|
||||||
|
"""Safely read a file, returning None on error."""
|
||||||
|
try:
|
||||||
|
return path.read_text(encoding=encoding)
|
||||||
|
except (IOError, UnicodeDecodeError):
|
||||||
|
return None
|
||||||
Reference in New Issue
Block a user