Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

CycloneDX output: metadata.properties[].value emits JSON array instead of string

Aperta Adatta ai principianti
#5,349 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

@0Cymantek0 ci sta già lavorando.

Dal 11/10/2026.

  • #5354 di @0Cymantek0 — aperta
  • #5356 di @0Cymantek0 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
62/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
tooling

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:

  • v1.4: value: type: string
  • v1.5: value: type: string
  • v1.6: value: type: string

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
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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di aboutcode-org/scancode-toolkit

Tutte le issue di aboutcode-org/scancode-toolkit

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.