Skip to main content

Solución de problemas del gráfico de dependencias

Si la información de la dependencia que se notifica en el gráfico de dependencias no es lo que esperabas, debes tener en cuenta varias cuestiones y comprobar diversos elementos.

Los resultados de la detección de dependencias que reporta GitHub Enterprise Cloud pueden ser diferentes a aquellos que devuelven otras herramientas. Esto está justificado y es útil el entender cómo GitHub determina las dependencias para tu proyecto.

¿Acaso la gráfica de dependencias solo encuentra depedencias en los manifiestos y lockfiles?

El gráfico de dependencias incluye de forma automática información sobre las dependencias que se declaran explícitamente en el entorno. Esto es, dependencias que se especifican en un manifiesto o en un lockfile. La gráfica de dependencias también incluye dependencias transitivas generalmente, aún cuando no se especifican en un lockfile, mediante la revisión de las dependencias de las dependencias en un archivo de manifiesto.

El gráfico de dependencias no incluye de forma automática dependencias "sueltas". Las dependencias "sueltas" son archivos individuales que se copian de otra fuernte y se revisan directamente en el repositorio o dentro de un archivo (tal como un archivo ZIP o JAR) en ves de que se referencien en un manifiesto de paquete de administrador o en un lockfile.

Sin embargo, puede usar la API de envío de dependencias (beta) para agregar dependencias al gráfico de dependencias de un proyecto, incluso si las dependencias no se declaran en un archivo de manifiesto o bloqueo, como las dependencias resueltas cuando se compila un proyecto. Las dependencias enviadas a un proyecto mediante Dependency submission API (beta) mostrarán qué detector se ha usado para su envío y cuándo se enviaron. Para obtener más información sobre la API de envío de dependencias, consulta "Uso de Dependency submission API".

Comprobación: ¿La dependencia que falta es para un componente sin especificar en el manifiesto o archivo de bloqueo del repositorio?

¿Acaso la gráfica de dependencias detecta dependencias que se especifican utilizando variables?

La gráfica de dependencias analiza los manifiestos mientras se suben a GitHub. Por lo tanto, la gráfica de dependencias no tiene acceso al ambiente de compilación del proyecto, así que no puede resolver variables que se utilizan dentro de los manifiestos. Si usas variables dentro de un manifiesto para especificar el nombre, o más comúnmente la versión de una dependencia, dicha dependencia no se incluirá de forma automática en el gráfico de dependencias.

Aun así, puedes usar la API de envío de dependencias (beta) para agregar dependencias al gráfico de dependencias de un proyecto, incluso si las dependencias solo se resuelven cuando se compila un proyecto. Para obtener más información sobre la API de envío de dependencias, consulta "Uso de Dependency submission API."

Comprobación: ¿Falta la dependencia declarada en el manifiesto mediante una variable para su nombre o versión?

¿Existen límites que afecten los datos de la gráfica de dependencias?

Sí, el gráfico de dependencias tiene una categoría de límites:

  1. Límites de procesamiento

    Estos afectan la gráfica de dependencias que se muestra dentro de GitHub y también previenen la creación de Dependabot alerts.

    Los manifiestos mayores a 0.5 MB solo se procesan para las cuentas empresariales. En el caso de otras cuentas, los manifiestos mayores a 0.5 MB se ingoran y no crearán Dependabot alerts.

    De manera predeterminada, GitHub no procesará más de 150 manifiestos por repositorio. Las Dependabot alerts no se crean para los manifiestos más allá de este límite. Si necesitas incrementar el límite, contacta a Soporte técnico de GitHub.

    Los archivos de manifiesto almacenados en directorios con nombres que suelen usarse para dependencias delegadas no se procesan. Un directorio cuyo nombre coincida con las siguientes expresiones regulares se considera un directorio de dependencias delegadas:

    • (3rd|[Tt]hird)[-_]?[Pp]arty/
    • (^|/)vendors?/
    • (^|/)[Ee]xtern(als?)?/
    • (^|/)[Vv]+endor/

    Ejemplos:

    • third-party/dependencies/dependency1
    • vendors/dependency1
    • /externals/vendor1/dependency1

Información adicional