observe

package
v0.0.0-...-efd69ef Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2026 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const ISSUE_REACTION_TIME_OBSERVATION_TYPE string = "ISSUE_REACTION_TIME" // nolint:staticcheck

Variables

View Source
var CHANGELOG_OBSERVATION_TYPE string = "CHANGELOG" // nolint:staticcheck
View Source
var CI_PIPELINE_OBSERVATION_TYPE string = "CI_PIPELINES" // nolint:staticcheck
View Source
var CODE_REVIEW_OBSERVATION_TYPE string = "CODE_REVIEW" // nolint:staticcheck
View Source
var COMMIT_OBSERVATION_TYPE string = "COMMITS" // nolint:staticcheck
View Source
var CONTAINER_ATTESTATION_OBSERVATION_BRONZE_TYPE string = "CONTAINER_ATTESTATION_BRONZE" // nolint:staticcheck
View Source
var CONTAINER_ATTESTATION_OBSERVATION_GOLD_TYPE string = "CONTAINER_ATTESTATION_GOLD" // nolint:staticcheck
View Source
var CONTAINER_ATTESTATION_OBSERVATION_SILVER_TYPE string = "CONTAINER_ATTESTATION_SILVER" // nolint:staticcheck
View Source
var CONTRIBUTION_GUIDELINE_OBSERVATION_TYPE string = "CONTRIBUTION_GUIDELINE" // nolint:staticcheck
View Source
var CONTRIBUTOR_ABSENCE_FACTOR_OBSERVATION_TYPE string = "CONTRIBUTOR_ABSENCE_FACTOR" // nolint:staticcheck
View Source
var ChangelogFileNames = []string{"CHANGELOG.md", "CHANGES.md"}
View Source
var ContributionGuidelineFileNames = []string{"CONTRIBUTING.md", "CONTRIBUTING", ".github/CONTRIBUTING.md", ".github/CONTRIBUTING"}
View Source
var ELEPHANT_FACTOR_OBSERVATION_TYPE string = "ELEPHANT_FACTOR" // nolint:staticcheck
View Source
var ErrMissingData = fmt.Errorf("no data")
View Source
var ErrTechnicalFailure = fmt.Errorf("technical failure")
View Source
var GRUNDSCHUTZ_PLUSPLUS_COMPLIANCE_OBSERVATION_TYPE string = "GRUNDSCHUTZ_PLUSPLUS_COMPLIANCE" // nolint:staticcheck
View Source
var LICENSE_POLICY_TYPE string = "LICENSE_POLICY" // nolint:staticcheck
View Source
var MANUAL_TYPE string = "MANUAL" // nolint:staticcheck
View Source
var OpenSourceLicenses = []string{}/* 368 elements not displayed */
View Source
var PACKAGES_TYPE string = "PACKAGES" // nolint:staticcheck
View Source
var PROTECTED_BRANCHES_TYPE string = "PROTECTED_BRANCHES" // nolint:staticcheck
View Source
var RELEASE_TYPE string = "RELEASES" // nolint:staticcheck
View Source
var RELEASE_WITHOUT_VULNERABILITIES_TYPE string = "RELEASE_WITHOUT_VULNERABILITIES" // nolint:staticcheck
View Source
var SECURITY_POLICY_TYPE string = "SECURITY_POLICY" // nolint:staticcheck
View Source
var SIGNED_COMMITS_OBSERVATION_TYPE string = "SIGNED_COMMITS" // nolint:staticcheck
View Source
var SIGNED_TAGS_OBSERVATION_TYPE string = "SIGNED_TAGS" // nolint:staticcheck
View Source
var SUBSEQUENT_USE_OBSERVATION_TYPE string = "SUBSEQUENT_USE" // nolint:staticcheck
View Source
var SecurityPolicyFileNames = []string{"SECURITY.md", ".github/SECURITY.md"}
View Source
var VULNERABILITY_CVE_AGE_TYPE string = "VULNERABILITY_CVE_AGE" // nolint:staticcheck

