Documentation
¶
Index ¶
- func DetectLanguageForFile(filePath string) (string, error)
- func DetectLanguages(rootPath string) (map[string]string, error)
- type Analysis
- type CodebaseAnalyzer
- type DirectoryAnalysis
- type InstrumentationRegistryService
- func (s *InstrumentationRegistryService) CanonicalLanguage(language string) string
- func (s *InstrumentationRegistryService) GetInstrumentation(ctx context.Context, pkg domain.Package) (*domain.InstrumentationInfo, error)
- func (s *InstrumentationRegistryService) PackageName(packageName string) string
- func (s *InstrumentationRegistryService) RegistryLanguage(language string) string
- type IssueDetector
- type Language
- type RegistryEntry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DetectLanguageForFile ¶
Types ¶
type Analysis ¶
type Analysis struct {
RootPath string `json:"root_path"`
DirectoryAnalyses map[string]*DirectoryAnalysis `json:"directory_analyses"`
}
Analysis contains the results of language detection and library discovery
type CodebaseAnalyzer ¶
type CodebaseAnalyzer struct {
// contains filtered or unexported fields
}
CodebaseAnalyzer coordinates the detection process
func NewCodebaseAnalyzer ¶
func NewCodebaseAnalyzer(detectors []IssueDetector, languages map[string]Language, logger logger.Logger) *CodebaseAnalyzer
NewCodebaseAnalyzer creates a new analysis engine
func (*CodebaseAnalyzer) AnalyzeCodebase ¶
func (ca *CodebaseAnalyzer) AnalyzeCodebase(ctx context.Context, rootPath string) (*Analysis, error)
AnalyzeCodebase performs the full analysis
type DirectoryAnalysis ¶
type DirectoryAnalysis struct {
Directory string `json:"directory"`
Language string `json:"language"`
Libraries []domain.Library `json:"libraries"`
Packages []domain.Package `json:"packages"`
AvailableInstrumentations []domain.InstrumentationInfo `json:"available_instrumentations"`
Issues []domain.Issue `json:"issues"`
}
DirectoryAnalysis contains analysis results for a specific directory
type InstrumentationRegistryService ¶
type InstrumentationRegistryService struct {
// contains filtered or unexported fields
}
InstrumentationRegistryService handles communication with the OpenTelemetry instrumentation registry
func NewInstrumentationRegistryService ¶
func NewInstrumentationRegistryService() *InstrumentationRegistryService
NewInstrumentationRegistryService creates a new instrumentation registry service
func (*InstrumentationRegistryService) CanonicalLanguage ¶
func (s *InstrumentationRegistryService) CanonicalLanguage(language string) string
CanonicalLanguage normalizes registry language identifiers to our internal ones
func (*InstrumentationRegistryService) GetInstrumentation ¶
func (s *InstrumentationRegistryService) GetInstrumentation(ctx context.Context, pkg domain.Package) (*domain.InstrumentationInfo, error)
GetInstrumentation checks if instrumentation exists for a given package
func (*InstrumentationRegistryService) PackageName ¶
func (s *InstrumentationRegistryService) PackageName(packageName string) string
normalizedomain.PackageName converts package names to the format used in the registry
func (*InstrumentationRegistryService) RegistryLanguage ¶
func (s *InstrumentationRegistryService) RegistryLanguage(language string) string
RegistryLanguage normalizes language names to the ones used by the registry filenames
type IssueDetector ¶
type IssueDetector interface {
// ID returns a unique identifier for this detector
ID() string
// Name returns a human-readable name
Name() string
// Description returns what this detector looks for
Description() string
// Category returns the issue category
Category() domain.Category
// Languages returns which languages this detector applies to (empty = all)
Languages() []string
// Detect finds issues in the given context
Detect(ctx context.Context, analysis *DirectoryAnalysis) ([]domain.Issue, error)
}
IssueDetector defines how to detect specific issues
type Language ¶
type Language interface {
// Name returns the language name
Name() string
// GetOTelLibraries finds OpenTelemetry libraries used in the codebase
GetOTelLibraries(ctx context.Context, rootPath string) ([]domain.Library, error)
// GetAllPackages finds all packages/dependencies used in the codebase
GetAllPackages(ctx context.Context, rootPath string) ([]domain.Package, error)
// GetFilePatterns returns file patterns this language detector should scan
GetFilePatterns() []string
}
Language represents a programming language detector
type RegistryEntry ¶
type RegistryEntry struct {
Title string `yaml:"title"`
RegistryType string `yaml:"registryType"`
Language string `yaml:"language"`
Tags []string `yaml:"tags"`
Description string `yaml:"description"`
License string `yaml:"license"`
Authors []struct {
Name string `yaml:"name"`
} `yaml:"authors"`
URLs struct {
Repo string `yaml:"repo"`
} `yaml:"urls"`
CreatedAt string `yaml:"createdAt"`
IsFirstParty bool `yaml:"isFirstParty"`
}
RegistryEntry represents the YAML structure from the OpenTelemetry registry