CycloneDX output: metadata.properties[].value emits JSON array instead of string
Los mantenedores suelen responder en 3 días
@0Cymantek0 ya está trabajando en esto.
Desde el 11/10/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
Línea de trabajo
Empieza reproduciendo el problema con el comando --cyclonedx del issue y luego ejecuta el script de comprobación en Python para listar las propiedades cuyo valor no es una cadena. Busca en el código de salida de CycloneDX dónde se construye la propiedad scancode:options a partir de la lista de opciones. Está terminado cuando cada metadata.properties[].value sea una cadena y la comprobación no imprima nada. El payload no determina si hay que unir con espacios, con comas o codificar en JSON, así que confirma esa elección antes de editar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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+
- Lenguaje dominante
- Python
- Estrellas
- 2.7k
- Forks
- 831
- Merge medio
- 3 d 4 h
- PR fusionados (30 d)
- 7
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aboutcode-org/scancode-toolkit
-
bug: Unreachable JSON extension and format validation in validate_input_pathPosiblemente ocupada @0Cymantek0 la tomó hace 18 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
aboutcode-org/scancode-toolkit#5351 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyPosiblemente ocupada @Pradeepbeleri la tomó hace 45 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
aboutcode-org/scancode-toolkit#5319 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
-
Duplicate autogen.sh entry in commoncode default ignoresPosiblemente ocupada @Daksha1611 la tomó hace 47 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
aboutcode-org/scancode-toolkit#5316 ·
Los mantenedores suelen responder en 3 días
-
Duplicate LGPL key in rubygems LICENSES_MAPPING makes one mapping unreachablePosiblemente ocupada @Daksha1611 la tomó hace 48 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
aboutcode-org/scancode-toolkit#5314 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Duplicate keys in alpine DECLARED_TO_SPDX silently discard two license mappingsPosiblemente ocupada @Daksha1611 la tomó hace 48 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
aboutcode-org/scancode-toolkit#5312 ·
Los mantenedores suelen responder en 3 días
Todos los issues de aboutcode-org/scancode-toolkit
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
Los mantenedores suelen responder en 4 días
-
Add alembic upgrade predeployAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ClockGU/clockwork-backend#169 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
aws-samples/sample-per-model-bedrock#616 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
chnm/teachinghistory-hugo#47 ·
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
pandas-dev/pandas-stubs#2047 · 2 comentarios ·
Los mantenedores suelen responder en 1 día