Documentation
¶
Overview ¶
Package code defines domain entities, ports, and analytics for static code graphs, symbol indexes, and architectural insights.
Package code provides AST extraction, code graph management, and file watching capabilities.
Index ¶
Constants ¶
const ( ConfidenceExtracted = 1.0 // Stated directly in AST (e.g. import, direct call) ConfidenceInferred = 0.8 // Deduced (e.g. 2-pass member call resolution) ConfidenceAmbiguous = 0.5 // Plausible but uncertain )
Confidence levels for code relationships, matching Graphify standards.
const ( RelationCalls = "calls" RelationImports = "imports" RelationImplements = "implements" RelationDefines = "defines" RelationUses = "uses" RelationContains = "contains" RelationExtends = "extends" RelationInstantiates = "instantiates" RelationUsesType = "uses_type" RelationReferences = "references" RelationExports = "exports" )
Standard relation types.
const ( KindFunc = "func" KindMethod = "method" KindStruct = "struct" KindInterface = "interface" KindClass = "class" KindModule = "module" KindPackage = "package" KindType = "type" KindTable = "table" KindEnum = "enum" KindVariable = "variable" KindConstant = "constant" )
Standard symbol kinds.
const ( VisibilityPublic = "public" VisibilityPrivate = "private" VisibilityProtected = "protected" VisibilityInternal = "internal" )
Standard visibility levels.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalyticsReport ¶
type AnalyticsReport struct {
Project string `json:"project"`
TotalSymbols int `json:"total_symbols"`
TotalRelations int `json:"total_relations"`
TotalFiles int `json:"total_files"`
GodNodes []GodNode `json:"god_nodes"`
ImportCycles []ImportCycle `json:"import_cycles"`
Communities []CommunityCohesion `json:"communities"`
AverageCohesion float64 `json:"average_cohesion"`
GeneratedAt time.Time `json:"generated_at"`
}
AnalyticsReport provides architectural diagnostic metrics.
func ComputeAnalytics ¶
func ComputeAnalytics(graph *CodeGraph) *AnalyticsReport
ComputeAnalytics runs structural graph diagnostics on a project's CodeGraph.
type CodeGraph ¶
type CodeGraph struct {
Project string `json:"project"`
Symbols []Symbol `json:"symbols"`
Relations []Relation `json:"relations"`
}
CodeGraph encapsulates the complete structural graph for a project or component.
type CommunityCohesion ¶
type CommunityCohesion struct {
CommunityID int `json:"community_id"`
Label string `json:"label"`
Members []string `json:"members"`
InternalEdges int `json:"internal_edges"`
PossibleEdges int `json:"possible_edges"`
CohesionScore float64 `json:"cohesion_score"` // 2*E / (N*(N-1))
}
CommunityCohesion measures the internal coupling density of a module or cluster.
type FileWatcher ¶
type FileWatcher struct {
// contains filtered or unexported fields
}
FileWatcher monitors code files and triggers incremental AST indexing upon changes.
func NewFileWatcher ¶
func NewFileWatcher(cfg WatcherConfig) *FileWatcher
NewFileWatcher creates a new Zero-CGO background file watcher.
func (*FileWatcher) ScanOnce ¶
func (w *FileWatcher) ScanOnce() []string
ScanOnce performs a single scan of the directory tree, returning modified or added files.
type GodNode ¶
type GodNode struct {
ID string `json:"id"`
Name string `json:"name"`
Kind string `json:"kind"`
FilePath string `json:"file_path"`
Degree int `json:"degree"`
InDegree int `json:"in_degree"`
OutDegree int `json:"out_degree"`
Score float64 `json:"score"`
}
GodNode identifies high-centrality architectural hubs.
type ImportCycle ¶
type ImportCycle struct {
ID string `json:"id"`
Files []string `json:"files"`
CyclePath []string `json:"cycle_path"`
}
ImportCycle represents a circular dependency loop between files or modules.
type Relation ¶
type Relation struct {
ID int64 `json:"id,omitempty"`
Project string `json:"project"`
SourceID string `json:"source_id"` // Caller / Importer symbol ID
TargetID string `json:"target_id"` // Callee / Imported symbol ID
Relation string `json:"relation"` // "calls", "imports", "implements", "defines", "uses", "contains", "extends", "instantiates", "uses_type", "references", "exports"
Confidence float64 `json:"confidence"` // 1.0 = EXTRACTED, 0.85 = INFERRED, 0.5 = AMBIGUOUS
Reasoning string `json:"reasoning,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
Relation represents a directed architectural edge between two code symbols.
type Service ¶
type Service interface {
IngestPath(ctx context.Context, rootPath string, project string, maxFiles int) (*AnalyticsReport, error)
GetGraph(ctx context.Context, project string) (*CodeGraph, error)
ListSymbols(ctx context.Context, filter SymbolFilter) ([]Symbol, error)
Analyze(ctx context.Context, project string) (*AnalyticsReport, error)
}
Service coordinates code AST ingestion, querying, and analytics.
type Store ¶
type Store interface {
SaveSymbols(ctx context.Context, symbols []Symbol) error
GetSymbolByID(ctx context.Context, id string) (*Symbol, error)
ListSymbols(ctx context.Context, filter SymbolFilter) ([]Symbol, error)
CountSymbols(ctx context.Context, filter SymbolFilter) (int, error)
DeleteSymbolsByProject(ctx context.Context, project string) error
DeleteSymbolsByFile(ctx context.Context, project, filePath string) error
SaveRelations(ctx context.Context, relations []Relation) error
GetGraph(ctx context.Context, project string) (*CodeGraph, error)
ListRelationsBySymbol(ctx context.Context, symbolID string) ([]Relation, error)
DeleteRelationsByProject(ctx context.Context, project string) error
DeleteRelationsByFile(ctx context.Context, project, filePath string) error
}
Store defines storage operations for code symbols and relations.
type Symbol ¶
type Symbol struct {
ID string `json:"id"` // Deterministic unique ID (e.g. "func:domain.NewService")
Project string `json:"project"` // Project namespace
FilePath string `json:"file_path"` // Relative file path (e.g. "internal/domain/service.go")
LineNumber int `json:"line_number"` // 1-based start line
EndLine int `json:"end_line,omitempty"` // 1-based end line
StartColumn int `json:"start_col,omitempty"` // Start column offset
EndColumn int `json:"end_col,omitempty"` // End column offset
Kind string `json:"kind"` // "func", "method", "struct", "class", "interface", "table", "module", "enum"
Name string `json:"name"` // Symbol identifier (e.g. "CalculateBlastRadius")
PackageName string `json:"package_name"` // Package or namespace (e.g. "domain")
ParentID string `json:"parent_id,omitempty"` // Hierarchical parent ID (e.g. class ID for methods, struct ID for fields)
Visibility string `json:"visibility,omitempty"` // "public", "private", "protected", "internal"
Signature string `json:"signature,omitempty"` // Full declaration signature
DocSummary string `json:"doc_summary,omitempty"` // GoDoc / JSDoc / Docstring description
Parameters []Parameter `json:"parameters,omitempty"` // Ordered list of typed parameters
ReturnType string `json:"return_type,omitempty"` // Explicit return type
Complexity int `json:"complexity,omitempty"` // Cyclomatic complexity score (branches + 1)
Metadata map[string]any `json:"metadata,omitempty"` // Language-specific extras (async, static, decorators, fields)
FileHash string `json:"file_hash,omitempty"` // SHA-256 of file for incremental scanning
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Symbol represents an extracted code entity with rich semantic metadata.
type SymbolFilter ¶
type SymbolFilter struct {
Project string
FilePath string
Kind string
PackageName string
Query string
Limit int
Offset int
}
SymbolFilter specifies criteria for querying symbols.
type WatcherConfig ¶
type WatcherConfig struct {
Directory string
Project string
PollInterval time.Duration
DebounceDuration time.Duration
Extensions []string
IgnoreDirs []string
}
WatcherConfig configures the background file watcher.
func DefaultWatcherConfig ¶
func DefaultWatcherConfig(dir, project string) WatcherConfig
DefaultWatcherConfig returns standard file watcher settings for Cortex.