Sobre el gráfico de dependencias
Para obtener una introducción al gráfico de dependencias, consulta Acerca del gráfico de dependencias.
Creación del gráfico de dependencias
Si el gráfico de dependencias está habilitado, examinará el repositorio para ver los archivos de manifiesto que usan ecosistemas de paquetes de lenguaje de programación. Cuando encuentres uno de los archivos de manifiesto admitidos, analizará el archivo y creará una representación de su contenido, incluido el nombre y la versión de cada paquete. Esto se denomina "análisis estático".
Algunos archivos definen explícitamente qué versiones se usan para todas las dependencias directas y indirectas. Bloquean las versiones del paquete a las incluidas en la compilación y permiten a Dependabot encontrar versiones vulnerables tanto en dependencias directas como indirectas. Si usas estos formatos, el gráfico de dependencias es más preciso, por lo que se muestran en la columna "Archivos recomendados" de la tabla "Ecosistemas de paquetes admitidos". Consulta Ecosistemas de paquetes admitidos.
Ecosistemas de paquetes admitidos a través de acciones de envío de dependencias
Además del análisis estático y el envío automático del gráfico de dependencias, puedes usar API de envío de dependencias para agregar dependencias de compilación desde el administrador de paquetes o agregar dependencias de los administradores de paquetes y los ecosistema de su elección al gráfico de dependencias, incluso si el ecosistema no está en la tabla "Ecosistemas de paquetes admitidos". La información de dependencia de estas dependencias enviadas fluirá, a su vez, hacia Dependabot updates y Dependabot alerts.
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.
Ecosistemas de paquetes compatibles
Administrador de paquetes | Idiomas | Dependencias transitivas estáticas | Envío automático de dependencias | Archivos recomendados | Archivos adicionales |
---|---|---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml | ||
Composer | PHP | composer.lock | composer.json | ||
NuGet | Lenguajes de .NET (C#, F#, VB), C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | packages.config | ||
Flujos de trabajo de GitHub Actions | YAML | .yml , .yaml | |||
Módulos de Go | Go | go.mod | |||
Gradle | Java | ||||
Maven | Java, Scala | pom.xml | |||
npm | JavaScript | package-lock.json | package.json | ||
pip | Python | requirements.txt , pipfile.lock | pipfile , setup.py | ||
pnpm | JavaScript | pnpm-lock.yaml | package.json | ||
pub | Dart | pubspec.lock | pubspec.yaml | ||
Poetry | Python | poetry.lock | pyproject.toml | ||
RubyGems | Ruby | Gemfile.lock | Gemfile , *.gemspec | ||
Administrador de paquetes de Swift | Swift | Package.resolved | |||
Yarn | JavaScript | yarn.lock | package.json |
Nota:
- Si enumera las dependencias de Python dentro de un archivo
setup.py
, es posible que no podamos analizar y enumerar cada una de las dependencias del proyecto. - Los flujos de trabajo de GitHub Actions se deben ubicar en el directorio
.github/workflows/
de un repositorio para que se reconozcan como manifiestos. Las acciones o flujos de trabajo a los que se hace referencia mediante la sintaxisjobs[*].steps[*].uses
ojobs.<job_id>.uses
se analizarán como dependencias. Para más información, consulta Sintaxis del flujo de trabajo para GitHub Actions. - Dependabot solo creará Dependabot alerts para los datos de GitHub Actions que usan el control de versiones semántico. No recibirás alertas para una acción vulnerable que use el control de versiones SHA. Si usas GitHub Actions con el control de versiones SHA, se recomienda habilitar Dependabot version updates para el repositorio u organización para mantener las acciones que usas actualizadas a las versiones más recientes. Para más información, consulta Acerca de las alertas Dependabot y Acerca de las actualizaciones a la versión del Dependabot.
Desduplicación de manifiestos
El gráfico de dependencias puede obtener información sobre las dependencias de tres maneras diferentes: análisis estáticos, envío automático y envío de usuario. Un repositorio puede tener varios métodos configurados, lo que hace que el mismo manifiesto de paquete se examine varias veces, potencialmente con salidas diferentes de cada examen. El gráfico de dependencias usa lógica de desduplicación para analizar las salidas y priorizar la información más precisa para cada archivo de manifiesto.
El gráfico de dependencias muestra solo una instancia de cada archivo de manifiesto mediante las siguientes reglas de precedencia.
- Los envíos de usuario tienen la prioridad más alta, ya que normalmente se crean durante las compilaciones de artefactos que tienen la información más completa.
- Si hay varias instantáneas manuales de diferentes detectores, se ordenan alfabéticamente por correlación y la primera usada.
- Si hay dos correladores con el mismo detector, se combinan las dependencias resueltas. Para obtener más información sobre los correladores y detectores, consulta Puntos de conexión de la API de REST para el envío de dependencias.
- Los envíos automáticos tienen la segunda prioridad más alta, ya que también se crean durante las compilaciones de artefactos, pero los usuarios no los envían.
- Los resultados de análisis estáticos se usan cuando no hay otros datos disponibles.