Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SortIssuesBySeverity ¶
func SortIssuesBySeverity(issues []*Issue)
SortIssuesBySeverity sorts issues by severity and then by file
Types ¶
type AggregateMetrics ¶
type AggregateMetrics struct {
AverageFunctionLength float64 `json:"average_function_length"`
FunctionLengthP95 int `json:"function_length_p95"` // 95th percentile
CommentRatio float64 `json:"comment_ratio"` // Overall comment ratio
LargestFiles []*FileSize `json:"largest_files"` // Top 10
AverageComplexity float64 `json:"average_complexity"`
ComplexityP95 int `json:"complexity_p95"` // 95th percentile
MostComplexFunctions []*FunctionInfo `json:"most_complex_functions"` // Top 10
}
AggregateMetrics contains aggregated metrics across all files
type AnalysisResult ¶
type AnalysisResult struct {
ProjectPath string `json:"project_path"`
TotalFiles int `json:"total_files"`
TotalLines int `json:"total_lines"`
TotalCodeLines int `json:"total_code_lines"`
TotalFunctions int `json:"total_functions"`
Metrics *AggregateMetrics `json:"metrics"`
Files []*FileAnalysis `json:"files"`
Issues []*Issue `json:"issues"`
Coverage *CoverageReport `json:"coverage,omitempty"`
Dependencies *DependencyReport `json:"dependencies,omitempty"`
}
AnalysisResult contains the complete analysis of a codebase
type Analyzer ¶
type Analyzer interface {
// Analyze takes parsed file metrics and produces an analysis result
Analyze(projectPath string, metrics []*parserPkg.FileMetrics) (*AnalysisResult, error)
}
Analyzer defines the interface for analyzing parsed code metrics
func NewAnalyzer ¶
func NewAnalyzer(cfg *config.AnalysisConfig) Analyzer
NewAnalyzer creates a new MetricsAnalyzer with the given configuration
type CircularDependency ¶ added in v0.2.0
type CircularDependency struct {
Cycle []string `json:"cycle"` // The circular dependency chain
}
CircularDependency represents a circular dependency between packages
type CoverageReport ¶ added in v0.2.0
type CoverageReport struct {
Packages []*PackageCoverage `json:"packages"`
AverageCoverage float64 `json:"average_coverage"`
LowCoverageCount int `json:"low_coverage_count"`
}
CoverageReport contains test coverage information
type DependencyReport ¶ added in v0.2.0
type DependencyReport struct {
Packages []*PackageDependencies `json:"packages"`
CircularDependencies []*CircularDependency `json:"circular_dependencies,omitempty"`
TotalPackages int `json:"total_packages"`
HighImportCount int `json:"high_import_count"` // Packages exceeding import threshold
HighExternalCount int `json:"high_external_count"` // Packages with too many external deps
}
DependencyReport contains dependency analysis information
type FileAnalysis ¶
type FileAnalysis struct {
Path string `json:"path"`
Metrics *parser.FileMetrics `json:"metrics"`
LargeFile bool `json:"large_file"` // Exceeds threshold
}
FileAnalysis contains analysis for a single file
type FunctionInfo ¶ added in v0.2.0
type FunctionInfo struct {
File string `json:"file"`
Function string `json:"function"`
Complexity int `json:"complexity"`
Lines int `json:"lines"`
}
FunctionInfo represents function information for reporting
type MetricsAnalyzer ¶
type MetricsAnalyzer struct {
// contains filtered or unexported fields
}
MetricsAnalyzer implements Analyzer for basic metrics analysis
func (*MetricsAnalyzer) Analyze ¶
func (ma *MetricsAnalyzer) Analyze(projectPath string, metrics []*parserPkg.FileMetrics) (*AnalysisResult, error)
Analyze performs analysis on the parsed metrics
type PackageCoverage ¶ added in v0.2.0
type PackageCoverage struct {
PackagePath string `json:"package_path"`
Coverage float64 `json:"coverage"`
Error string `json:"error,omitempty"`
Skipped bool `json:"skipped"`
}
PackageCoverage represents coverage for a single package
type PackageDependencies ¶ added in v0.2.0
type PackageDependencies struct {
PackageName string `json:"package_name"`
StdlibImports []string `json:"stdlib_imports"`
InternalImports []string `json:"internal_imports"`
ExternalImports []string `json:"external_imports"`
TotalImports int `json:"total_imports"`
ExternalImportCount int `json:"external_import_count"`
}
PackageDependencies represents dependency information for a single package