diff --git a/tools/go-analyzer/types.go b/tools/go-analyzer/types.go new file mode 100644 index 0000000..3cbeaba --- /dev/null +++ b/tools/go-analyzer/types.go @@ -0,0 +1,77 @@ +package main + +// AnalysisResult holds all extracted data from Go source analysis. +type AnalysisResult struct { + Modules []Module + Dependencies []Dependency + Imports []ImportInfo +} + +// TotalFeatures returns the count of all features across all modules. +func (r *AnalysisResult) TotalFeatures() int { + count := 0 + for _, m := range r.Modules { + count += len(m.Features) + } + return count +} + +// TotalTests returns the count of all tests across all modules. +func (r *AnalysisResult) TotalTests() int { + count := 0 + for _, m := range r.Modules { + count += len(m.Tests) + } + return count +} + +// Module represents a logical grouping of Go source files. +type Module struct { + Name string + Description string + GoPackage string + GoFile string // primary file or directory + GoLineCount int + Features []Feature + Tests []TestFunc +} + +// Feature represents a function or method extracted from Go source. +type Feature struct { + Name string + Description string + GoFile string + GoClass string // receiver type, empty for package-level functions + GoMethod string + GoLineNumber int + GoLineCount int +} + +// TestFunc represents a test function extracted from Go source. +type TestFunc struct { + Name string + Description string + GoFile string + GoClass string + GoMethod string + GoLineNumber int + GoLineCount int + // FeatureName links this test to a feature by naming convention + FeatureName string +} + +// Dependency represents a call relationship between two items. +type Dependency struct { + SourceModule string + SourceFeature string // empty for module-level deps + TargetModule string + TargetFeature string // empty for module-level deps + DependencyKind string // "calls" +} + +// ImportInfo represents a Go import path found in source files. +type ImportInfo struct { + ImportPath string + IsStdlib bool + UsedInFiles []string +}