License Policies and Compliance Alerts
ScanCode.io enables you to define license policies that check your projects against a compliance system.
Creating Policies Files
A valid policies file is required to enable compliance-related features.
The policies file, by default named policies.yml, is a YAML file with a
structure similar to the following:
license_policies:
- license_key: mit
label: Approved License
compliance_alert: ''
- license_key: mpl-2.0
label: Restricted License
compliance_alert: warning
- license_key: gpl-3.0
label: Prohibited License
compliance_alert: error
- license_key: OFL-1.1
compliance_alert: warning
- license_key: LicenseRef-scancode-public-domain
compliance_alert: ''
- license_key: LicenseRef-scancode-unknown-license-reference
compliance_alert: error
In the example above, licenses are referenced using the
license_keyfield. These keys can be either ScanCode license identifiers (e.g., “mit”, “gpl-3.0”), or SPDX license identifiers (e.g., “OFL-1.1”, “LicenseRef-scancode-public-domain”). These values are used to match against the licenses detected in scan results.Each policy entry includes a
labeland acompliance_alertfield. Thelabelis a customizable description used for display or reporting purposes.The
compliance_alertfield determines the severity level for a license and supports the following values:''(empty string) — No action needed; the license is approved.warning— Use with caution; the license may have some restrictions.error— The license is prohibited or incompatible with your policy.
Creating Clarity Thresholds Files
A valid clarity thresholds file is required to enable license clarity compliance features.
The clarity thresholds file, by default named policies.yml, is a YAML file with a
structure similar to the following:
license_clarity_thresholds:
91: ok
80: warning
0: error
In the example above, the keys
91,80, and0are integer threshold values representing minimum clarity scores.The values
error,warning, andokare the compliance alert levels that will be triggered if the project’s license clarity score meets or exceeds the corresponding threshold.The thresholds must be listed in strictly descending order.
How it works:
If the clarity score is 91 or above, the alert is ``ok``.
If the clarity score is 80 to 90, the alert is ``warning``.
If the clarity score is below 80, the alert is ``error``.
You can adjust the threshold values and alert levels to match your organization’s compliance requirements.
Accepted values for the alert level:
okwarningerror
Creating Scorecard Thresholds Files
A valid scorecard thresholds file is required to enable OpenSSF Scorecard compliance features.
The scorecard thresholds file, by default named policies.yml, is a YAML file with a
structure similar to the following:
scorecard_score_thresholds:
9.0: ok
7.0: warning
0: error
In the example above, the keys
9.0,7.0, and0are numeric threshold values representing minimum scorecard scores.The values
error,warning, andokare the compliance alert levels that will be triggered if the project’s scorecard score meets or exceeds the corresponding threshold.The thresholds must be listed in strictly descending order.
How it works:
If the scorecard score is 9.0 or above, the alert is ``ok``.
If the scorecard score is 7.0 to 8.9, the alert is ``warning``.
If the scorecard score is below 7.0, the alert is ``error``.
You can adjust the threshold values and alert levels to match your organization’s security compliance requirements.
Accepted values for the alert level:
okwarningerror
App Policies
Policies can be enabled for the entire ScanCode.io app instance or on a per-project basis.
By default, ScanCode.io will look for a policies.yml file in the root of its
application codebase.
Alternatively, you can specify the location of your policies file in your .env file
using the SCANCODEIO_POLICIES_FILE setting.
If a policies file is found at this location, those policies will be applied to all projects in the ScanCode.io instance.
Tip
Refer to the Application Settings section for a full list of settings, including the policies file setting.
Per-Project Policies
Project-specific policies can be provided via a policies.yml file as one of the
project inputs or by defining the policies value in the
Project configuration.
Compliance Alerts Ranking
The compliance system uses a Precedence of Policies principle, which ensures the
highest-priority policy is applied in cases where resources or packages have complex
license expressions:
error > warning > missing > ‘’ (empty string)
This principle means that if a resource has an error, warning, and ''
in its license expression, the overall compliance alert for that resource would be
error.
Warning
The missing compliance alert value is applied for licenses not included in the
policies file.
Web UI
Compliance alerts are shown directly in the Web user interface in the following locations:
A summary panel in the project detail view:
A dedicated column in the Packages and Resources list tables:
REST API
For more details on retrieving compliance data through the REST API, see the Compliance section and License Clarity Compliance section.
Command Line Interface
A dedicated check-compliance management command is available. See the
$ scanpipe check-compliance –project PROJECT section for more information.