Static Analysis et GitHub Actions

Présentation

Exécutez une tâche Datadog Static Analysis dans vos workflows GitHub Action. Cette action encapsule le Datadog Static Analyzer, l’invoque sur votre base de code et envoie les résultats vers Datadog.

Workflow

Créez un fichier dans .github/workflows pour exécuter une tâche Datadog Static Analysis.

Vous trouverez ci-dessous un exemple de fichier de workflow.

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

Vous devez définir vos clés API et d’application Datadog en tant que secrets dans votre référentiel GitHub, que ce soit au niveau de l’organisation ou du référentiel. Assurez-vous d’ajouter la portée code_analysis_read à votre clé d’application Datadog. Pour en savoir plus, consultez la section Clés API et d’application.

Assurez-vous de remplacer dd_site par le site Datadog que vous utilisez3.

Paramètres

Vous pouvez définir les paramètres suivants pour Static Analysis.

NomRôleObligatoireValeur par défaut
dd_api_keyVotre clé API Datadog. Cette clé est créée par votre organisation Datadog et doit être stockée en tant que secret.Oui
dd_app_keyVotre clé d’application Datadog. Cette clé est créée par votre organisation Datadog et doit être stockée en tant que secret.Oui
dd_siteLe site Datadog auquel envoyer les informations.Nondatadoghq.com
cpu_countDéfinir le nombre de CPU utilisés par l’analyseur.Non2
enable_performance_statisticsRécupérer les statistiques de temps d’exécution pour les fichiers analysés.Nonfalse
debugPermet à l’analyseur d’afficher des logs supplémentaires utiles pour le debugging. Pour activer, définir sur yes.Nonno
subdirectoryUn pattern de sous-répertoire ou glob (ou patterns de sous-répertoires délimités par des espaces) auquel l’analyse doit être limitée. Par exemple : “src” ou “src packages”.false
architectureL’architecture CPU à utiliser pour l’analyseur. Les valeurs prises en charge sont x86_64 et aarch64.Nonx86_64
diff_awareActiver le mode d’analyse différentielle.Nontrue
secrets_enabledActiver la détection de secrets (en bêta privée)Nonfalse

Remarques

  1. L’analyse différentielle analyse uniquement les fichiers modifiés par un commit lors de l’analyse des branches de fonctionnalité. L’analyse différentielle est activée par défaut. Pour désactiver l’analyse différentielle, définir le paramètre diff_aware de l’action GitHub sur false.
  2. L’analyse de secrets est en bêta privée. Pour activer l’analyse de secrets, contactez votre responsable de la réussite client Datadog.

Entrées obsolètes

Les entrées d’action suivantes sont obsolètes et n’ont plus aucun effet. Leur transmission émettra un avertissement.

  • dd_service
  • dd_env

Personnaliser les règles

Par défaut, Datadog Static Analyzer détecte les langages de votre base de code et utilise les ensembles de règles par défaut pour analyser votre base de code.

Pour spécifier et personnaliser les ensembles de règles, ajoutez un fichier static-analysis.datadog.yml au répertoire racine de votre référentiel pour définir les ensembles de règles à utiliser.

rulesets:
  - <nom-ensemble-règles>
  - <nom-ensemble-règles>

Consultez la documentation Datadog pour obtenir la liste complète des ensembles de règles.

Exemple pour Python

Voici un exemple pour les référentiels Python :

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

Autres actions GitHub utiles

Datadog Software Composition Analysis (SCA) offre également la possibilité d’analyser vos dépendances et de détecter les vulnérabilités et licences. Vous pouvez utiliser ce produit avec datadog-sca-github-action.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles :