Static Analysis y acciones de GitHub

Información general

Ejecuta un job de Datadog Static Analysis en tus procesos de acción de GitHub. Esta acción envuelve el Datadog Static Analyzer, lo invoca contra tu código base y sube los resultados a Datadog.

Flujo de trabajo

Crea un archivo en .github/workflows para ejecutar un job de Datadog Static Analysis.

A continuación, se muestra un ejemplo de archivo de proceso.

on: [push]

jobs:
  check-quality:
    runs-on: ubuntu-latest
    name: Datadog Static Analyzer
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Check code meets quality standards
        id: datadog-static-analysis
        uses: DataDog/datadog-static-analyzer-github-action@v1
        with:
          dd_app_key: ${{ secrets.DD_APP_KEY }}
          dd_api_key: ${{ secrets.DD_API_KEY }}
          dd_site: "datadoghq.com"
          cpu_count: 2
          enable_performance_statistics: false

Debes establecer tus claves de API y de aplicación de Datadog como secretos en tu repositorio de GitHub, ya sea a nivel de organización o de repositorio. Asegúrate de añadir el contexto code_analysis_read a tu clave de aplicación de Datadog. Para más información, consulta Claves de API y de aplicación.

Asegúrate de sustituir dd_site por el sitio de Datadog que estés utilizando3.

Entradas

Puedes configurar los siguientes parámetros para Static Analysis.

NombreDescripciónObligatorioValor por defecto
dd_api_keyTu clave de API de Datadog. Esta clave la crea tu organización de Datadog y debe guardarse como secreto.
dd_app_keyTu clave de aplicación de Datadog. Esta clave la crea tu organización de Datadog y debe guardarse como secreto.
dd_siteEl sitio de Datadog al que enviar la información.Nodatadoghq.com
cpu_countEstablece el número de CPUs utilizadas por el analizador.No2
enable_performance_statisticsObtener las estadísticas de tiempo de ejecución de los archivos analizados.Nofalse
debugPermite al analizador imprimir logs adicionales útiles para la depuración. Para activarlo, establece yes.Nono
subdirectoryUn patrón de subdirectorio o glob (o patrones de subdirectorio delimitados por espacios) al que debe limitarse el análisis. Por ejemplo: “src” o “paquetes src”.false
architectureLa arquitectura de CPU a utilizar para el analizador. Los valores admitidos son x86_64 y aarch64.Nox86_64
diff_awareActiva el modo de escaneo diferenciado.Notrue
secrets_enabledActivar la detección de secretos (en función beta privada)Nofalse

Notas

  1. El análisis diferenciado sólo analiza los archivos modificados por una confirmación cuando se analizan ramas de características. Esta opción está activada por defecto. Para desactivar el análisis diferenciado, establece el parámetro de la acción de GitHub diff_aware en false.
  2. El escaneado de secretos está en fase beta privada. Para activar la exploración de secretos, ponte en contacto con tu asesor de clientes en Datadog.

Entradas obsoletas

Las siguientes entradas de acción han sido obsoletas y ya no tienen ningún efecto. Si se introducen, se emitirá una advertencia.

  • dd_service
  • dd_env

Personalización de reglas

Por defecto, Datadog Static Analyzer detecta los lenguajes de tu código y utiliza las reglas por defecto para analizar tu código base.

Para especificar y personalizar los conjuntos de reglas, añade un archivo static-analysis.datadog.yml al directorio raíz de tu repositorio para definir qué conjuntos de reglas utilizar.

rulesets:
  - <ruleset-name>
  - <ruleset-name>

Consulta la documentación de Datadog para obtener una lista completa de los conjuntos de reglas.

Ejemplo para Python

He aquí un ejemplo para los repositorios basados en Python:

rulesets:
  - python-code-style
  - python-best-practices
  - python-inclusive

Otras acciones útiles de GitHub

Datadog Software Composition Analysis (SCA) también ofrece la posibilidad de escanear tus dependencias y detectar vulnerabilidades y licencias. Puedes utilizar este producto con la datadog-sca-github-action.

Referencias adicionales

Más enlaces, artículos y documentación útiles: