Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoadCategoriesConfig ¶
func LoadCategoriesConfig() (*types.CategoriesConfig, error)
LoadCategoriesConfig loads the categories configuration from categories.yaml
Types ¶
type ConfigTech ¶
ConfigTech represents a technology to add to the scan
type ScanConfig ¶
type ScanConfig struct {
Properties map[string]interface{} `yaml:"properties,omitempty"`
Exclude []string `yaml:"exclude,omitempty"`
Techs []ConfigTech `yaml:"techs,omitempty"`
RootID string `yaml:"root_id,omitempty"` // Override random root ID for deterministic scans
}
ScanConfig represents the .stack-analyzer.yml configuration file
func LoadConfig ¶
func LoadConfig(scanPath string) (*ScanConfig, error)
LoadConfig attempts to load .stack-analyzer.yml from the scan root Returns nil if file doesn't exist (not an error)
func (*ScanConfig) MergeExcludes ¶
func (c *ScanConfig) MergeExcludes(cliExcludes []string) []string
MergeExcludes merges config excludes with CLI excludes CLI excludes take precedence
type ScanConfigFile ¶
type ScanConfigFile struct {
// Root-level metadata (consistent with .stack-analyzer.yml)
Properties map[string]interface{} `yaml:"properties,omitempty" json:"properties,omitempty"`
// Root-level excludes (consistent with .stack-analyzer.yml)
Exclude []string `yaml:"exclude,omitempty" json:"exclude,omitempty"`
// Root-level additional technologies (consistent with .stack-analyzer.yml)
Techs []ConfigTech `yaml:"techs,omitempty" json:"techs,omitempty"`
// Scan section with flat CLI options (matching CLI arguments)
Scan ScanOptions `yaml:"scan,omitempty" json:"scan,omitempty"`
}
ScanConfigFile represents the external scan configuration file
func LoadScanConfig ¶
func LoadScanConfig(configPath string) (*ScanConfigFile, error)
LoadScanConfig loads scan configuration from file path or inline JSON
func (*ScanConfigFile) GetMergedConfig ¶
func (c *ScanConfigFile) GetMergedConfig(projectConfig *ScanConfig) *ScanConfig
GetMergedConfig merges scan config with project config (.stack-analyzer.yml) Returns a combined config for the scan operation
func (*ScanConfigFile) MergeWithSettings ¶
func (c *ScanConfigFile) MergeWithSettings(settings *Settings)
MergeWithSettings merges scan config with existing settings CLI flags take precedence over config file settings
type ScanOptions ¶
type ScanOptions struct {
// Output settings
OutputFile string `yaml:"output_file,omitempty" json:"output_file,omitempty" default:"stack-analysis.json"`
PrettyPrint bool `yaml:"pretty,omitempty" json:"pretty,omitempty" default:"true"`
Aggregate string `yaml:"aggregate,omitempty" json:"aggregate,omitempty" default:""`
// Scan behavior
ExcludePatterns []string `yaml:"exclude_patterns,omitempty" json:"exclude_patterns,omitempty"`
Verbose bool `yaml:"verbose,omitempty" json:"verbose,omitempty" default:"false"`
Debug bool `yaml:"debug,omitempty" json:"debug,omitempty" default:"false"`
TraceTimings bool `yaml:"trace_timings,omitempty" json:"trace_timings,omitempty" default:"false"`
TraceRules bool `yaml:"trace_rules,omitempty" json:"trace_rules,omitempty" default:"false"`
FilterRules []string `yaml:"filter_rules,omitempty" json:"filter_rules,omitempty"`
NoCodeStats bool `yaml:"no_code_stats,omitempty" json:"no_code_stats,omitempty" default:"false"`
CodeStatsPerComponent bool `yaml:"component_code_stats,omitempty" json:"component_code_stats,omitempty" default:"false"`
PrimaryLanguageThreshold float64 `yaml:"primary_language_threshold,omitempty" json:"primary_language_threshold,omitempty" default:"0.05"`
UseLockFiles *bool `yaml:"use_lock_files,omitempty" json:"use_lock_files,omitempty"` // nil = default (true), explicit false disables
}
ScanOptions represents all configurable scanner options This is the single source of truth for all option fields
type Settings ¶
type Settings struct {
// Output settings
OutputFile string
PrettyPrint bool
Aggregate string
// Scan behavior
ExcludePatterns []string
Verbose bool
Debug bool
TraceTimings bool
TraceRules bool
FilterRules []string // Only use these rules (for debugging)
NoCodeStats bool // Disable code statistics (enabled by default)
CodeStatsPerComponent bool // Enable per-component code statistics (disabled by default)
RootID string // Override random root ID for deterministic scans
PrimaryLanguageThreshold float64 // Minimum percentage for primary languages (default 0.05 = 5%)
UseLockFiles bool // Use lock files for dependency resolution (default true)
// Logging
LogLevel slog.Level
LogFormat string // "text" or "json"
LogFile string // Optional: write logs to file instead of stderr
}
Settings holds all scanner configuration Field names match ScanOptions for reflection-based merging
func DefaultSettings ¶
func DefaultSettings() *Settings
DefaultSettings returns default configuration
func LoadSettingsFromEnvironment ¶
func LoadSettingsFromEnvironment() *Settings
LoadSettingsFromEnvironment loads settings from environment variables
func (*Settings) ConfigureLogger ¶
ConfigureLogger sets up the logger based on settings