You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: website/docs/getting_started/getting_started-software-identification.md
+59-11Lines changed: 59 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ Commercial software suppliers, of course, each have a set of software
10
10
identifiers for their own products but these only work within their
11
11
particular customer base. There have been two prominent attempts to
12
12
standardize software identifiers for proprietary software - CPE (Common
13
-
Platform Ennumeration) and SWID (SoftWare IDentification). Neither has been
13
+
Platform Enumeration) and SWID (SoftWare IDentification). Neither has been
14
14
successful and neither was suitable for open source software which now
15
15
represents approximately 80% of software in use according to most surveys.
16
16
@@ -22,11 +22,10 @@ an ISO standard.
22
22
Our team also identified a related problem - after you have a standard way
23
23
to identify software packages, what is a standard way to compare software
24
24
package versions to determine whether a reported vulnerability affects the
25
-
version that you use. Our solution is the VERS (VErsion Range Specifier)
25
+
version that you use? Our solution is the VERS (VErsion Range Specifier)
26
26
specification which will be submitted to Ecma as a standard in 2026.
27
27
28
-
See https://package-url.github.io/www.packageurl.org/ for more
29
-
information about PURL and VERS.
28
+
See the [Package-URL website](https://package-url.github.io/www.packageurl.org/) for more information about PURL and VERS.
30
29
31
30
## Identify software packages and components
32
31
For the basic use case of identifying software packages and components,
@@ -41,27 +40,76 @@ container.
41
40
42
41
-[ScanCode.io](https://scancodeio.readthedocs.io/en/latest/) is an
43
42
application to scan codebases, packages, containers or other software collections. ScanCode.io uses a specific pipeline for scanning or analyzing
44
-
each software target and provides a database with UI and API access to your scans. ScanCode.io is usually a good place to get started in the AboutCode ecosystem. You normally run ScanCode.io as a Docker container.
43
+
each software target and provides a database with UI and API access to your scans. ScanCode.io is usually a good place to get started in the AboutCode ecosystem. You normally run ScanCode.io as a Docker container. You can export
44
+
scan data in many formats including: JSON, XLSX, CycloneDX SBOM, SPDX SBOM, or
45
+
an attribution-notice.
45
46
46
47
-[ScanCode Toolkit](https://scancode-toolkit.readthedocs.io/en/stable/) is a
47
48
library (and command line utility) that provides the scanning engine for
48
49
ScanCode.io. Its primary functions are to identify:
49
-
- Software licenses based on matching license notices and texts to the
- Software licenses based on matching license notices and texts to ScanCode
51
+
license detection rules
51
52
- Software origin based on copyright or author notices, email addresses, URLs and other clues
52
-
- Software codebase structure including directories and files with exentensive file information such as size, MIME type, file type, programming language,
53
+
- Software codebase structure including directories and files with extensive file information such as size, MIME type, file type, programming language,
provides license text and metadata for 2,470 open source and other third-party
58
+
licenses (and growing). Each license has an SPDX license identifier using the `Licenseref-scancode` namespace for licenses that are not yet included in the
59
+
SPDX License List.
60
+
55
61
-[PURLDB](https://purldb.readthedocs.io/en/stable/) provides tools to create and manage a database of package metadata keyed by PURL. You can use PURLDB
56
-
data via API to enrich your package and SBOM data in DejaCode, ScanCode.io.,
62
+
data via API to enrich your package and SBOM data in DejaCode, ScanCode.io,
57
63
or your own application. The AboutCode team also currently hosts a public [PURLDB](https://public.purldb.io/api/) service with REST API.
58
64
65
+
## Analyze containers
66
+
The analysis of containers to produce inventories or SBOMs for the software
67
+
contents has become a very common and high priority task due to the high and
68
+
increasing volume of software deployed on containers and the large volume of
69
+
software deployed in most containers. For this use case, the primary AboutCode
70
+
tools and data are:
71
+
72
+
-[ScanCode.io](https://scancodeio.readthedocs.io/en/latest/) provides the
73
+
`analyze_docker_image` pipeline for container analysis. This will produce a
74
+
software inventory for Resources (all files), Packages (package metadata),
75
+
Dependencies (from package manifest files). The scan data also includes
76
+
detailed information about image layers and their file content.
77
+
78
+
If you conclude that the ScanCode.io inventory is accurate, you can
79
+
export the data CycloneDX or SPDX SBOM format, or in JSON or XLSX format
80
+
for use in another application.
81
+
82
+
If you need to update or enhance the scan data before you produce an SBOM, DejaCode provides several options.
83
+
84
+
-[DejaCode](https://dejacode.readthedocs.io/en/latest/) is highly integrated
85
+
with ScanCode so that you can easily import ScanCode scan data from ScanCode
86
+
Tookit or ScanCode.io into DejaCode as a **Product**. In DejaCode, you can
87
+
then:
88
+
89
+
- Enrich the package data from PURLDB
90
+
- Apply your license usage policies
91
+
- Apply your vulnerability risk policies
92
+
- Update the Product package and component data as needed
93
+
- Generate an SBOM in CycloneDX or SPDX format
94
+
- Generate an attribution notice
95
+
96
+
-[container-inspector](https://github.com/aboutcode-org/container-inspector/blob/main/README.rst) is a static analysis tool to analyze the structure of software components in a container image. container-inspector is
97
+
used in the ScanCode.io `analyze_docker_image` pipeline for the layer analysis,
98
+
but you can also use it as a command line utility.
0 commit comments