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.

¿Quién puede utilizar esta característica?

El gráfico de dependencias está disponible para todos los repositorios.

Los resultados de la detección de dependencias que reporta GitHub pueden ser diferentes a aquellos que devuelven otras herramientas. Esto está justificado y es útil 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 información de forma automática 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 automáticamente 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.

Aun así, puede usar API de envío de dependencias para agregar dependencias al gráfico de dependencias de un proyecto, incluso si las dependencias no se declaran en un archivo de manifiesto o de bloqueo, como las dependencias que se resuelven cuando se compila un proyecto. Las dependencias enviadas a un proyecto mediante la API de envío de dependencias mostrarán qué detector se ha usado para su envío y cuándo se han enviado. Para obtener más información sobre API de envío de dependencias, consulta Uso de la 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 usa 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í, puede usar API de envío de dependenciaspara 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 API de envío de dependencias, consulta Uso de la 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 límites en el tamaño, el número y la ubicación de los archivos de manifiesto que procesará.

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

Los manifiestos de más de 10 MB de tamaño se omiten y no generarán Dependabot alerts.

De manera predeterminada, GitHub no procesará más de 600 manifiestos por repositorio. Dependabot no genera Dependabot alerts para manifiestos más allá de este límite, y Dependabot alerts puede comportarse de forma imprevisible si se supera este límite.

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

Mis dependencias no son correctas, ¿qué puedo hacer?

Si la tabla de dependencias del proyecto no representa con precisión los manifiestos del repositorio, puedes desencadenar una recompilación de su gráfico de dependencias.

En la pestaña Dependabot alerts del repositorio, haz clic en en la parte superior de la lista de alertas. Selecciona Actualizar Dependabot alerts en el menú desplegable. Esto pondrá en cola una tarea en segundo plano para procesar los manifiestos del repositorio, detectará las dependencias nuevas o modificadas y actualizará las alertas.

Note

Debes tener permiso para administrar las alertas de seguridad con el fin de actualizar el gráfico de dependencias de un repositorio. Consulta Administración de la configuración de seguridad y análisis para el repositorio para obtener información sobre cómo configurar este acceso. Para reducir aún más el potencial de abuso, la opción Actualizar Dependabot alerts solo se puede desencadenar una vez por hora por repositorio.

Al hacer clic en Actualizar Dependabot alerts solo se examinarán los archivos de manifiesto. Si el gráfico de dependencias también incluye información de dependencia en tiempo de compilación enviada mediante API de envío de dependencias, volver a ejecutar la acción o el proceso externo que genera y envía la información de dependencia también desencadenará una recompilación del gráfico de dependencias del repositorio. Para obtener más información sobre la API de envío de dependencias, consulta Uso de la Dependency submission API.

Si usas el envío automático de dependencias para Maven, la inserción de un commit que actualice el pom.xml del repositorio desencadenará la acción de envío automático para ejecutarse.

En todos los casos, la marca de tiempo de la parte superior de la lista de alertas indica la última vez que se creó el gráfico de dependencias.

Información adicional