Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[2.0] refactor component for specificcomponent types

Abierto
#1,024 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
json
Área
data

Línea de trabajo

Comienza con los dos pull requests de especificación enlazados y localiza la definición actual del componente. Traza cómo se utilizan las referencias a componentes y los requisitos específicos del tipo. Se considera terminado cuando el componente está dividido en definiciones base y específicas del tipo, los tipos de componente compatibles están representados mediante oneOf y el manejo posterior de las propiedades sigue siendo explícito.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

CDX 2.0

after

the current component should be split in

  • baseComponent - core properties of a component
  • serviceComponent - inherit from baseComponent and add service-specific properties and requirements
  • softwareComponent - inherit from baseComponent and add {application,framework,library,...}-specific properties and requirements
  • hardwareComponent - inherit from baseComponent and add service-specific properties and requirements
  • fileComponent - inherit from baseComponent and add file-specific properties and requirements
  • dataComponent - inherit from baseComponent and add data-specific properties and requirements
  • ... and so on - for each component type

I would even put the baseComponent, serviceComponent, etc ... under /$defs/component/$defs/,
not under /$defs/

after that split, the current component becomes a oneOf ala

{
  "$defs": {
    "component" : {
      "oneOf": [
         {"$ref": "#$defs/component/$defs/serviceComponent"}
         {"$ref": "#$defs/component/$defs/hardwareComponent"},
         {"$ref": "#$defs/component/$defs/...Component"},
       ],

       "$defs": {
         "baseComponent": {
           "$comment": "This is a mixin. make sure to use `unevaluatedProperties` in the usage downstream"
           "type": "object",
           "required": [ ... ] 
           "properties": {
             "type": { "enum": ["service", "device", ...] }, 
             "bom-ref": ...,
             "parties": ...
             "group": ...,
             "name": ...,
             "description": ...,
             "version": ...,
             "versionRange": ..., 
             "isExternal": ..., 
             ...
             "components": { "$ref": "#$defs/components" }
           }
         },
         "serviceComponent": {
           "allOf": [{ "$ref": "#/$defs/component/$defs/baseComponent" }],
           "titile": "Service Component",
           "type": "object",
           "required": ["endpoint", ...]
           "properties": {
             "type": { "enum": ["service"] },
             // service-specific properties
             "endpoint": ...,
             "isExternal": { "default": true }, 
             ...
             "components": { "$comment": "opportunity: make all items requiring a certain `type`" }
           },
           "unevaluatedProperties": false
         },
         "...Component": { ... },
       } 
    }
  }


}
Lenguaje dominante
XSLT
Estrellas
558
Forks
93
Merge medio
14 h 57 min
PR fusionados (30 d)
22

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de CycloneDX/specification

Todos los issues de CycloneDX/specification

Issues similares

Más issues de Data Engineering

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.