CycloneDX output: metadata.properties[].value emits JSON array instead of string
I maintainer di solito rispondono entro 3 giorni
@0Cymantek0 ci sta già lavorando.
Dal 11/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 62/100
Direzione di ricerca
Inizia riproducendo il problema con il comando --cyclonedx indicato nell'issue, poi esegui lo script Python di verifica per elencare le proprietà il cui valore non è una stringa. Cerca nel codice di output CycloneDX il punto in cui la proprietà scancode:options viene costruita a partire dalla lista delle opzioni. È completato quando ogni metadata.properties[].value è una stringa e il controllo non stampa nulla. Il payload non stabilisce se unire con spazi, con virgole o codificare in JSON, quindi conferma questa scelta prima di modificare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When using --cyclonedx output, ScanCode produces metadata.properties[].value as a JSON array instead of a string. The CycloneDX specification (versions 1.4, 1.5, and 1.6) defines properties[].value as type: string.
This causes downstream tools like cyclonedx-cli merge to crash:
Unhandled exception: System.Text.Json.JsonException:
The JSON value could not be converted to System.String.
Path: $.metadata.properties[1].value
---> System.InvalidOperationException:
Cannot get the value of a token type 'StartArray' as a string.
Example output (simplified)
{
"metadata": {
"properties": [
{
"name": "scancode:version",
"value": "33.0.0"
},
{
"name": "scancode:options",
"value": ["--package", "--license", "--copyright", "--strip-root"]
}
]
}
}
The second property has value as an array ["--package", "--license", "--copyright", "--strip-root"] instead of a string like "--package --license --copyright --strip-root".
CycloneDX spec reference
The value field in a property object is defined as type: string in all CycloneDX spec versions:
The spec says: "The value of the property." with type string. If multiple values need to be represented, the spec recommends duplicate property names with different values, not array-typed values.
Related
- cyclonedx-cli merge crash on array values: https://github.com/CycloneDX/cyclonedx-cli/issues/246
To reproduce
pip install scancode-toolkit
scancode --package --license --copyright --cyclonedx output.cdx.json /path/to/project
Then check for non-string property values:
import json
with open('output.cdx.json') as f:
data = json.load(f)
for p in data.get('metadata', {}).get('properties', []):
if not isinstance(p.get('value'), str):
print(f'Non-string value: {p["name"]} = {p["value"]} (type: {type(p["value"]).__name__})')
Expected behavior
All properties[].value fields should be strings per the CycloneDX specification. Array values should be serialized as a string (e.g. comma-separated or JSON-encoded string).
Environment
- scancode-toolkit: latest (installed via pip)
- Output format:
--cyclonedx(JSON) - Python: 3.12+
- Lingua principale
- Python
- Stelle
- 2.7k
- Fork
- 831
- Merge medio
- 3g 4h
- PR unite (30g)
- 7
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aboutcode-org/scancode-toolkit
-
bug: Unreachable JSON extension and format validation in validate_input_pathForse già presa @0Cymantek0 l’ha presa 17 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aboutcode-org/scancode-toolkit#5351 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyForse già presa @Pradeepbeleri l’ha presa 45 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
aboutcode-org/scancode-toolkit#5319 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Duplicate autogen.sh entry in commoncode default ignoresForse già presa @Daksha1611 l’ha presa 47 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
aboutcode-org/scancode-toolkit#5316 ·
I maintainer di solito rispondono entro 3 giorni
-
Duplicate LGPL key in rubygems LICENSES_MAPPING makes one mapping unreachableForse già presa @Daksha1611 l’ha presa 47 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
aboutcode-org/scancode-toolkit#5314 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Duplicate keys in alpine DECLARED_TO_SPDX silently discard two license mappingsForse già presa @Daksha1611 l’ha presa 47 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
aboutcode-org/scancode-toolkit#5312 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di aboutcode-org/scancode-toolkit
Issue simili
-
app: scripts status: backlog type: documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
netbox-community/netbox-scripts#68 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
marin-community/marin#10765 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
flathub/com.unity.UnityHub#230 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
namespace operations
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 63/100
EclipseFdn/open-vsx.org#14910 ·
I maintainer di solito rispondono entro 1 giorno