Functions

func CheckTypeUnit

func CheckTypeUnit(t string) string

CheckTypeUnit returns the unit label for a check type (eg. "commits", "releases"). It panics on unknown types

func FetchAndEvaluateSSP

func FetchAndEvaluateSSP(ctx context.Context, gitClient GitClient, repositoryURL string, config oscal.GrundschutzConfig) (oscal.ComplianceResult, error)

FetchAndEvaluateSSP resolves the DevGuard OSCAL SSP for a repository, fetches it through the authenticated DevGuard client, and evaluates its control implementation statuses.

func GetCVSSRating

func GetCVSSRating(ratingsRef *[]cdx.VulnerabilityRating) (*cdx.VulnerabilityRating, error)

func GetDefaultBranchForRepo

func GetDefaultBranchForRepo(ctx context.Context, gitClient GitClient, repositoryURL string) (common.Branch, error)

func GetFirstResponded

func GetFirstResponded(v cdx.Vulnerability) *time.Time

func GetLatestReleaseForRepo

func GetLatestReleaseForRepo(ctx context.Context, gitClient GitClient, repositoryURL string) (common.Release, error)

func IsUserMaintainer

func IsUserMaintainer(members []common.ProjectMember, userID int64) bool

func LoadVex

func LoadVex(ctx context.Context, link string, ref string, refType RefType) (*cdx.BOM, error)

func MustParseValue

func MustParseValue(value ObservationValue) int

func NewContributorAbsenceFactor

func NewContributorAbsenceFactor(timeRangeInMonths int) contributorAbsenceFactor

func NewElephantFactor

func NewElephantFactor(timeRangeInMonths int, personalEmailDomains []string) elephantFactor

func NewIssueReactionTime

func NewIssueReactionTime(timeRangeInMonths int) issueReactionTime

func NewOscalCompliance

func NewOscalCompliance(config oscal.GrundschutzConfig) oscalCompliance

func NewPackages

func NewPackages(timeRangeInMonths int) *packages

func NewParallelObserver

func NewParallelObserver(observers ...Observer) *checker

func NewSubsequentUse

func NewSubsequentUse(SubsequentUseAPIDomain string) subsequentUse

func ParseValue

func ParseValue(value ObservationValue) (int, error)

Types

type AdditionalInputData

type AdditionalInputData struct {
	OciImage              string
	Changelog             string
	ContributionGuideline string
	CosignAttestClient    common.CosignAttestationClient
}

type CIPipelines

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

func NewCIPipelines

func NewCIPipelines(timeRangeInMonth int) CIPipelines

func (CIPipelines) EndTime

func (c CIPipelines) EndTime()

func (CIPipelines) Key

func (observer CIPipelines) Key() string

func (CIPipelines) Run

func (observer CIPipelines) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*CIPipelines) StartTime

func (c *CIPipelines) StartTime()

func (CIPipelines) Type

func (observer CIPipelines) Type() string

type Changelog

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

func NewFilePresenceCheckChangelog

func NewFilePresenceCheckChangelog() Changelog

func (Changelog) EndTime

func (c Changelog) EndTime()

func (Changelog) Key

func (observer Changelog) Key() string

func (Changelog) Run

func (observer Changelog) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*Changelog) StartTime

func (c *Changelog) StartTime()

func (Changelog) Type

func (observer Changelog) Type() string

type CodeReview

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

func NewCodeReview

func NewCodeReview(timeRangeInMonths int) CodeReview

func (CodeReview) EndTime

func (c CodeReview) EndTime()

func (CodeReview) Key

func (observer CodeReview) Key() string

func (CodeReview) Run

func (observer CodeReview) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*CodeReview) StartTime

func (c *CodeReview) StartTime()

func (CodeReview) Type

func (observer CodeReview) Type() string

