Documentation
¶
Index ¶
- Variables
- func DetectReference(line string) bool
- func ExpandGlobPattern(pattern string) ([]string, error)
- func ExtractReference(line string) string
- func FormatOutput(result *ScanResult, singleFile bool, typeFilter string) string
- func RegisterPrefix(prefix string)
- type LegacySuffixError
- type LocalResolver
- type ParseError
- type Reference
- type ScanResult
- type SourceRef
Constants ¶
This section is empty.
Variables ¶
var ( // DetectionRegex is rebuilt when prefixes change. DetectionRegex *regexp.Regexp )
Functions ¶
func DetectReference ¶
DetectReference checks if a line contains a source reference.
func ExpandGlobPattern ¶
ExpandGlobPattern expands a glob pattern to a list of file paths. Returns sorted file paths.
Supported patterns:
- "**/*" or "**" — matches all files recursively (special-cased)
- "**" as a path segment — matches any number of directory segments (including zero), so "pkg/**/*.go" matches "pkg/a.go", "pkg/sub/b.go", and "pkg/sub/deep/c.go" (cli/code/deps#req:path-glob).
- Standard filepath.Match patterns (e.g. "*.go", "src/*.txt"); a single "*" or "?" never crosses a "/" separator.
func ExtractReference ¶
ExtractReference extracts the reference string from a line.
func FormatOutput ¶
func FormatOutput(result *ScanResult, singleFile bool, typeFilter string) string
FormatOutput formats the scan results for output. If singleFile is true, returns a flat list. Otherwise, groups by file with headers.
func RegisterPrefix ¶
func RegisterPrefix(prefix string)
RegisterPrefix adds a short-notation prefix (e.g. "mytool") so that "mytool:feature/foo" is recognized as a source reference. Also registers "mytool.io" as an expanded URL domain.
Types ¶
type LegacySuffixError ¶ added in v0.16.0
type LegacySuffixError struct {
Rewrite string
}
LegacySuffixError is returned by ParseReference when a reference uses the removed `specscore:{reference}@{host}/{org}/{repo}` suffix form (decision 0010). Rewrite carries the exact authority-form replacement that `--fix` applies.
func (*LegacySuffixError) Error ¶ added in v0.16.0
func (e *LegacySuffixError) Error() string
type LocalResolver ¶ added in v0.33.0
type LocalResolver struct {
// contains filtered or unexported fields
}
LocalResolver resolves source references only from the current project and explicitly configured local projects. It never fetches from a network.
func NewLocalResolver ¶ added in v0.33.0
func NewLocalResolver(specRoot string) *LocalResolver
NewLocalResolver builds an offline resolver for a project's spec directory.
func (*LocalResolver) ValidateRequirementCitation ¶ added in v0.33.0
func (r *LocalResolver) ValidateRequirementCitation(ref *Reference) ([]byte, error)
ValidateRequirementCitation proves a feature #REQ:<id> citation resolves to one real Markdown H4 outside fenced code. A feature without a fragment is a resource citation and is checked for existence only. Other non-empty fragments are rejected rather than being silently treated as live.
type ParseError ¶ added in v0.33.0
type Reference ¶
type Reference struct {
ResolvedPath string
CrossRepoSuffix string
Type string
// Fragment is the decoded address fragment, without its leading '#'. It is
// deliberately opaque to this package: consumers such as spec lint decide
// which resource-specific fragments they can resolve.
Fragment string
// Ref preserves a ?ref=<git-ref> pin (branch, tag, or commit) through
// parsing and canonicalization. Parsers do not fetch it; an explicit local
// resolver may require an exact checked-out revision before validating it.
Ref string
}
Reference represents a parsed source reference found in source code.
func GetUniqueReferences ¶
func GetUniqueReferences(result *ScanResult, typeFilter string) []*Reference
GetUniqueReferences extracts unique references from a ScanResult, optionally filtered by type. Returns references sorted by (resolved_path, cross_repo_suffix).
func ParseReference ¶
ParseReference parses an extracted reference string and returns a Reference.
type ScanResult ¶
type ScanResult struct {
// FileRefs maps file path to list of references found in that file
FileRefs map[string][]*Reference
// ParseErrors records syntactically detected annotations that could not be
// parsed. Listing mode remains backward-compatible; validation mode reports
// these deterministic file/line diagnostics instead of silently dropping them.
ParseErrors map[string][]ParseError
}
ScanResult represents the references found in a set of files.
func ScanFiles ¶
func ScanFiles(filePaths []string) (*ScanResult, error)
ScanFiles scans a list of files for source references. Returns a ScanResult with all references grouped by file. The result may be partial if some files fail; errors are accumulated and returned alongside whatever refs were successfully scanned.