MCPcopy Create free account

hub / github.com/alpha-omega-security/scrutineer / functions

Functions2,165 in github.com/alpha-omega-security/scrutineer

↓ 1 callersMethodmarkNotObserved
markNotObserved bumps MissedCount on open findings that this scan was in scope to re-observe (same repo, same skill, same subpath) but whose fingerpri
internal/worker/skill.go:660
↓ 1 callersMethodmarkRetracted
markRetracted flags findings this scan streamed into the concurrent-finding log but then left out of its final report.json. The row is kept — a siblin
internal/worker/skill.go:737
↓ 1 callersFunctionmarkersMatch
(markers []ProfileMarker, srcDir string)
internal/worker/profile.go:310
↓ 1 callersFunctionmatchSegments
(pat, name []string)
internal/skills/filter.go:114
↓ 1 callersMethodmaybeDecrypt
maybeDecrypt transparently decrypts an age-encrypted body. If the body is not encrypted (no age header), it is returned unchanged — so unencrypted imp
internal/web/import.go:324
↓ 1 callersMethodmaybeFireScanFinalized
maybeFireScanFinalized invokes the OnScanFinalized hook once a scan has finished its analysis with findings committed. A fail_on threshold leaves Stat
internal/worker/worker.go:603
↓ 1 callersFunctionmirrorScripts
mirrorScripts copies the skill's scripts/ directory (if any) to workRoot/scripts/ so the `bash scripts/foo.sh` / `python3 scripts/foo.py` instructions
internal/worker/skill.go:969
↓ 1 callersMethodonScanFinalized
onScanFinalized is the single OnScanFinalized hook: it computes the fix-validation report for anchor scans and runs the existing post-deep-dive dedup
internal/web/validate_fix_enqueue.go:160
↓ 1 callersMethodorgImportConfirm
orgImportConfirm renders the "this will add N repos" confirmation step. htmx clients get an OOB swap that replaces the dialog's input form with a conf
internal/web/org_import.go:255
↓ 1 callersFunctionosvAffectedList
osvAffectedList anchors the finding. Registry packages whose ecosystem the schema recognises become package entries; otherwise the finding is anchored
internal/web/finding_osv.go:338
↓ 1 callersFunctionosvCredits
osvCredits emits the FINDER (when the finding's prior_art names a researcher) and the COORDINATOR (scrutineer's host operator). Schema requires `name`
internal/web/finding_osv.go:244
↓ 1 callersFunctionosvDatabaseSpecific
osvDatabaseSpecific carries scrutineer's code-anchored context that OSV's package-oriented fields cannot express: the file/line location and the audit
internal/web/finding_osv.go:439
↓ 1 callersFunctionosvReferences
(f db.Finding, repo db.Repository, refs []db.FindingReference)
internal/web/finding_osv.go:401
↓ 1 callersFunctionosvRelated
osvRelated returns the OSV ids the finding carries via FindingReference rows. Anything tagged `related` is verbatim; CVE and GHSA references fall in a
internal/web/finding_osv.go:216
↓ 1 callersFunctionosvSeverityList
osvSeverityList emits one CVSS vector entry per version the finding carries (OSV's severity.score is the vector, not a number). Each entry is gated on
internal/web/finding_osv.go:293
↓ 1 callersMethodparseAdvisoriesOutput
parseAdvisoriesOutput replaces Advisory rows for the scan's repository.
internal/worker/skill_parsers.go:171
↓ 1 callersFunctionparseAnyTime
parseAnyTime tries the handful of timestamp shapes SQLite gives us back when a column is read via a raw SELECT (no type hint). Returns (zero, false) f
internal/web/orgs.go:15
↓ 1 callersFunctionparseCSV
(data []byte)
internal/ingest/csv.go:36
↓ 1 callersFunctionparseFlags
()
cmd/scrutineer/main.go:123
↓ 1 callersFunctionparseLocalInput
parseLocalInput accepts either file:///abs/path or /abs/path and returns a RepoInput whose CloneURL is file://<cleaned-abs-path>. The path is required
internal/web/parse_repo_url.go:194
↓ 1 callersMethodparseMaintainersOutput
parseMaintainersOutput upserts Maintainer rows and links them to the scanned repo. Mirrors the legacy doMaintainerAnalysis logic so the maintainers sk
internal/worker/skill.go:764
↓ 1 callersFunctionparseMarkdown
(data []byte)
internal/ingest/markdown.go:30
↓ 1 callersFunctionparseMarkdownLocation
parseMarkdownLocation extracts "file:line" and, when the link target is a forge blob URL, the bare repository URL.
internal/ingest/markdown.go:110
↓ 1 callersFunctionparseMinimal
(data []byte)
internal/ingest/minimal.go:46
↓ 1 callersMethodparsePartialSkillReport
parsePartialSkillReport runs parseSkillOutput against a max-turns partial and logs on failure. The scan is already returning a MaxTurnsReachedError so
internal/worker/skill.go:205
↓ 1 callersMethodparseRepoMetadataOutput
parseRepoMetadataOutput updates the Repository columns that previously came from the metadata Go handler. Shape matches the subset of repos.ecosyste.m
internal/worker/skill_parsers.go:27
↓ 1 callersFunctionparseSARIF
(data []byte)
internal/ingest/sarif.go:86
↓ 1 callersFunctionparseStreamLine
(raw []byte, emit func(Event))
internal/worker/stream.go:129
↓ 1 callersFunctionparseTime
parseTime accepts RFC3339 or date-only strings. Empty input is not an error; the caller decides whether to omit the field.
internal/worker/skill_parsers.go:1089
↓ 1 callersMethodpauseQueuedOnAccountError
pauseQueuedOnAccountError pauses every queued scan behind an account-level Claude failure; queued jobs later drop themselves when wrap sees the DB sta
internal/worker/worker.go:716
↓ 1 callersFunctionpickFreeformColumns
pickFreeformColumns walks up to 50 items, counts which scalar-shaped keys are commonly present, and returns up to 6 of them. Preferred names (name, ve
internal/web/scan_report.go:331
↓ 1 callersFunctionpipe
(a, b net.Conn)
internal/worker/egress.go:536
↓ 1 callersFunctionpopFlash
(w http.ResponseWriter, r *http.Request)
internal/web/server.go:446
↓ 1 callersFunctionpreferDep
preferDep picks the more informative of two Dependency rows for the same package: a runtime-like dependency beats a non-runtime one, and a lockfile ro
internal/db/ecosystem.go:235
↓ 1 callersFunctionpreferDependencyForGroup
(a, b db.Dependency)
internal/web/server.go:2467
↓ 1 callersMethodprepareDependentSrc
prepareDependentSrc updates the shared dependent cache for url under a per-URL lock, then copies it into workRoot/src so the skill operates on its own
internal/worker/exposure.go:40
↓ 1 callersMethodprofileGuidePath
profileGuidePath returns the profile's on-disk PROFILE.md if present. The caller mounts it at the agent's project-memory path (CLAUDE.md for claude-co
internal/worker/container.go:598
↓ 1 callersFunctionproxyURLWithHost
proxyURLWithHost rewrites the host of a proxy URL, keeping its scheme, the proxy-token userinfo, and port. Apple --hardened scans reach the host proxy
internal/worker/container.go:189
↓ 1 callersFunctionrateLimitWindowLabel
(t string)
internal/web/usage.go:181
↓ 1 callersMethodrecordSkippedExposure
recordSkippedExposure writes an under_investigation row for a dependent we cannot audit (no upstream repo URL) so the per-dependent table on the findi
internal/web/finding_exposure.go:72
↓ 1 callersMethodregisterSBOMRoutes
(mux *http.ServeMux)
internal/web/sboms.go:23
↓ 1 callersFunctionremoteRunnerDigest
remoteRunnerDigest fetches the registry digest of the image's current tag (typically :latest) without pulling layers, as a "sha256:<hex>" string direc
internal/worker/staleness.go:130
↓ 1 callersFunctionremoveSubtree
(root string)
internal/worker/skill.go:886
↓ 1 callersFunctionrenderNode
(b *strings.Builder, v any)
internal/web/jsontree.go:36
↓ 1 callersFunctionrenderOrgReport
renderOrgReport composes the full markdown document. Repos with no findings appear in the count but are omitted from the body so the document is scann
internal/web/org_report.go:45
↓ 1 callersFunctionrenderOrgSummary
(gdb *gorm.DB, repos []db.Repository)
internal/web/org_summary.go:47
↓ 1 callersFunctionrenderScanReport
(gdb *gorm.DB, scan *db.Scan, skill *db.Skill)
internal/web/scan_report.go:61
↓ 1 callersMethodreobserveFinding
reobserveFinding handles the dedup branch in parseFindingsOutput: bump the seen-count, refresh fields that may drift between scans (location, VID, ref
internal/worker/skill.go:465
↓ 1 callersMethodrepairAndParseSkillOutput
(ctx context.Context, skill *db.Skill, scan *db.Scan, sj SkillJob, report string, emit func(Event))
internal/worker/skill.go:211
↓ 1 callersMethodrepairSchemaReport
(ctx context.Context, skill *db.Skill, scan *db.Scan, sj SkillJob, report, detail string, emit func(Event))
internal/worker/skill.go:225
↓ 1 callersFunctionreplaceAutoResume
replaceAutoResume swaps the reset suffix without clobbering the row's detail.
internal/worker/worker.go:681
↓ 1 callersFunctionreplaceID
(path string, id uint)
internal/web/api_test.go:520
↓ 1 callersMethodrepoList
(w http.ResponseWriter, r *http.Request)
internal/web/server.go:595
↓ 1 callersMethodrepoScanActionCounts
repoScanActionCounts returns the number of cancellable (running/queued) and resumable (paused) scans on a repo, driving the "Cancel all" and "Resume a
internal/web/server.go:1862
↓ 1 callersMethodresolveAccountReset
resolveAccountReset accepts only fresh, plausible reset times; nil leaves the batch paused for manual resume.
internal/worker/worker.go:579
↓ 1 callersFunctionresolveAddr
(cfg *config.Config, addrFlag string)
cmd/scrutineer/backup.go:226
↓ 1 callersFunctionresolveAppleHostGatewayIPv4
(rt ContainerRuntime, image, network string)
internal/worker/container.go:648
↓ 1 callersFunctionresolveDepRepoURL
(ctx context.Context, dep db.Dependency)
internal/web/server.go:1067
↓ 1 callersFunctionresolveLocalPOMDependencies
(pomPath, srcRoot string, emit func(Event))
internal/worker/skill_parsers.go:338
↓ 1 callersMethodresolveMavenDependencyRequirements
(scan *db.Scan, deps []dependencyReportRow, emit func(Event))
internal/worker/skill_parsers.go:292
↓ 1 callersFunctionresolvePURLRepo
resolvePURLRepo asks packages.ecosyste.ms for the repository_url behind a PURL. Returns empty string if the lookup fails or no repo is recorded.
internal/web/server.go:1073
↓ 1 callersFunctionresolveScanNetworking
resolveScanNetworking prepares per-scan networking before the egress proxy starts. In hardened mode it owns its per-scan networks -- the gateway IP is
cmd/scrutineer/main.go:741
↓ 1 callersFunctionresolveTheme
(r *http.Request)
internal/web/theme.go:38
↓ 1 callersFunctionrestoreTab
()
internal/web/static/app.js:20
↓ 1 callersMethodresult
()
internal/ingest/sarif.go:101
↓ 1 callersFunctionresultEvent
(msg streamMessage)
internal/worker/stream.go:193
↓ 1 callersFunctionresult_location
(r)
skills/zizmor/scripts/scan.py:87
↓ 1 callersFunctionresult_location
(r)
skills/semgrep/scripts/scan.py:126
↓ 1 callersFunctionretireRemovedSkills
(log *slog.Logger, gdb *gorm.DB)
cmd/scrutineer/main.go:508
↓ 1 callersFunctionretryFailedToast
(retried, skipped, errored int)
internal/web/scans.go:334
↓ 1 callersFunctionrouteHexIPv4
(field string)
internal/worker/container.go:677
↓ 1 callersMethodruleIndex
ruleIndex builds the id→rule map for the ruleId reference path.
internal/ingest/sarif.go:118
↓ 1 callersFunctionrunProxy
runProxy is the entrypoint for `scrutineer proxy`: the egress-proxy sidecar the container runner attaches to a hardened scan's --internal network unde
cmd/scrutineer/proxy.go:114
↓ 1 callersFunctionrunnerImageOrSkip
runnerImageOrSkip returns a locally-present scrutineer-runner image (which carries the scrutineer binary the egress sidecar runs) or skips. Set SCRUTI
internal/worker/podman_integration_test.go:194
↓ 1 callersMethodrunnerImageStatus
runnerImageStatus returns the last recorded staleness result, or the zero value (Stale=false) when the check has not run or found nothing to report.
internal/web/server.go:146
↓ 1 callersFunctionsameOriginReferer
sameOriginReferer returns the Referer header value only if it points back at this server (same host, or a host-less path). Anything else is dropped so
internal/web/scans.go:394
↓ 1 callersFunctionsarifConfidence
sarifConfidence maps SARIF properties.precision onto scrutineer's high/medium/low. Absent precision means the source did not say, so leave it empty an
internal/ingest/sarif.go:205
↓ 1 callersFunctionscanAllToast
(queued, skipped, errored int)
internal/web/server.go:2163
↓ 1 callersMethodscanSkillNames
()
internal/web/scans.go:100
↓ 1 callersMethodscansResumePaused
(w http.ResponseWriter, r *http.Request)
internal/web/scans.go:268
↓ 1 callersMethodscheduleAccountResumeAfter
(delay time.Duration)
internal/worker/worker.go:831
↓ 1 callersFunctionschemaValidationEvent
(skill *db.Skill, detail string)
internal/worker/skill.go:283
↓ 1 callersFunctionschemaValidationHint
schemaValidationHint tells claude to validate its JSON output against the skill's schema via scrutineer's API instead of installing a JSON Schema libr
internal/worker/claude.go:345
↓ 1 callersFunctionseedBundleDependent
(t *testing.T, s *Server, repoID uint)
internal/web/finding_bundle_test.go:68
↓ 1 callersFunctionseedCSAFFindingWithoutDependents
(t *testing.T, s *Server)
internal/web/finding_csaf_test.go:50
↓ 1 callersFunctionseedRepoCache
seedRepoCache makes a real git repo at the cache path the handler will resolve, with two commits so `git show <commit>:<path>` works for both.
internal/web/code_browser_test.go:87
↓ 1 callersMethodserveConnect
(w http.ResponseWriter, r *http.Request)
internal/worker/egress.go:201
↓ 1 callersMethodserveForward
(w http.ResponseWriter, r *http.Request)
internal/worker/egress.go:234
↓ 1 callersFunctionserverRunning
serverRunning reports whether something accepts a TCP connection on addr. It is a best-effort guard: stopping the server is the real precondition for
cmd/scrutineer/backup.go:198
↓ 1 callersFunctionsetupRunner
setupRunner picks the SkillRunner implementation for the run loop: ContainerRunner (docker, podman, or Apple's container) when a container runtime is
cmd/scrutineer/main.go:605
↓ 1 callersFunctionseverityCounts
(findings []db.Finding)
internal/web/repo_report.go:295
↓ 1 callersFunctionshouldSkipDir
(name string)
internal/skills/load.go:86
↓ 1 callersMethodsidecarRunning
sidecarRunning reports whether the named sidecar container is still running. A non-running sidecar during verification means it gave up reaching the h
internal/worker/container.go:1092
↓ 1 callersFunctionsortVerify
(v []fixValidationVerify)
internal/web/validate_fix.go:130
↓ 1 callersFunctionsplitFrontmatter
(raw []byte)
internal/skills/parse.go:201
↓ 1 callersFunctionsplitLocation
(loc string)
internal/web/location.go:35
↓ 1 callersFunctionsplitMarkdownFinding
splitMarkdownFinding separates a single finding's body into its H2 sections and the **Key:** metadata block. The metadata block sits between two --- r
internal/ingest/markdown.go:89
↓ 1 callersFunctionsplitSep
(p string)
internal/skills/load.go:76
↓ 1 callersFunctionsplitSinks
splitSinks tokenises a Finding.Sinks column ("S1, S2") into ids. findings.go writes them comma-joined with a trailing space; older rows might lack the
internal/web/repo_report.go:700
↓ 1 callersMethodstageWorkspace
stageWorkspace writes everything other than ./src into the scan workspace: context.json, the operator's threat-model override, the skill bundle under
internal/worker/skill.go:1103
← previousnext →801–900 of 2,165, ranked by callers