type Commits

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

func NewCommits

func NewCommits(timeRangeInMonths int) Commits

func (Commits) EndTime

func (c Commits) EndTime()

func (Commits) Key

func (observer Commits) Key() string

func (Commits) Run

func (observer Commits) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*Commits) StartTime

func (c *Commits) StartTime()

func (Commits) Type

func (observer Commits) Type() string

type ContainerAttestation

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

func (ContainerAttestation) EndTime

func (c ContainerAttestation) EndTime()

func (*ContainerAttestation) StartTime

func (c *ContainerAttestation) StartTime()

type ContainerAttestationBronze

type ContainerAttestationBronze struct {
	ContainerAttestation
}

func NewContainerAttestationBronze

func NewContainerAttestationBronze(timeRangeInMonth int) ContainerAttestationBronze

func (ContainerAttestationBronze) EndTime

func (c ContainerAttestationBronze) EndTime()

func (ContainerAttestationBronze) Key

func (observer ContainerAttestationBronze) Key() string

func (ContainerAttestationBronze) Run

func (observer ContainerAttestationBronze) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ContainerAttestationBronze) StartTime

func (c *ContainerAttestationBronze) StartTime()

func (ContainerAttestationBronze) Type

func (observer ContainerAttestationBronze) Type() string

type ContainerAttestationGold

type ContainerAttestationGold struct {
	ContainerAttestation
}

func NewContainerAttestationGold

func NewContainerAttestationGold(timeRangeInMonth int) ContainerAttestationGold

func (ContainerAttestationGold) EndTime

func (c ContainerAttestationGold) EndTime()

func (ContainerAttestationGold) Key

func (observer ContainerAttestationGold) Key() string

func (ContainerAttestationGold) Run

func (observer ContainerAttestationGold) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ContainerAttestationGold) StartTime

func (c *ContainerAttestationGold) StartTime()

func (ContainerAttestationGold) Type

func (observer ContainerAttestationGold) Type() string

type ContainerAttestationSilver

type ContainerAttestationSilver struct {
	ContainerAttestation
}

func NewContainerAttestationSilver

func NewContainerAttestationSilver(timeRangeInMonth int) ContainerAttestationSilver

func (ContainerAttestationSilver) EndTime

func (c ContainerAttestationSilver) EndTime()

func (ContainerAttestationSilver) Key

func (observer ContainerAttestationSilver) Key() string

func (ContainerAttestationSilver) Run

func (observer ContainerAttestationSilver) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ContainerAttestationSilver) StartTime

func (c *ContainerAttestationSilver) StartTime()

func (ContainerAttestationSilver) Type

func (observer ContainerAttestationSilver) Type() string

type ContributionGuideline

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

func NewFilePresenceCheckContributionGuideline

func NewFilePresenceCheckContributionGuideline() ContributionGuideline

func (ContributionGuideline) EndTime

func (c ContributionGuideline) EndTime()

func (ContributionGuideline) Key

func (observer ContributionGuideline) Key() string

func (ContributionGuideline) Run

func (observer ContributionGuideline) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ContributionGuideline) StartTime

func (c *ContributionGuideline) StartTime()

func (ContributionGuideline) Type

func (observer ContributionGuideline) Type() string

type DevGuardProjectInfo

type DevGuardProjectInfo struct {
	Org     string `json:"org"`
	Project string `json:"project"`
	Asset   string `json:"asset"`
	Link    string `json:"link"`
}

func LookupDevGuardProject

func LookupDevGuardProject(ctx context.Context, repoID int64) (*DevGuardProjectInfo, error)

type DevGuardURL

type DevGuardURL struct {
	Frontend string
	Backend  string
}

func GetDevguardURL

func GetDevguardURL() (*DevGuardURL, error)

type FileCheckResult

type FileCheckResult struct {
	FilePath *string
	Message  string
	Value    ObservationValue
}

func CheckIfFileExists

func CheckIfFileExists(ctx context.Context, gitClient GitClient, repositoryURL string, branchName string, filePaths []string) FileCheckResult

func CheckIfFileExistsInDefaultBranch

func CheckIfFileExistsInDefaultBranch(ctx context.Context, gitClient GitClient, repositoryURL string, filePaths []string) (FileCheckResult, error)

type GitClient

type GitClient interface {
	GetIssues(ctx context.Context, repositoryURL string, options common.DateRangeListOptions) ([]common.Issue, error)
	GetIssueEvents(ctx context.Context, repositoryURL string, issueID int64) ([]common.IssueEvent, error)
	GetMemberOfProject(ctx context.Context, repositoryURL string) ([]common.ProjectMember, error)
	GetCommit(ctx context.Context, repositoryURL string, sha string, options common.GetCommitOptions) (common.Commit, error)
	GetCommitRefs(ctx context.Context, repositoryURL string, commitSHA string) ([]common.CommitRef, error)
	ListCommits(ctx context.Context, repositoryURL string, options common.ListCommitsOptions) ([]common.Commit, error)
	GetReleases(ctx context.Context, repositoryURL string, options common.ListReleasesOptions) ([]common.Release, error)
	GetLatestRelease(ctx context.Context, repositoryURL string) (common.Release, error)
	GetTags(ctx context.Context, repositoryURL string, options common.ListTagsOptions) ([]common.Tag, error)
	GetSignatureOfTag(ctx context.Context, repositoryURL string, tagName string) (common.TagSignature, error)
	GetCommitSigningVerificationStatus(ctx context.Context, repositoryURL string, commitSHA string) (common.CommitVerificationStatus, error)

	GetRawCommitSignatureAndPayload(ctx context.Context, repositoryURL string, commitSHA string) (*string, *string, error)
	GetCIPipeline(ctx context.Context, repositoryURL string, options common.ListCIPipelineRunsOptions) ([]common.CIPipeline, error)
	GetContainerRegistryTags(ctx context.Context, repositoryURL string, filterOnlySemVer bool) (*string, []common.ContainerRegistryTag, error)
	GetContainerRegistryTagsWithDetails(ctx context.Context, repositoryURL string, options common.DateRangeListOptions, filterOnlySemVer bool) ([]common.ContainerRegistryTag, error)
	GetPublishedPackages(ctx context.Context, repositoryURL string, options common.DateRangeListOptions) ([]common.Package, error)
	GetFileFromRawURL(ctx context.Context, rawURL string) ([]byte, error)
	GetFile(ctx context.Context, repositoryURL string, ref string, path string) ([]byte, error)
	GetMergeRequests(ctx context.Context, repositoryURL string, options common.ListMergeRequestsOptions) ([]common.MergeRequest, error)
	GetMergeRequestsApprovals(ctx context.Context, repositoryURL string, mergeRequestIid int64) (common.MergeRequestApprovals, error)
	GetProject(ctx context.Context, repositoryURL string, options common.GetProjectOptions) (common.Project, error)
	GetProjects(ctx context.Context) ([]common.Project, error)
	GetBranch(ctx context.Context, repositoryURL string, branchName string) (common.Branch, error)
	GetBranches(ctx context.Context, repositoryURL string) ([]common.Branch, error)
	GetProtectedBranch(ctx context.Context, repositoryURL string, branchName string) (common.ProtectedBranch, error)
	GetProtectedTag(ctx context.Context, repositoryURL string, tagName string) (common.ProtectedTag, error)
	IsRepoMirrored(ctx context.Context, repositoryURL string) bool
}

type Level

type Level string
const (
	Note    Level = "note"
	Warning Level = "warning"
	Error   Level = "error"
)

type LicensePolicy

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

func NewLicensePolicy

func NewLicensePolicy() LicensePolicy

func (LicensePolicy) EndTime

func (c LicensePolicy) EndTime()

func (LicensePolicy) Key

func (observer LicensePolicy) Key() string

func (LicensePolicy) Run

func (observer LicensePolicy) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*LicensePolicy) StartTime

func (c *LicensePolicy) StartTime()

func (LicensePolicy) Type

func (observer LicensePolicy) Type() string

type ManualObserver

type ManualObserver struct {
	// contains a list of repository URLs this check passed for
	Granted      map[string]struct{}
	GrantedRegex []*regexp.Regexp
	ID           string
}

func (ManualObserver) Key

func (observer ManualObserver) Key() string

func (ManualObserver) Run

func (observer ManualObserver) Run(ctx context.Context, _ GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (ManualObserver) Type

func (observer ManualObserver) Type() string

type Observation

type Observation struct {
	Evidence string
	Key      string
	// nil means no value - use 1 for true and 0 for false
	Value ObservationValue
}

func RunContainerAttestation

func RunContainerAttestation(ctx context.Context, gitClient GitClient, repositoryURL string, coSignAttestClient common.CosignAttestationClient, observerKey string, attestationTypes []common.AttestationType, timeRangeInMonths int) (Observation, error)

type ObservationValue

type ObservationValue = string
const (
	TechnicalFailure ObservationValue = "technicalFailure"
	MissingData      ObservationValue = "missingData"
	CheckFailed      ObservationValue = "checkFailed"
	CheckSuccessful  ObservationValue = "checkSuccessful"
)

func NewValue

func NewValue(value int) ObservationValue

type Observer

type Observer interface {
	Run(ctx context.Context, gitClient GitClient, repositoryURL string, input AdditionalInputData) (Observation, error)
	Type() string
	// the key solves the issue, that an Observation has some check information in itself: The Time range the observation does look at.
	// key is type:timeRangeInMonths - it can be used to identify the observation to use the value during the evaluation against thresholds
	Key() string
}

func NewManual

func NewManual(client GitClient, key, URL string) (Observer, error)

type ProtectedBranches

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

func NewProtectedBranches

func NewProtectedBranches() ProtectedBranches

func (ProtectedBranches) EndTime

func (c ProtectedBranches) EndTime()

func (ProtectedBranches) Key

func (observer ProtectedBranches) Key() string

func (ProtectedBranches) Run

func (observer ProtectedBranches) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ProtectedBranches) StartTime

func (c *ProtectedBranches) StartTime()

func (ProtectedBranches) Type

func (observer ProtectedBranches) Type() string

type RefType

type RefType int
const (
	RefBranch RefType = iota
	RefTag
)

type ReleaseWithoutVulnerabilities

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

func NewReleaseWithoutVulnerabilities

func NewReleaseWithoutVulnerabilities(timeRangeInMonths int) ReleaseWithoutVulnerabilities

func (ReleaseWithoutVulnerabilities) EndTime

func (c ReleaseWithoutVulnerabilities) EndTime()

func (ReleaseWithoutVulnerabilities) Key

func (observer ReleaseWithoutVulnerabilities) Key() string

func (ReleaseWithoutVulnerabilities) Run

func (observer ReleaseWithoutVulnerabilities) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*ReleaseWithoutVulnerabilities) StartTime

func (c *ReleaseWithoutVulnerabilities) StartTime()

func (ReleaseWithoutVulnerabilities) Type

func (observer ReleaseWithoutVulnerabilities) Type() string

type Releases

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

func NewReleases

func NewReleases(timeRangeInMonths int) Releases

func (Releases) EndTime

func (c Releases) EndTime()

func (Releases) Key

func (observer Releases) Key() string

func (Releases) Run

func (observer Releases) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*Releases) StartTime

func (c *Releases) StartTime()

func (Releases) Type

func (observer Releases) Type() string

type SecurityPolicy

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

func NewFilePresenceCheckSecurityPolicy

func NewFilePresenceCheckSecurityPolicy() SecurityPolicy

func (SecurityPolicy) EndTime

func (c SecurityPolicy) EndTime()

func (SecurityPolicy) Key

func (observer SecurityPolicy) Key() string

func (SecurityPolicy) Run

func (observer SecurityPolicy) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*SecurityPolicy) StartTime

func (c *SecurityPolicy) StartTime()

func (SecurityPolicy) Type

func (observer SecurityPolicy) Type() string

type SignedCommits

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

func NewSignedCommits

func NewSignedCommits(timeRangeInMonths int) SignedCommits

func (SignedCommits) EndTime

func (c SignedCommits) EndTime()

func (SignedCommits) Key

func (observer SignedCommits) Key() string

func (SignedCommits) Run

func (observer SignedCommits) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*SignedCommits) StartTime

func (c *SignedCommits) StartTime()

func (SignedCommits) Type

func (observer SignedCommits) Type() string

type SignedTags

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

func NewSignedTags

func NewSignedTags(timeRangeInMonths int) SignedTags

func (SignedTags) EndTime

func (c SignedTags) EndTime()

func (SignedTags) Key

func (observer SignedTags) Key() string

func (SignedTags) Run

func (observer SignedTags) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*SignedTags) StartTime

func (c *SignedTags) StartTime()

func (SignedTags) Type

func (observer SignedTags) Type() string

type Status

type Status string

func (Status) String

func (s Status) String() string

type SubsequentUseAPIResult

type SubsequentUseAPIResult struct {
	Code int                        `json:"code"`
	Data []SubsequentUseSingleUsage `json:"data"`
}

type SubsequentUseSingleUsage

type SubsequentUseSingleUsage struct {
	Mine      bool   `json:"mine"`
	ID        string `json:"id"`
	Public    bool   `json:"public"`
	CreatedAt string `json:"createdAt"`
	UpdatedAt string `json:"updatedAt"`
	Username  string `json:"username"`
	Email     string `json:"email"`
}

type VexStats

type VexStats struct {
	CountVexed                int
	CountNotOk                int
	MaxReactionTime           time.Duration
	MaxReactionTimeUnresolved time.Duration
}

func CountVexed

func CountVexed(bom *cdx.BOM, refDate time.Time, cveLevelFilter float64) (*VexStats, error)

type VulnerabilityCveAge

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

func NewVulnerabilityCveAge

func NewVulnerabilityCveAge() VulnerabilityCveAge

func (VulnerabilityCveAge) EndTime

func (c VulnerabilityCveAge) EndTime()

func (VulnerabilityCveAge) Key

func (observer VulnerabilityCveAge) Key() string

func (VulnerabilityCveAge) Run

func (observer VulnerabilityCveAge) Run(ctx context.Context, gitClient GitClient, repositoryURL string, additionalInputData AdditionalInputData) (Observation, error)

func (*VulnerabilityCveAge) StartTime

func (c *VulnerabilityCveAge) StartTime()

func (VulnerabilityCveAge) Type

func (observer VulnerabilityCveAge) Type() string

Source Files

  • ci_pipeline.go
  • code_review.go
  • commits.go
  • container_attestation.go
  • container_attestation_bronze.go
  • container_attestation_gold.go
  • container_attestation_silver.go
  • contributions.go
  • contributor_absence_factor.go
  • elephant_factor.go
  • file_presence_check.go
  • file_presence_check_changelog.go
  • file_presence_check_contribution_guideline.go
  • file_presence_check_security_policy.go
  • issue_reaction_time.go
  • license.go
  • manual.go
  • observer.go
  • oscal_ssp.go
  • packages.go
  • protected_branches.go
  • release_without_vulnerabilities.go
  • releases.go
  • signed_commits.go
  • signed_tags.go
  • subsequent_use.go
  • utils.go
  • vulnerability_cve_age.go

Jump to

Keyboard shortcuts

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