CodeMender fournit trois modes d'analyse distincts via la commande cm find.
Chaque mode est conçu pour une étape spécifique du cycle de vie du développement logiciel, en équilibrant la vitesse, la portée et la profondeur.
Comparer les modes de recherche
Le tableau suivant compare les trois modes d'analyse cm find :
| Mode | Commande | Champ d'application cible | Durée d'exécution habituelle | Application idéale |
|---|---|---|---|---|
| Analyse standard | cm find PATH |
Répertoire spécifié | Durée d'exécution modérée | Découverte de développeurs locaux, vérifications rapides, examens exploratoires |
| Analyse des différences | cm find PATH --diff[=REF] |
Fichiers modifiés et fichiers dépendants (tels que les appelants et les appelés) | Durée d'exécution rapide | Pipelines CI/CD de demande d'extraction (GitHub Actions, Cloud Build), hooks de pré-commit |
| Analyse approfondie | cm find PATH --deep |
Dépôt entier | Durée d'exécution plus longue | Audits planifiés, préparation de la version, certifications de conformité (SOC 2, ISO) |
Analyse standard (par défaut)
Une analyse standard est le mode par défaut lorsque vous exécutez cm find sans fournir d'indicateurs d'analyse supplémentaires. Elle exécute une analyse autonome à session unique du répertoire cible spécifié. Lors de l'analyse, CodeMender découvre les fichiers sources, les hiérarchise en fonction des modèles de failles, effectue une analyse de sécurité initiale et signale les failles potentielles regroupées par gravité et par type.
Les exemples suivants montrent comment exécuter une analyse standard sur un répertoire cible :
# Scan a directory using the default model
cm find ./src
# Scan with a specific Gemini model
cm find ./src --model gemini-3.8-flash
Points forts
Une analyse standard fonctionne sans configuration et sans indicateurs ni paramètres supplémentaires. Elle équilibre la vitesse et la couverture avec une durée d'exécution modérée, et utilise un minimum de jetons et de calculs, ce qui la rend rentable pour le développement quotidien.
Compromis et limites
Une analyse standard a un rappel plus faible sur les grands codebases et peut ne pas explorer tous les fichiers des grands dépôts d'entreprise multi-packages, car elle fonctionne dans un contexte de session unique. Elle se concentre également principalement sur les modèles locaux dans les fichiers individuels, ce qui limite l'analyse inter-packages et peut manquer des failles couvrant des packages distants.
Cas d'utilisation
Utilisez une analyse standard dans les scénarios suivants :
- Exécutez une analyse sur votre machine locale avant de valider les modifications pour obtenir un retour rapide lors du développement local.
- Inspectez un dépôt nouvellement cloné ou un petit projet pour une évaluation initiale de son niveau de sécurité.
- Inspectez un sous-répertoire ou un module spécifique lorsque vous examinez un problème potentiel.
Analyse des différences
Une analyse des différences effectue une analyse Git diff pour les workflows de demande d'extraction et les pipelines CI/CD en inspectant les fichiers modifiés et ajoutés, en se concentrant sur les plages de lignes exactes (diff hunks) qui ont changé. En plus d'inspecter les lignes modifiées, elle effectue une analyse d'impact pour découvrir les fichiers non modifiés du dépôt qui appellent, importent ou dépendent des fonctions et des symboles modifiés. Cela permet de s'assurer que les modifications qui altèrent les contrats ou les signatures de fonction dans un fichier n'introduisent pas de failles dans les fichiers dépendants.
Lors de l'analyse, CodeMender isole automatiquement les failles préexistantes dans le code non modifié afin que les problèmes hérités n'entraînent pas l'échec de l'analyse ni ne bloquent la demande d'extraction. Il évalue ensuite les résultats par rapport à votre règle --fail-on et génère des résultats au format table, JSON ou SARIF v2.1.0.
Les exemples suivants montrent comment exécuter une analyse des différences par rapport aux modifications de la copie de travail, aux modifications préparées ou à une branche cible :
# Scan working copy changes versus HEAD
cm find . --diff
# Scan staged changes only (pre-commit)
cm find . --diff --staged
# Scan a pull request branch against the main branch in CI/CD
cm find . --diff=origin/main --format=sarif --output=results.sarif \
--fail-on=CRITICAL,HIGH
Pour les configurations de pipeline de bout en bout, consultez Intégrer à CI/CD.
Points forts
Une analyse des différences est rapide et déterministe. Elle se termine généralement en moins de deux minutes pour que les durées d'exécution du pipeline CI/CD restent courtes. Contrairement aux scanners de différences qui n'inspectent que les lignes modifiées, --diff inspecte les relations entre l'appelant et l'appelé pour détecter les régressions de sécurité et les violations de contrat entre les fichiers. Comme elle supprime les résultats dans le code non modifié, l'analyse ne bloque les demandes d'extraction que sur les problèmes introduits ou affectés par les modifications, ce qui évite les rapports bruyants et les échecs de compilation inutiles. Une analyse des différences émet également SARIF v2.1.0 pour une intégration directe dans les annotations GitHub Code Scanning et les tableaux de bord Cloud Build.
Compromis et limites
Une analyse des différences n'analyse le code que dans la zone affectée de la demande d'extraction et ne trouve pas les failles préexistantes dans les parties non modifiées du dépôt. Elle nécessite également un dépôt Git avec accès à la référence de base cible.
Cas d'utilisation
Utilisez une analyse des différences dans les scénarios suivants :
- Exécutez des vérifications automatisées sur chaque demande d'extraction dans les pipelines CI/CD tels que GitHub Actions, Cloud Build, GitLab CI ou Jenkins.
- Vérifiez que les modifications locales sont propres dans les hooks de pré-commit ou de pré-push avant de transférer le code vers le dépôt distant.
- Vérifiez que les fusions entre les branches de version n'introduisent pas de régressions.
Analyse approfondie
Une analyse approfondie est un mode d'analyse exhaustif conçu pour des audits de sécurité complets à l'échelle du dépôt. Elle audite les fichiers sources dans l'ensemble du
dépôt simultanément à l'aide de nœuds de calcul parallèles (configurés avec
--deep-workers, qui est défini par défaut sur 8 et accepte une plage de 1 à 16). Lorsqu'elle
découvre des résultats candidats, elle les valide et les confirme par rapport au
contexte de code environnant pour filtrer les faux positifs avant de générer des rapports.
Les exemples suivants montrent comment exécuter une analyse approfondie dans un dépôt :
# Run an exhaustive deep scan across the entire repository
cm find . --deep
# Tune concurrency and use the cyber-specialized security model
cm find . --deep --deep-workers=8 --model=gemini-3.8-flash-cyber
Points forts
Une analyse approfondie offre un rappel élevé et une découverte complète des failles dans les grands codebases d'entreprise, surpassant les analyses à session unique et utilisant la validation automatisée pour maintenir une haute précision. Elle est compatible avec plusieurs langues et est indépendante de la plate-forme. Elle fonctionne dans toutes les langues compatibles avec Gemini sans nécessiter de compilateurs, de configurations de compilation ni de fichiers de grammaire spécifiques à la langue. Elle optimise également l'utilisation des ressources en concentrant l'analyse sur le code de production et en minimisant la consommation de calculs et de jetons sur les fichiers hors production.
Compromis et limites
N'utilisez pas une analyse approfondie comme une vérification synchrone qui bloque les demandes d'extraction. Les analyses approfondies effectuent une analyse complète à l'échelle du dépôt. Par conséquent, elles nécessitent une durée d'exécution plus longue et une dépense de jetons plus élevée que les analyses standard ou des différences.
Cas d'utilisation
Utilisez une analyse approfondie dans les scénarios suivants :
- Exécutez des audits de sécurité planifiés quotidiennement ou hebdomadairement sur tous les dépôts de production.
- Effectuez un audit de sécurité complet avant les versions majeures ou les déploiements en production.
- Générez des preuves d'audit pour les examens de conformité et de certification SOC 2, ISO 27001, FedRAMP ou PCI-DSS.
- Établissez une base de référence de sécurité initiale lorsque vous intégrez un nouveau codebase à CodeMender.
Choisir un mode de recherche
Utilisez le tableau de référence suivant pour sélectionner le mode d'analyse adapté à votre workflow :
| Workflow ou environnement | Cas d'utilisation et objectif | Mode recommandé | Exemple de commande |
|---|---|---|---|
| Terminal local | Découverte rapide ou vérification de la confiance sur un module spécifique | Analyse standard | cm find ./src |
| Terminal local | Vérification avant commit des modifications préparées avant le transfert | Analyse des différences | cm find . --diff --staged |
| Pipeline CI/CD | Gating automatisé des demande d'extraction sur le code et les appelants modifiés | Analyse des différences |
cm find . --diff=origin/main --fail-on=CRITICAL,HIGH
|
| Pipeline ou audit planifié | Audits nocturnes, gates de pré-version, conformité SOC 2 | Analyse approfondie | cm find . --deep --deep-workers=8 |
Référence des options de commande par mode
Les tableaux suivants décrivent les options de ligne de commande compatibles avec chaque mode d'analyse.
Options courantes (tous les modes)
Les options suivantes s'appliquent à tous les modes d'analyse cm find :
| Option | Valeur par défaut | Description |
|---|---|---|
-c, --context TEXT |
"" |
Contexte supplémentaire pour guider l'agent d'analyse, tel que des notes d'architecture. |
--model MODEL_NAME |
gemini-3.8-flash |
Modèle Gemini à utiliser (gemini-3.8-flash,
gemini-3.8-flash-cyber).
|
-y, --yes |
false |
Ignorer toutes les invites de confirmation interactives. |
--unrestricted |
false |
Désactiver le bac à sable du système de fichiers. |
Options d'analyse des différences
Les options suivantes configurent les analyses cm find --diff :
| Option | Valeur par défaut | Description |
|---|---|---|
--diff[=REF] |
Désactivé |
Activer le mode de différences par rapport à la référence cible, telle que
origin/main ou HEAD~1. Sans
REF, la comparaison s'effectue par rapport à HEAD. Ne peut pas
être utilisé avec --deep.
|
--staged |
Désactivé |
Limiter les différences à l'index préparé uniquement (git diff --cached).
Nécessite --diff.
|
--diff-depth DEPTH |
1 |
Profondeur de parcours pour l'analyse d'impact (1 à 3, par défaut : 1 saut). |
--diff-workers COUNT |
4 |
Nombre de nœuds de calcul simultanés pour les jobs d'audit de demande d'extraction (1 à 16). |
--diff-max-neighbors COUNT |
10 |
Nombre maximal de fichiers appelants ou appelés dépendants à inspecter. |
--fail-on SEVERITIES |
CRITICAL,HIGH |
Gravités séparées par une virgule entraînant la sortie de cm find avec
le code 1.
|
--fail-on-truncation |
Désactivé | Quitter avec le code 1 si la découverte des voisins dépasse la limite. |
--format FORMAT |
table |
Format de sortie : table, json ou
sarif.
|
--output FILE |
Sortie standard | Écrire le rapport dans un fichier au lieu de la sortie standard. |
Options d'analyse approfondie
Les options suivantes configurent les analyses cm find --deep :
| Option | Valeur par défaut | Description |
|---|---|---|
--deep |
false |
Activer l'analyse approfondie exhaustive à l'échelle du dépôt. Ne peut pas être utilisé avec
--diff.
|
--deep-workers COUNT |
8 |
Nombre de nœuds de calcul simultanés pour l'analyse approfondie (1 à 16). |