CLI simple pour CodeGuru Reviewer qui fournit une commande en ligne pour scanner un clone local d'un référentiel et recevoir des résultats. Cette CLI enveloppe les commandes CLI AWS pour communiquer avec AWS CodeGuru Reviewer. L'utilisation de CodeGuru Reviewer peut générer des frais de mesure dans votre compte AWS. Voir le prix du réviseur de CodeGuru pour plus de détails.
Pour exécuter la CLI, nous devons avoir une version de Git, Java (par exemple, Amazon Corretto) et l'interface de ligne de commande AWS installée. Vérifiez que les deux applications sont installées sur notre machine en fonctionnant:
java -version
mvn --version
aws --version
git --version
Nous aurons également besoin d'identification de travail sur notre machine pour interagir avec notre compte AWS. En savoir plus sur la configuration des informations d'identification pour AWS ici: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html.
Vous pouvez toujours utiliser la CLI avec des informations d'identification d'administration , mais si vous souhaitez avoir un rôle spécifique pour utiliser la CLI, vos informations d'identification doivent avoir au moins les autorisations suivantes:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Action" : [
" codeguru-reviewer:ListRepositoryAssociations " ,
" codeguru-reviewer:AssociateRepository " ,
" codeguru-reviewer:DescribeRepositoryAssociation " ,
" codeguru-reviewer:CreateCodeReview " ,
" codeguru-reviewer:DescribeCodeReview " ,
" codeguru-reviewer:ListRecommendations " ,
" iam:CreateServiceLinkedRole "
],
"Resource" : " * " ,
"Effect" : " Allow "
},
{
"Action" : [
" s3:CreateBucket " ,
" s3:GetBucket* " ,
" s3:List* " ,
" s3:GetObject " ,
" s3:PutObject " ,
" s3:DeleteObject "
],
"Resource" : [
" arn:aws:s3:::codeguru-reviewer-cli-* " ,
" arn:aws:s3:::codeguru-reviewer-cli-*/* "
],
"Effect" : " Allow "
}
]
} Vous pouvez télécharger l'AWS-Codeguru-Cli à partir de la section des versions. Téléchargez la dernière version et ajoutez-le à votre PATH :
curl -OL https://github.com/aws/aws-codeguru-cli/releases/download/0.1.0/aws-codeguru-cli.zip
unzip aws-codeguru-cli.zip
export PATH=$PATH:./aws-codeguru-cli/bin
Maintenant, téléchargeons un exemple de projet (nécessite Maven):
git clone https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app
cd amazon-codeguru-reviewer-sample-app
mvn clean compile
Après avoir compilé, nous pouvons exécuter CodeGuru avec:
aws-codeguru-cli --root-dir ./ --build target/classes --src src --output ./output
open output/codeguru-report.html
Où --root-dir . Spécifie que la racine du projet que nous voulons analyser. L'option --build target/classses indique que les artefacts de construction sont situés sous ./target/classes et --src dit que nous voulons seulement analyser les fichiers source situés sous ./src . L'option --output ./output Spécifie où CodeGuru doit rédiger ses recommandations. Par défaut, CodeGuru produit un rapport JSON et HTML.
Vous pouvez fournir votre propre nom de godet à l'aide de l'option --bucket-name . Notez que, actuellement, le réviseur de CodeGuru prend uniquement en charge les noms de seaux qui commencent par le préfixe codeguru-reviewer- de la boîte. Si vous choisissez un modèle de dénomination différent pour votre seau, vous devez:
S3:GetObject sur le seau S3 à codeguru-reviewer.amazonaws.comKMS::Decrypt les autorisations à codeguru-reviewer.amazonaws.comCodeGuru Reviewer vous permet d'utiliser une clé gérée par le client (CMCMK) pour crypter le contenu du seau S3 qui est utilisé pour stocker et construire des artefacts, ainsi que toutes les métadonnées et recommandations produites par CodeGuru Reviewer. Tout d'abord, créez une clé gérée par le client en KMS. Vous devrez accorder à CodeGuru Reviewer l'autorisation de déchiffrer les artefacts avec cette clé en ajoutant la déclaration suivante à votre politique clé:
{
"Sid" : " Allow CodeGuru to use the key to decrypt artifacts " ,
"Effect" : " Allow " ,
"Principal" : {
"AWS" : " * "
},
"Action" : [
" kms:Decrypt " ,
" kms:DescribeKey "
],
"Resource" : " * " ,
"Condition" : {
"StringEquals" : {
"kms:ViaService" : " codeguru-reviewer.amazonaws.com " ,
"kms:CallerAccount" : [ Your AWS ACCOUNT ID ]
}
}
} Ensuite, activez le cryptage côté serveur pour le seau que vous utilisez avec CodeGuru Reviewer. Le nom du seau doit être codeguru-reviewer-cli-[YOUR ACCOUNT]-[YOUR REGION] , sauf si vous avez fourni un nom personnalisé. Pour le chiffrement, utilisez la clé KMS que vous avez créée à l'étape précédente.
Vous pouvez maintenant analyser un référentiel en fournissant l'ID de clé KMS (pas l'alias). Par exemple:
aws-codeguru-cli -r ./ -kms 12345678-abcd-abcd-1234-1234567890ab
La première fois que vous analysez un référentiel avec le CodeGuru Reviewer CLI, une nouvelle association sera créée et la clé fournie sera associée à ce référentiel. Les analyses ultérieures de la fourrure, vous n'avez pas besoin de fournir à nouveau la clé. Notez que vous pouvez commencer à utiliser une clé après que le référentiel est déjà associé. Si vous souhaitez passer de ne pas utiliser de touche pour utiliser une clé, vous devez d'abord supprimer l'association existante dans la console AWS, puis déclencher un nouveau scan avec la CLI où vous fournissez la clé.
Le réviseur de codeguru CLI recherche un fichier nommé .codeguru-ignore.yml où les utilisateurs peuvent spécifier des critères en fonction des recommandations devraient être supprimées. Les recommandations supprimées ne seront pas retournées par la CLI, mais apparaîtront toujours dans la console AWS.
Le fichier .codeguru-ignore.yml peut utiliser l'un des critères de filtre indiqués ci-dessous:
version : 1.0 # The Version field is mandatory. All other fields are optional.
# The CodeGuru Reviewer CLI produces a recommendations.json file which contains deterministic IDs for each
# recommendation. This ID can be excluded so that this recommendation will not be reported in future runs of the
# CLI.
ExcludeById :
- ' 4d2c43618a2dac129818bef77093730e84a4e139eef3f0166334657503ecd88d '
# We can tell the CLI to exclude all recommendations below a certain severity. This can be useful in CI/CD integration.
ExcludeBelowSeverity : ' HIGH '
# We can exclude all recommendations that have a certain tag. Available Tags can be found here:
# https://docs.aws.amazon.com/codeguru/detector-library/java/tags/
# https://docs.aws.amazon.com/codeguru/detector-library/python/tags/
ExcludeTags :
- ' maintainability '
# We can also exclude recommendations by Detector ID. Detector IDs can be found here:
# https://docs.aws.amazon.com/codeguru/detector-library
ExcludeRecommendations :
# Ignore all recommendations for a given Detector ID
- detectorId : ' java/[email protected] '
# Ignore all recommendations for a given Detector ID in a provided set of locations.
# Locations can be written as Unix GLOB expressions using wildcard symbols.
- detectorId : ' java/[email protected] '
Locations :
- ' src/main/java/com/folder01/*.java '
# Excludes all recommendations in the provided files. Files can be provided as Unix GLOB expressions.
ExcludeFiles :
- tst/**
Seul le champ version est obligatoire dans le fichier .codeguru-ignore.yml . Toutes les autres entrées sont facultatives et la CLI comprendra toute combinaison de ces entrées.
Un exemple d'un tel fichier de configuration peut être trouvé ici.
Vous pouvez utiliser cette CLI pour exécuter CodeGuru à l'intérieur de votre pipeline CI / CD. Voir cette action comme un exemple. Pour utiliser la CLI en CI / CD, vous avez besoin d'identification de travail. Vous pouvez utiliser ce modèle CDK pour configurer les informations d'identification OIDC pour les actions GitHub.
Ensuite, vous pouvez exécuter le CLI en mode non interactif à l'aide de l'option --no-prompt , et utiliser l'option --fail-on-recommendations pour renvoyer un code de sortie non nul si des recommandations sont signalées. Vous pouvez spécifier un profil région et AWS à l'aide des options --region et --profile au besoin:
aws-codeguru-cli --region [BUCKET REGION] --no-prompt --fail-on-recommendations -r ./ ...
Obtenir la plage de validation fonctionne différemment pour différents fournisseurs CI / CD. Par exemple, GitHub fournit les validations pertinentes via des variables d'environnement telles que ${{ github.event.before }} et ${{ github.event.after }} .
Un exemple de bout en bout est fourni dans cette action.
Pour construire le projet, vous avez besoin de Java 8 ou version ultérieure. Découvrez ce référentiel et exécutez:
./gradlew installDist
Et maintenant, exécutez votre construction locale avec:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
Vous pouvez exécuter un auto-test avec:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli -r . -s src/main/java -b build/libs -c HEAD^:HEAD
Voir contribuer pour plus d'informations.
Ce projet est concédé sous licence Apache-2.0.