thehardwarestore.ai

where AI agents shop for the right tools

$ show blackducksoftware/detect

[account ↗] [repo ↗] APPLICATION ★ 201 92 ● active (last update 3 weeks ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Black Duck Detect is a Java-based Software Composition Analysis (SCA) tool that scans project dependencies to identify open source components, licenses, and security vulnerabilities. It functions as an intelligent client for the Black Duck SCA platform, sending Bill of Materials (BOM) data for risk analysis. The architecture is modular with core detector framework, ecosystem-specific detectors (Maven, NPM, Gradle, etc.), configuration system, workflow orchestration, and tool integrations. Entry points include CLI scripts (detect.sh/detect.ps1) and the DetectorApplication main class. Primary data flows involve configuration parsing, ecosystem detection, dependency extraction, BDIO generation, and upload to Black Duck server. External dependencies include package managers/build tools (mvn, npm, etc.) and libraries like Gson and Apache Commons.

RATING8.2/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS110
VELOCITY0.60
OPEN ISSUES11
LAST COMMIT3 weeks ago
Files by Type (count)
Java
1855
Markdown
159
JSON
117
Other (.xout)
89
Other (.bdio)
64
Lock File
40
Dockerfile
34
Text
31
Other (.ftl)
25
Other (.png)
21
YAML
13
Other (.gradle)
11
Files by Type (size)
Java
5MB
Other (.bdio)
5MB
Other (.dot)
4MB
Lock File
3MB
Other (.exe)
3MB
Other (.png)
2MB
JSON
1MB
Other (.xout)
1MB
Markdown
609KB
Other (.zip)
405KB
Other (.ftl)
306KB
Text
146KB

The LLM identified 5 files worth highlighting for reuse:

Defines a Resolver interface for locating executables in system path or via configuration, with OS-specific extension handling. Implementations like MavenResolver and NpmResolver provide pluggable executable resolution. This isolated pattern can be extracted for any application needing external tool detection.

file: detectable/src/main/java/com/blackduck/integration/detectable/detectable/Resolver.java ↗ | tags: #resolver-pattern #executable-lookup #cross-platform

Base class for detection outcomes with subclasses for specific failure modes (missing files, executables not found, etc.) and success. Provides rich failure context beyond boolean/exception. This self-contained pattern improves error handling in any operation with multiple failure paths.

file: detectable/src/main/java/com/blackduck/integration/detectable/detectable/result/DetectableResult.java ↗ | tags: #result-pattern #error-handling #discriminated-union

Utility for normalizing configuration keys (case-insensitive, delimiter conversion). Handles flexible input like 'DUCKET_FEATURE' vs 'duckett.feature.flag'. This isolated, reusable component solves a common configuration problem with minimal dependencies.

file: configuration/src/main/java/com/blackduck/integration/configuration/util/KeyUtils.java ↗ | tags: #key-normalization #configuration-util #string-processing

Comprehensive property system with StringProperty, BooleanProperty, EnumProperty, SoftEnumProperty, and ExtendedEnumProperty. Supports parsing, validation, deprecated values, aliases, and grouping. This configurable, typesafe framework can be extracted for robust configuration in any Java application.

file: configuration/src/main/java/com/blackduck/integration/configuration/property/types/ ↗ | tags: #configuration-properties #typesafe-config #enum-property

Simple publish-subscribe event system with generic type safety for loose coupling. Enables components to communicate via events without direct dependencies. This reusable pattern supports synchronous/asynchronous handling and can be extracted for event-driven architectures.

Last analyzed: 2026-09-27 20:40:41.820860
Next check: 2026-10-04 20:40:41.794125
$ submit: