Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer détecte les problèmes dans vos codes Java et Python et propose des recommandations pour les améliorer. Par exemple, CodeGuru Reviewer détecte les failles de sécurité, les secrets, les fuites de ressources, les problèmes de simultanéité, la validation incorrecte des entrées et les écarts par rapport aux bonnes pratiques d'utilisation des API AWS et des SDK. Pour commencer à réviser le code, vous pouvez associer vos référentiels de code existants sur GitHub, GitHub Enterprise, Bitbucket ou AWS CodeCommit avec CodeGuru.

Détection de sécurité

CodeGuru Reviewer vous aide à améliorer la sécurité de votre code et fournit des recommandations basées sur des vulnérabilités communes (OWASP Top 10) et sur les bonnes pratiques de sécurité interne AWS. Il utilise le raisonnement automatisé pour analyser le flux de données depuis la source jusqu'au récepteur et au travers de multiples fonctions pour détecter les failles de sécurité difficiles à repérer. Le détecteur de sécurité CodeGuru Reviewer prend en charge Java 8 à Java 11 et Python 3 et versions ultérieures. Vous pouvez l'utiliser pour détecter les problèmes de sécurité de code ci-dessous :

  1. OWASP Top 10 : permet de vérifier les principaux risques de sécurité des applications web, comme le contrôle d'accès interrompu, l'attaque par injection et les problèmes d'intégrité de données
  2. Bonnes pratiques de sécurité des API AWS: permettent de vérifier la sécurité des API pour Amazon Elastic Compute Cloud et AWS Key Management Service
  3. Bonnes pratiques de sécurité AWS (le chiffrement AWS est mis en place selon les normes Amazon) : permettent d'appliquer l'expertise de sécurité interne d'Amazon à votre code
  4.  Bonnes pratiques de bibliothèque cryptographique Java : permettent de vérifier si Javax.Crypto.Cipher est initialisé et appelé correctement
  5. Bonnes pratiques de bibliothèque cryptographique Python : permettent de vérifier si des versions correctes des algorithmes de hachage et de cryptographie Python sont utilisées
  6. Sécurité des applications web : vous pouvez vérifier les problèmes de sécurité liés aux applications, comme les injections LDAP
  7. Fuites d'informations sensibles : permet de vérifier toute fuite d'informations personnelles ou sensibles (comme l'enregistrement des informations d'identification des comptes AWS en texte clair)
  8. Validation des entrées : vérifications des données mal formées ou malveillantes provenant de sources non fiables
  9. Injection de journal : protège contre les vulnérabilités de type Log4j en vérifiant que le code empêche correctement les entrées de journal falsifiées ou l'injection de contenu malveillant dans les journaux

Vous pouvez accéder à la console Amazon CodeGuru et appeler une analyse de sécurité sur l'ensemble de votre référentiel ou effectuer une intégration CI/CD via GitHub Actions.

Image under Security detection

Détection de secrets

Le détecteur de secrets CodeGuru Reviewer utilise l'analyse basée sur le machine learning pour vous aider à détecter des secrets qui sont codés en dur dans votre référentiel ou vos fichiers de configuration, dont les mots de passe, les clés d'API, les clés SSH, les jetons d'accès, les chaînes de connexion aux bases de données et les jetons web JSON. Le détecteur de secrets, inclus dans CodeGuru Reviewer, est un système automatisé qui vérifie le code de ces secrets et fournit des étapes pointer-cliquer pour les sécuriser à l'aide d'AWS Secrets Manager. Il peut également identifier des clés spécifiques générées par les fournisseurs d'API les plus communs, dont AWS, Atlassian, GitHub, Salesforce, HubSpot et Stripe. Consultez la documentation pour voir la liste de secrets.

Détection de secrets

Qualité du code

CodeGuru Reviewer identifie les problèmes de qualité du code et donne à votre équipe de développement les moyens de maintenir un niveau élevé de normes de codage dans le processus de développement logiciel :

  • Bonnes pratiques AWS : utilisation correcte des API AWS (par exemple, sondage, pagination) 
  • Bonnes pratiques Java et Python : utilisation correcte des fonctionnalités populaires des langages et des bibliothèques Java et Python
  • Simultanéité : détecte une synchronisation manquante qui entraîne une fonctionnalité incorrecte ou une synchronisation excessive, ce qui entraîne des problèmes de performances 
  • Incohérence : analyse les modèles de codage dans un référentiel et aide à détecter lorsqu'il y a une anomalie par rapport au modèle standard 
  • Maintenabilité du code : identifie les complexités du code ou toute caractéristique du code source qui le rend plus difficile à maintenir
  • Fuites de ressources : manipulation correcte des ressources (par exemple, libération des connexions aux bases de données)
  • Bonnes pratiques de codage courantes : vérification des paramètres et recherche des lignes de code qui pourraient créer des bugs (par exemple, oublier de vérifier si un objet est nul avant de le définir, réaffecter un objet synchronisé ou oublier d'initialiser une variable le long d'un chemin d'exception)
  • Clonage de code : identifie le code dupliqué qui pourrait être consolidé pour une meilleure maintenance du code
Qualité du code

Recommandations automatisées

Il existe deux sortes de révision de code que CodeGuru Reviewer peut réaliser pour fournir des recommandations : les révisions de code progressives ou du référentiel complet 

Révisions de code progressives 
Les révisions de code progressives sont créées automatiquement lorsque vous créez une requête pull d'un référentiel associé. Ces révisions de code analysent les modifications de code dans une requête pull. CodeGuru Reviewer fournit également un tableau de bord de requêtes pull qui répertorie les informations pour toutes les révisions de code (par exemple, le statut de la révision du code, le nombre de lignes de code analysées et le nombre de recommandations). La tarification mensuelle standard pour CodeGuru Reviewer comprend toutes les analyses de révision de code progressive pour les référentiels intégrés.

Recommandations automatisées

Révisions de code du référentiel complet
Avec CodeGuru Reviewer, vous pouvez obtenir des recommandations de révision de code alimentées par le ML pour toutes les lignes de code dans les référentiels associés sous une branche de code spécifiée. Vous pouvez exécuter des analyses complètes du référentiel pour obtenir des recommandations de révision de code lors de la migration du code, l'audit préalable du code et les initiatives de maintenance périodique du code. Dans la console CodeGuru, vous pouvez accéder à l'onglet « Repository Analysis » (Analyse du référentiel) dans la page « Code Reviews» (Révisions de code) pour initier une nouvelle analyse sur un référentiel complet. Deux analyses de référentiel complet sont incluses dans le nouveau modèle de tarification basé sur la taille du référentiel. Pour plus d'informations, consultez la page Tarification CodeGuru.

Révisions de code du référentiel complet
Révisions de code

Vous pouvez afficher toutes les révisions de code dans la page de la console « Code reviews» (Révisions de code) (section Reviewer). Cette page répertorie toutes les informations relatives à la révision du code, telles que le statut de la révision du code, le référentiel, le nombre de recommandations, etc. Vous pouvez cliquer sur une révision de code terminée pour consulter les détails des recommandations, rechercher des recommandations et voir le nombre de lignes analysées. Vous pouvez également donner votre avis sur les recommandations de CodeGuru en cliquant sur le pouce levé ou le pouce baissé situé sous la recommandation.

Intégration CI/CD avec GitHub Actions

L'expérience CI/CD pour CodeGuru Reviewer vous permet d'invoquer l'analyse de la qualité du code et de la sécurité comme une étape dans le flux de travail CI à l'aide de GitHub Actions. Vous pouvez le configurer pour qu'il s'exécute et fournisse des recommandations sur un pull, un push ou une exécution programmée de votre pipeline. Après avoir appelé une analyse de CodeGuru Reviewer via CI/CD, vous pouvez consulter la qualité de votre code et des recommandations de sécurité dans la console CodeGuru Reviewer ou dans l'interface utilisateur de GitHub. Avec l'intégration CI/CD, vous pouvez surveiller en permanence la qualité et la sécurité de votre code, ce qui permet de ne pas manquer de recommandation. Dans CodeGuru Reviewer, vous pouvez utiliser GitHub Action situé dans GitHub Marketplace, pour exécuter des évaluations de sécurité et recevoir des recommandations directement dans l'interface utilisateur GitHub. Une fois l'outil intégré, les recommandations s'affichent directement dans l'onglet GitHub Security.

Détection de sécurité

Les recommandations sont également fournies dans la requête pull et dans la console AWS. En cliquant sur une recommandation dans GitHub, vous obtenez plus de détails sur le résultat, notamment le problème que cela crée dans votre application, le chemin de résolution, toute éventuelle liste CWE (Common Weakness Enumerations) associée et sa sévérité.

Requêtes pull

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler recherche constamment à optimiser les performances de l'application, en identifiant vos lignes de code les plus « onéreuses » et en recommandant des manières de les corriger en vue de réduire l'utilisation de la CPU, de diminuer les coûts de calcul et d'améliorer les performances de l'application. Par exemple, CodeGuru Profiler est capable d'identifier les situations dans lesquelles votre application consomme une capacité de CPU excessive sur une routine de journalisation, au lieu d'exécuter une logique applicative de base.

Profilage permanent d'applications en production

CodeGuru Profiler est conçu pour s'exécuter continuellement en production avec une consommation minimale de ressources, ce qui vous permet de le laisser activé en permanence avec un impact minimal sur les performances des applications. Il vous permet de profiler et de dépanner votre application en utilisant des modèles de trafic client réel et de découvrir facilement les problèmes de performance. Grâce aux données du profileur et aux recommandations alimentées par le ML, vous pouvez identifier et corriger les problèmes de performance de vos applications en production. CodeGuru Profiler fournit également un résumé du heap, vous permettant d'identifier les objets qui consomment de la mémoire à tout moment donné.

Comprendre le comportement d'exécution des applications

CodeGuru Profiler analyse en permanence l'utilisation de l’unité centrale par l'application, l’utilisation du heap et les caractéristiques de latence pour vous montrer où vous passez le plus de cycles ou de temps dans votre application. L’analyse de l’unité centrale et de la latence est présentée dans un graphique de type flamme interactif qui vous aide à comprendre facilement quels chemins de code consomment le plus de ressources, à vérifier que votre application fonctionne normalement et à découvrir les domaines qui peuvent être optimisés davantage.

Anomalie de traitement des images
 Cliquer pour agrandir

Les graphiques de type flamme permettent de visualiser les performances de votre application en regroupant les échantillons de traces de pile sur une période afin de produire une image précise du comportement de l'application pendant cette période. Vous pouvez utiliser un graphique de type flamme pour comprendre les chemins qui consomment le plus de ressources, vérifier que votre application fonctionne normalement et détecter les domaines qui peuvent être optimisés davantage. Par exemple, la méthode UploadGreyImage coûte 134 868 USD par an et consomme 10,22 % de temps réel, donc si vous ne vous attendiez pas à ce qu'elle prenne autant de temps, vous devez enquêter.

Résumé du heap

L’analyse de l’utilisation du heap est une représentation visuelle des objets alloués dans votre heap, que ce soient vos propres classes de domaines ou celles détenues par des bibliothèques ou le kit JDK.

Découvrir les anomalies et les problèmes courants dans les performance de votre application
 Cliquer pour agrandir

Le résumé du heap permet de visualiser tous les objets alloués dans le heap pour une période donnée ainsi que leur taille, leur nombre et leurs séries temporelles. Par exemple, dans le graphique des séries temporelles, vous pouvez voir que, à 16:20, deux objets commencent à grossir sensiblement (java.util.LinkedHashMap$Entry et java.land.UUID), ce qui révèle une fuite potentielle de mémoire. Si cette tendance à la hausse se poursuit sans autre vérification, elle pourrait mener à une saturation de la mémoire.

Recommandations intelligentes

CodeGuru Profiler identifie automatiquement les problèmes de performance dans votre application et adresse des recommandations alimentées par le ML concernant la façon d'y remédier. Ces recommandations vous aident à identifier et à optimiser les méthodes les plus onéreuses ou les plus gourmandes en ressources au sein du code sans que vous ayez à être un expert de l'ingénierie de performance. Ces optimisations vous aident à réduire le coût de votre infrastructure, à réduire la latence et à améliorer votre expérience globale d'utilisateur final.

Recommandations intelligentes
 Cliquer pour agrandir

Lorsqu'il détecte des possibilités d'optimiser les performances de votre application, Amazon CodeGuru Profiler explique pourquoi il recommande une modification, la raison du problème, la manière de le résoudre et à quel endroit du code ce problème affecte votre application. Cette recommandation montre que cette ligne de code onéreuse vous coûte 182,160 USD par an et que son impact représente 2,97 % de l’utilisation de votre CPU. Si vous suivez les étapes de résolution proposées, vous pourrez économiser jusqu'à 182,160 USD.

Détection des anomalies

Amazon CodeGuru Profiler analyse en permanence les profils de votre application en temps réel et détecte les anomalies dans son comportement et de ses méthodes. Chaque anomalie est suivie dans le rapport de recommandation de la console CodeGuru Profiler, et vous pouvez voir les séries chronologiques du comportement de la latence de la méthode au fil du temps, les anomalies étant clairement mises en évidence. Si cela est configuré, une notification Amazon SNS est également envoyée lorsqu'une nouvelle anomalie est détectée.

Détection des anomalies
 Cliquer pour agrandir
Tarification d'Amazon CodeGuru
En savoir plus sur la tarification d'Amazon CodeGuru

Consultez la page de tarification d'Amazon CodeGuru.

En savoir plus 
Créer gratuitement un compte
Créer gratuitement un compte

Obtenez un accès instantané à l'offre gratuite d'AWS. 

S'inscrire 
Commencez à créer dans la console
Commencez à créer dans la console

Commencez à créer avec Amazon CodeGuru dans AWS Management Console.

Se connecter