¿Qué hace differential-review?
Realiza una revisión diferencial de cambios de código (PRs, commits, diffs) centrada en seguridad. Adapta la profundidad del análisis al tamaño del código base, utiliza el historial de git para contexto, calcula el radio de propagación, verifica la cobertura de pruebas y genera informes completos en markdown. Detecta y previene automáticamente regresiones de seguridad.
Cómo funciona
- Recibe el diff: Acepta un diff de cambios de código (desde un PR, commit o archivo de parche).
- Analiza el contexto: Recupera el historial de git relevante para entender el propósito del cambio.
- Calcula el radio de propagación: Identifica qué partes del código base podrían verse afectadas.
- Revisa la cobertura de pruebas: Verifica si los cambios están cubiertos por pruebas existentes.
- Genera informe: Produce un informe detallado en markdown con hallazgos de seguridad, recomendaciones y métricas.
Uso
Desde la línea de comandos
# Revisar un diff desde un archivo
differential-review --diff changes.diff
# Revisar un PR específico (GitHub)
differential-review --pr 42 --repo owner/repo
# Usar un nivel de profundidad específico
differential-review --diff changes.diff --depth deep
Como agente de IA
Puedes invocar la habilidad desde un agente de IA configurando el contexto adecuado:
{
"skill": "trailofbits/differential-review",
"params": {
"diff": "<contenido del diff>",
"depth": "auto"
}
}
Plataformas soportadas
- GitHub: Integración con Pull Requests y Actions.
- GitLab: Compatible con Merge Requests.
- Bitbucket: Soporte para Pull Requests.
- CLI: Funciona de forma independiente con diffs locales.
Variables de entorno
| Variable | Descripción | Requerida |
|---|---|---|
GITHUB_TOKEN | Token de acceso para GitHub API | No, pero recomendada |
GITLAB_TOKEN | Token de acceso para GitLab API | No |
BITBUCKET_TOKEN | Token de acceso para Bitbucket API | No |
DIFFICULTY | Nivel de profundidad (auto, shallow, deep) | No |
Ejemplos
Revisión de seguridad básica
differential-review --diff my-changes.diff
Con cálculo de radio de propagación
differential-review --diff my-changes.diff --blast-radius
Limitaciones
- No ejecuta código, solo analiza estáticamente.
- Depende de la calidad del historial de git.
- El análisis profundo puede ser lento en repositorios muy grandes.
Licencia
Apache 2.0