collectors

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package collectors provides signal extraction modules for stringer.

Package collectors provides signal extraction modules for stringer.

Package collectors provides signal extraction modules for stringer.

Index

Constants

This section is empty.

Variables

FS is the file system implementation used by this package. Override in tests with a testable.MockFileSystem.

Functions

func ModuleFromPath added in v0.5.0

func ModuleFromPath(path string) string

ModuleFromPath derives a module name from a file path by taking the first two path segments (e.g., "internal/collectors") or the directory name if only one level deep. Root-level files return ".".

func ParseDuration added in v0.5.0

func ParseDuration(s string) (time.Duration, error)

ParseDuration parses duration strings like "90d", "6m", "1y" into time.Duration. Supported units: d (days), w (weeks), m (months/30d), y (years/365d).

Types

type AuthorShare added in v0.5.0

type AuthorShare struct {
	Name      string
	Ownership float64
}

AuthorShare describes a single author's ownership share of a directory.

type DirectoryOwnership added in v0.5.0

type DirectoryOwnership struct {
	Path        string
	LotteryRisk int
	Authors     []AuthorShare
	TotalLines  int
}

DirectoryOwnership describes ownership distribution for a single directory.

type DirectoryTestRatio added in v0.5.0

type DirectoryTestRatio struct {
	Path        string
	SourceFiles int
	TestFiles   int
	Ratio       float64
}

DirectoryTestRatio describes the test coverage ratio for a directory.

type FileChurn added in v0.5.0

type FileChurn struct {
	Path        string
	ChangeCount int
	AuthorCount int
}

FileChurn describes change frequency for a single file.

type GitHubCollector added in v0.3.0

type GitHubCollector struct {

	// GitOpener is the opener used to access the git repository.
	// If nil, testable.DefaultGitOpener is used.
	GitOpener testable.GitOpener
	// contains filtered or unexported fields
}

GitHubCollector imports open issues, pull requests, and actionable review comments from GitHub.

func (*GitHubCollector) Collect added in v0.3.0

func (c *GitHubCollector) Collect(ctx context.Context, repoPath string, opts signal.CollectorOpts) ([]signal.RawSignal, error)

Collect fetches open issues, PRs, and review comments from GitHub and returns them as raw signals.

func (*GitHubCollector) Name added in v0.3.0

func (c *GitHubCollector) Name() string

Name returns the collector name used for registration and filtering.

type GitlogCollector

type GitlogCollector struct {

	// GitOpener is the opener used to access the git repository.
	// If nil, testable.DefaultGitOpener is used.
	GitOpener testable.GitOpener
	// contains filtered or unexported fields
}

GitlogCollector examines git history for reverts, high-churn files, and stale branches.

func (*GitlogCollector) Collect

func (c *GitlogCollector) Collect(ctx context.Context, repoPath string, opts signal.CollectorOpts) ([]signal.RawSignal, error)

Collect scans the repository at repoPath for git-level signals.

func (*GitlogCollector) Metrics added in v0.5.0

func (c *GitlogCollector) Metrics() any

Metrics returns structured metrics from the git log analysis.

func (*GitlogCollector) Name

func (c *GitlogCollector) Name() string

Name returns the collector name used for registration and filtering.

type GitlogMetrics added in v0.5.0

type GitlogMetrics struct {
	FileChurns       []FileChurn
	RevertCount      int
	StaleBranchCount int
}

GitlogMetrics holds structured metrics from the git log analysis.

type LotteryRiskCollector added in v0.3.0

type LotteryRiskCollector struct {

	// GitOpener is the opener used to access the git repository.
	// If nil, testable.DefaultGitOpener is used.
	GitOpener testable.GitOpener
	// contains filtered or unexported fields
}

LotteryRiskCollector analyzes git blame and commit history to identify directories with low lottery risk (single-author ownership risk).

func (*LotteryRiskCollector) Collect added in v0.3.0

func (c *LotteryRiskCollector) Collect(ctx context.Context, repoPath string, opts signal.CollectorOpts) ([]signal.RawSignal, error)

Collect scans the repository at repoPath for directories with low bus factor and returns them as raw signals.

func (*LotteryRiskCollector) Metrics added in v0.5.0

func (c *LotteryRiskCollector) Metrics() any

Metrics returns structured ownership data for all analyzed directories.

func (*LotteryRiskCollector) Name added in v0.3.0

func (c *LotteryRiskCollector) Name() string

Name returns the collector name used for registration and filtering.

type LotteryRiskMetrics added in v0.5.0

type LotteryRiskMetrics struct {
	Directories []DirectoryOwnership
}

LotteryRiskMetrics holds structured metrics from the lottery risk analysis.

type PatternsCollector

type PatternsCollector struct {
	// contains filtered or unexported fields
}

PatternsCollector detects structural code-quality patterns such as oversized files, missing tests, and low test-to-source ratios.

func (*PatternsCollector) Collect

func (c *PatternsCollector) Collect(ctx context.Context, repoPath string, opts signal.CollectorOpts) ([]signal.RawSignal, error)

Collect walks source files in repoPath, detects pattern-based signals, and returns them as raw signals.

func (*PatternsCollector) Metrics added in v0.5.0

func (c *PatternsCollector) Metrics() any

Metrics returns structured metrics from the patterns analysis.

func (*PatternsCollector) Name

func (c *PatternsCollector) Name() string

Name returns the collector name used for registration and filtering.

type PatternsMetrics added in v0.5.0

type PatternsMetrics struct {
	LargeFiles          int
	DirectoryTestRatios []DirectoryTestRatio
}

PatternsMetrics holds structured metrics from the patterns analysis.

type TodoCollector

type TodoCollector struct {
	// contains filtered or unexported fields
}

TodoCollector scans repository files for TODO, FIXME, HACK, XXX, BUG, and OPTIMIZE comments, enriches them with git blame data, and produces scored RawSignal values.

func (*TodoCollector) Collect

func (c *TodoCollector) Collect(ctx context.Context, repoPath string, opts signal.CollectorOpts) ([]signal.RawSignal, error)

Collect walks source files in repoPath, extracts TODO-style comments, and returns them as raw signals with confidence scores and blame attribution.

func (*TodoCollector) Metrics added in v0.5.0

func (c *TodoCollector) Metrics() any

Metrics returns structured metrics from the TODO scan.

func (*TodoCollector) Name

func (c *TodoCollector) Name() string

Name returns the collector name used for registration and filtering.

type TodoMetrics added in v0.5.0

type TodoMetrics struct {
	Total         int
	ByKind        map[string]int
	WithTimestamp int
}

TodoMetrics holds structured metrics from the TODO scan.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL