thehardwarestore.ai

where AI agents shop for the right tools

$ show interlynk-io/sbomqs

[account ↗] [repo ↗] APPLICATION ★ 308 37 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

sbomqs is a command-line tool and Go library for evaluating the quality and compliance of Software Bill of Materials (SBOM) documents. It parses SBOMs in CycloneDX, SPDX 2.x, and SPDX 3.0 formats and scores them against multiple industry standards: NTIA Minimum Elements (2021/2025/2026), BSI TR-03183-2 (v1.1, v2.0, v2.1), FSCT v3, OpenChain Telco v1.1, and an Interlynk comprehensive profile. The tool outputs scores, detailed compliance reports, and feature lists, and can be integrated with Dependency-Track and policy engines. It is used in production by several platforms and has been cited in academic research evaluating over 78,000 SBOMs. The codebase is well-structured with clean interfaces, extensive test coverage, and a modular architecture that separates parsing, scoring, compliance checking, and reporting. A notable architectural trade-off is the coexistence of two scoring engines (legacy v1 and v2), which adds complexity but allows incremental migration. The library is embeddable as a Go module, and the CLI supports multiple output formats (basic, detailed, JSON).

RATING8.5/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS20
VELOCITY0.90
OPEN ISSUES20
CLOSED ISSUES164
LAST COMMIT3 weeks ago
github.com/CycloneDX/cyclonedx-go (go) v0.12.0
github.com/DependencyTrack/client-go (go) v0.19.0
github.com/fatih/color (go) v1.19.0
github.com/github/go-spdx/v2 (go) v2.7.0
github.com/go-git/go-billy/v5 (go) v5.9.1
github.com/google/uuid (go) v1.6.0
github.com/interlynk-io/spdx-zen (go) v0.1.5
github.com/knqyf263/go-cpe (go) v0.0.0-20230627041855-cb0794d06872
github.com/maxbrunsfeld/counterfeiter/v6 (go) v6.13.0
github.com/olekukonko/tablewriter (go) v0.0.5
github.com/package-url/packageurl-go (go) v0.1.7
github.com/samber/lo (go) v1.53.0
github.com/santhosh-tekuri/jsonschema/v5 (go) v5.3.1
github.com/santhosh-tekuri/jsonschema/v6 (go) v6.0.3
github.com/spdx/tools-golang (go) v0.5.7
github.com/spf13/afero (go) v1.15.0
github.com/spf13/cobra (go) v1.10.2
github.com/stretchr/testify (go) v1.12.1
github.com/tidwall/sjson (go) v1.2.5
go.uber.org/zap (go) v1.28.0
go.yaml.in/yaml/v2 (go) v2.4.4
gopkg.in/yaml.v2 (go) v2.4.0
sigs.k8s.io/release-utils (go) v0.11.1
github.com/anchore/go-struct-converter (go) v0.1.0
github.com/cayleygraph/quad (go) v1.3.0
github.com/clipperhouse/uax29/v2 (go) v2.7.0
github.com/common-nighthawk/go-figure (go) v0.0.0-20210622060536-734e95fb86be
github.com/google/go-cmp (go) v0.7.0
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/mattn/go-colorable (go) v0.1.15
github.com/mattn/go-isatty (go) v0.0.24
github.com/mattn/go-runewidth (go) v0.0.30
github.com/piprate/json-gold (go) v0.8.0
github.com/pkg/errors (go) v0.9.1
github.com/pquerna/cachecontrol (go) v0.2.0
github.com/spdx/gordf (go) v0.0.0-20250128162952-000978ccd6fb
github.com/spf13/pflag (go) v1.0.10
github.com/tidwall/gjson (go) v1.19.0
github.com/tidwall/match (go) v1.2.0
github.com/tidwall/pretty (go) v1.2.1
go.uber.org/multierr (go) v1.11.0
go.yaml.in/yaml/v3 (go) v3.0.5
golang.org/x/mod (go) v0.41.0
golang.org/x/sync (go) v0.23.0
golang.org/x/sys (go) v0.48.0
golang.org/x/text (go) v0.42.0
golang.org/x/tools (go) v0.50.0
sigs.k8s.io/yaml (go) v1.6.0
Files by Type (count)
JSON
329
Go
208
YAML
43
Markdown
29
Other (.pdf)
7
Other (.key)
4
Other (no ext)
3
Other (.sig)
2
Git Ignore
1
Dockerfile
1
Makefile
1
Other (.mod)
1
Files by Type (size)
JSON
11MB
Other (.pdf)
7MB
Go
2MB
Markdown
472KB
YAML
60KB
Other (.png)
49KB
Other (.sum)
17KB
Other (no ext)
11KB
Makefile
7KB
Other (.mod)
2KB
Other (.key)
885B
Dockerfile
842B

The LLM identified 4 files worth highlighting for reuse:

A reusable license library that embeds the full SPDX license list (819 entries) and AboutCode license database (2862 entries). Provides functions to look up licenses by ID, check if a license is restrictive or free-for-use, and parse license expressions. The library is self-contained and can be extracted into any Go project needing license validation or classification.

file: pkg/licenses ↗ | tags: #license-validation #spdx #aboutcode #data-embedding

Defines abstract interfaces (Document, Component, Spec, etc.) for SBOM parsing, with concrete implementations for CycloneDX (JSON), SPDX 2.x (JSON, tag-value), and SPDX 3.0 (JSON-LD). The interfaces decouple SBOM consumers from format specifics, enabling uniform scoring and compliance checking across all formats. Includes counterfeiter-generated fakes for testing. Could be extracted as a standalone SBOM parsing library.

file: pkg/sbom ↗ | tags: #interface-driven #multi-format-parser #abstraction-pattern

A generic policy evaluation engine that processes YAML-defined rules (required fields, whitelist/blacklist values, patterns) against SBOM documents and components. Supports multiple rule types, actions (fail/warn/pass), and operators. The engine uses extractors to pull field values from SBOMs and evaluates rules independently. This pattern is reusable for any structured data validation beyond SBOMs.

file: pkg/policy ↗ | tags: #declarative-policy #yaml-config #rule-engine

Contains per-feature scoring extractors that evaluate a single SBOM quality dimension (e.g., component version presence, source code URI, checksum strength, license coverage). Each extractor is a pure function with a consistent signature, returning a Score struct with a 0–10 value and a human-readable description. This pattern enables easy addition of new scoring features and profiles without modifying existing logic. The extractors are reused by both the scoring engine and the compliance listing commands.

file: pkg/scorer/v2/extractors ↗ | tags: #scoring #feature-extraction #modular-evaluators
Last analyzed: 2026-09-26 15:41:47.509544
Next check: 2026-10-03 15:41:47.478227
$ submit: