All notable changes to this project will be documented in this file.
- Style
- Applied latest PHP Coding Standards (via #507)
- Added
- Dependencies
- Raised dependency
cyclonedx/cyclonedx-library:^3.3
, was:^3.2
(via #479)
- Raised dependency
Added basic support for CycloneDX Specification-1.6.
- Changed
- This tool supports CycloneDX Specification-1.6 now (via #477)
- Added
- CLI switch
--spec-version
now supports value1.6
to reflect CycloneDX Specification-1.6 (via #477)
Default value for that switch is unchanged - still1.5
.
- CLI switch
- Style
- Applied latest PHP Coding Standards (via #469)
- Dependencies
- Raised dependency
cyclonedx/cyclonedx-library:^3.2
, was:^3.1
(via #477)
- Raised dependency
- BREAKING changes
- Dependencies
- Raised dependency
cyclonedx/cyclonedx-library:^3.1
, was:^2.3 || ^3.0
(via #441)
- Raised dependency
Maintenance release.
- Misc
- Officially support PHP 8.3 (via #342)
- Added
- SBOM results might have the
externalReferences[].comment
populated (via #432)
- SBOM results might have the
- Fixed
- Docs
- Moved all non-public API into a sub-namespace called
_internal
, so that its reliability is obvious. (via #427)
- Moved all non-public API into a sub-namespace called
- Added
- Dependencies
- Requires
cyclonedx/cyclonedx-library:^2.3||^3.0
, was:^2.3
(via #398)
- Requires
- Style
- Applied latest PHP Coding Standards (via #395)
Added support for CycloneDX Specification-1.5.
- Changed
- Added
- Dependencies
- Fixed
- Improved error reporting in case an invalid BOM would be created (via #363)
Based on OWASP Software Component Verification Standard for Software Bill of Materials
(SCVS SBOM) criteria, this tool is now capable of producing SBOM documents almost passing Level-2 (only signing needs to be done externally).
Affective changes based on these SCVS SBOM criteria:
- 2.1 – Added Support for CycloneDX 1.4 (via #250)
- 2.3 – SBOM has a unique identifier (#279 via #250, #353)
- 2.7 – SBOM is timestamped (#112 via #250)
- 2.9 – Accuracy of Inventory was improved (#102, #122, #261, #313 via #250)
- 2.10 – Accuracy of Inventory of all test components was improved (#102, #122, #261, #313 via #250)
- 2.11 – SBOM metadata was enhanced (#171 via #250)
- 2.15 – SPDX license expression detection fixed (#128 via #250)
- BREAKING changes
- Removed support for PHP
<8.1
(#91, #128 via #250) - Removed support for Composer
<2.3
(#153 via #250) - CLI
- Removed deprecated composer command
make-bom
, callcomposer CycloneDX:make-sbom
instead (#293 via #309) - Changed option
output-file
to default to-
now, which causes to print to STDOUT (via #250) - Removed option
exclude-dev
in favor of new optionomit
(via #250) - Removed option
exclude-plugins
in favor of new optionomit
(via #250) - Removed option
no-version-normalization
(#102 via #250)
- Removed deprecated composer command
- SBOM results
- Dependencies
- Removed support for PHP
- Changed
- Added
- Evidence collection knows actually installed packages (#122 via #250)
- SBOM results
- Support for CycloneDX Spec v1.4 (via #250)
- might have
serialnumber
populated (#279 via #250, #353) - might have
metadata.timestamp
populated (#112 via #250) - might have
metadata.tools[].tool.externalReferences
populated (#171 via #250) - might have
components[].component.author
populated (#261 via #250) - might have
components[].component.properties
populated according tocdx:composer
Namespace Taxonomy (#313 via #250)
- CLI
- Misc
- Changed
Maintenance Release.
- Legal
- Transferred copyright to OWASP Foundation. (via #244)
- Maintenance release.
- Dependencies
- Raised dependency
cyclonedx/cyclonedx-library:^1.4.2
, was:^1.3.1
. (via #192)
- Raised dependency
- Misc
- Fixed
- ExternalReferences fetched from composer's
support.email
are correctly prefixed with "mailto:". (via #161)
Value was unmodified in the past.
- ExternalReferences fetched from composer's
- Fixed
- Changed
- The
ValidationError
message requests reporting with the "ValidationError" issue template. (via #160)
No template was used in the past.
- The
- Added
- The resulting SBoM hold ExternalReferences as fetched from package descriptions. (via #145)
- Fixed
- Compatibility with composer v2.0.0 to v2.0.4 was improved. (via #152)
- Possible crashes when composer was not able to detect component's version properly.
- Added
- CLI got a new switch
--no-version-normalization
. (via #138)
That allows to omit component version-string normalization.
Per default this plugin will normalize version strings by stripping leading "v".
This is a compatibility-switch. The next major-version of this plugin will not modify component versions. (see #102)
- CLI got a new switch
- Added
- CLI got a new option
--mc-version
. (via #133)
That allows to set the main component's version in the resulting SBoM, so that the auto-detection can be overridden.
- CLI got a new option
- Fixed
- The resulting SBoM's main component's
purl
does not get a version assigned, if the version auto-detection fails. (via #134)
- The resulting SBoM's main component's
- Changed
- Core library
- Was moved to an own package: https://packagist.org/packages/cyclonedx/cyclonedx-library
The new external package/library is a one-to-one copy of the original code from this project.
The new external package/library is a dependency/required of this project. So usage/leverage of the original code is still possible without any changes for third parties.
See #87 for details.
- Was moved to an own package: https://packagist.org/packages/cyclonedx/cyclonedx-library
- Core library
- Fixed
- Improved compatibility to composer. (via #125)
This was made possible since composer's type hints are getting fixed.
See https://github.com/composer/composer/releases/tag/2.1.7Added many type annotations internally, which may have an effect on CI/static analysis for people using Composer as a dependency.
- Improved compatibility to composer. (via #125)
- Changed
- Core library
- Some repository data-types are lists of unique items, so no duplicates are kept.
Affected classes/data-types:ComponentRepository
DisjunctiveLicenseRepository
ToolRepository
- Some repository data-types are lists of unique items, so no duplicates are kept.
- Core library
- Added
- CLI via
composer make-bom
- Will try to populate dependencies of the SBoM result.
- Core library
- Added
BomRef
model to link bom elements in general.
AddedBomRefRepository
data type as a collection of uniqueBomRef
. - Added bomRef to
Component
model to link components as dependencies.
Added dependencies toComponent
model. - Added ability to serialize
dependencies
to XML. - Added ability to serialize
dependencies
to JSON.
- Added
- CLI via
- Misc
- Moved development docs to
docs/dev/
. - Refactored the plugin's internals.
- Moved development docs to
- Fixed
- CLI via
composer make-bom
- Will ignore "AliasPackages" when generating the SBoM, since their alias-target is part of the SBoM already.
- CLI via
- Changed
- Core library
- SerializersGroups will skip unsupported elements silently, instead of forwarding caught exceptions.
This results in an overall smoother SBoM generation process, just as intended.
- SerializersGroups will skip unsupported elements silently, instead of forwarding caught exceptions.
- Core library
- Added
- CLI via
composer make-bom
- Will try to populate metadata of the SBoM result.
- Core library
- Added models for spec elements:
metadata
,tools
,tool
- Added ability to serialize
metadata
to XML. - Added ability to serialize
metadata
to JSON.
- Added models for spec elements:
- CLI via
- Fixed
- CLI via
composer make-bom
- composer packages of type
project
orcomposer-plugin
result as CycloneDX component of typeapplication
, waslibrary
.
- composer packages of type
- CLI via
- Misc
- Updated demos/examples to reflect current state of SBoM results including metadata.
- Split some tests to more fine-grained scenarios.
- Changed
- CLI via
composer make-bom
- All informational/error output will appear on STDERR, was STDOUT.
Output of the SBoM might still happen on STDOUT.
This makes utilization of STDOUT via--output-file=-
more flexible (pipe, redirect) whilst verbosity can be increased via-v
.
- All informational/error output will appear on STDERR, was STDOUT.
Output of the SBoM might still happen on STDOUT.
- CLI via
- Added
- CLI via
composer make-bom
- Added an optional argument
composer-file
.
If given, then the SBoM is generated based on that file instead of the file in the current working directory.
This enables the plugin to analyze projects outside the plugin's own setup.
- Added an optional argument
- CLI via
- Fixed
- Fixed detection of invalid/outdated composer lock file.
- Fixed a rare case that caused the CLI to crash unexpectedly, if the composer lock file was unexpected.
- Misc
- Added composer keywords.
- Refactored the plugin's internals.
- Added more tests for internals.
- Misc
- Updated some documentation.
- Bumped some dev-tools.
- Added normalizer for
composer.json
files.
- Added
- CLI via
composer make-bom
- Per default the command will validate the resulting SBoM before writing it to file/stdOut.
- Added a switch
--no-validate
to disable result validation. - When the verbosity at "debug" level, then detailed debug info will be put out. This should help to find validation issues.
- Validation classes/methods to test SBoM in XML and JSON format for spec 1.1, 1.2, 1.3
- CLI via
- Breaking Changes
- Now requires php
^7.3 || ^8.0
, was^7.1 || ^8.0
. - Now requires composer v2 -
composer-plugin-api:^2.0
, wascomposer-plugin-api:^1.1||^2.0
. - CLI via
composer make-bom
- Now defaults to the latest supported version of CycloneDX spec: 1.3
See option--spec-version
. - Deprecated switch
--json
was removed.
Use option--output-format=JSON
instead.
- Now defaults to the latest supported version of CycloneDX spec: 1.3
- Component's license in SpdxLicenseExpression format is no longer split into disjunctive licenses. Still using licenses properly in the resulting output file.
- Complete rewrite/refactor.
Expect library classes/methods/functions to be removed, renamed or incompatible to previous versions - see the source for changes.
- Now requires php
- Added
- CLI
- Output is less verbose per default. Can be increased via
-v
,-vv
,-vvv
. - Support for output to STDOUT. Use option
--output-file=-
. - Added an optional option
--spec-version
for the CycloneDX spec version.
Supported values: "1.1", "1.2", "1.3".
Defaults to "1.3".
- Output is less verbose per default. Can be increased via
- Support for JSON output format.
JSON support was a preview before and became a basic part of the plugin now.
- CLI
- Removed
- This plugin no longer supports
php<7.3
. - This plugin no longer supports composer v1.
- CLI
- Deprecated switch
--json
was removed.
Use option--output-format=JSON
instead.
- Deprecated switch
- This plugin no longer supports
- Fixed
- Some cases when the JSON SBoM generator created schema-invalid data.
- Misc
- Utilize
package-url/packageurl-php
over own implementation. - Added more tests during the build process.
- Added Psalm & PHP-CS-Fixer to the CI chain and fixed all findings accordingly.
- Added a demo run of the plugin to the CI chain.
- Utilize
- Maintenance release.
- Added
- CLI got an option
--output-format
to decide the output format. (via #80)
Supported values: "XML", "JSON".
Defaults to "XML".
The use of this new option replaces the switch--json
.
- CLI got an option
- Deprecated
- CLI switch
--json
was marked as deprecated. (via #80)
Use option--output-format=JSON
instead.
- CLI switch
- Misc
- Removed
php-cs-fixer
config from dist release.
- Removed
- Misc
- Applied latest rules of
php-cs-fixer
to the code. (via #78)
- Applied latest rules of
- Added
- Support for slim dist-builds (via #24)
- Misc
- Pinned dev-requirements to exact versions to ensure reproducible tests. (via #37)
- Added (code) quality tests to the dev-process. (see #23)
- CI's unit-tests just run reasonable combinations of OperatingSystem, PhpVersions, dependencies. (via #34, #54)
- applied coding standards to all php files. (via #40)
- Added
- Initial JSON support (via #16)
- Fixed
- Added
- Support for composer v2 (via #9)
- Fixed
- Removed unneeded double forward slash from package URLs (via #7)
- Misc
- Added release workflow (via #8)
Initial release.