Einfacher CLI-Wrapper für Codeguru-Gutachter, der einen Ein-Line-Befehl zum Scannen eines lokalen Klons eines Repositorys bietet und Ergebnisse empfängt. Diese CLI wickelt die AWS -CLI -Befehle, um mit AWS Codeguru Reviewer zu kommunizieren. Die Verwendung von Codeguru -Rezensent kann Messgebühren in Ihrem AWS -Konto generieren. Weitere Informationen finden Sie in den Preisen von Codeguru Reviewer.
Um die CLI auszuführen, müssen wir eine Version von Git, Java (z. B. Amazon Corretto) und der AWS -Befehlszeilenschnittstelle installiert haben. Stellen Sie sicher, dass beide Anwendungen auf unserem Computer durch Ausführen installiert sind:
java -version
mvn --version
aws --version
git --version
Wir werden auch Arbeitsanmeldeinformationen auf unserer Maschine benötigen, um mit unserem AWS -Konto zu interagieren. Weitere Informationen zum Einrichten von Anmeldeinformationen für AWS finden Sie hier: https://docs.amazon.com/cli/latest/userguide/cli-chap-configure.html.
Sie können die CLI jederzeit mit Admin -Anmeldeinformationen verwenden. Wenn Sie jedoch eine bestimmte Rolle für die CLI haben möchten, müssen Ihre Anmeldeinformationen mindestens die folgenden Berechtigungen haben:
{
"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 "
}
]
} Sie können den AWS-Codeguru-Cli aus dem Abschnitt "Releases" herunterladen. Laden Sie die neueste Version herunter und fügen Sie sie Ihrem PATH hinzu:
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
Lassen Sie uns nun ein Beispielprojekt herunterladen (erfordert Maven):
git clone https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app
cd amazon-codeguru-reviewer-sample-app
mvn clean compile
Nach dem Kompilieren können wir Codeguru mit:
aws-codeguru-cli --root-dir ./ --build target/classes --src src --output ./output
open output/codeguru-report.html
Wo --root-dir . Gibt an, dass die Wurzel des Projekts, das wir analysieren möchten. In der Option --build target/classses GEBURD, dass sich die Build -Artefakte unter ./target/classes und --src befinden, sagt, dass wir nur Quelldateien analysieren möchten, die sich unter ./src befinden. Die Option --output ./output gibt an, wo Codeguru ihre Empfehlungen schreiben soll. Standardmäßig erstellt Codeguru einen JSON- und HTML -Bericht.
Sie können Ihren eigenen Eimernamen mit der Option --bucket-name angeben. Beachten Sie, dass Codeguru Rezensent derzeit nur Bucket-Namen unterstützt, die mit dem Präfix- codeguru-reviewer- Out-Box beginnen. Wenn Sie ein anderes Benennungsmuster für Ihren Eimer wählen, müssen Sie:
S3:GetObject Berechtigungen auf dem S3-Bucket an codeguru-reviewer.amazonaws.comKMS::Decrypt Berechtigungen an codeguru-reviewer.amazonaws.comMit Codeguru Reviewer können Sie einen Kunden -Managed -Schlüssel (CMCMK) verwenden, um den Inhalt des S3 -Bucket zu verschlüsseln, der zum Speichern von Quellen- und Erstellen von Artefakten sowie alle Metadaten und Empfehlungen, die von Codeguru Rezensent erstellt wurden, verwendet werden. Erstellen Sie zunächst einen kundenführenden Schlüssel in KMS. Sie müssen die Erlaubnis der Codeguru -Rezensenten erteilen, Artefakte mit diesem Schlüssel zu entschlüsseln, indem Sie Ihre Schlüsselrichtlinie die folgende Erklärung hinzufügen:
{
"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 ]
}
}
} Aktivieren Sie dann die serverseitige Verschlüsselung für den Bucket, den Sie mit Codeguru-Rezensent verwenden. Der Bucket-Name sollte codeguru-reviewer-cli-[YOUR ACCOUNT]-[YOUR REGION] sein, es sei denn, Sie haben einen benutzerdefinierten Namen angegeben. Verwenden Sie zur Verschlüsselung den KMS -Schlüssel, den Sie im vorherigen Schritt erstellt haben.
Jetzt können Sie ein Repository analysieren, indem Sie die KMS -Schlüssel -ID (nicht den Alias) bereitstellen. Zum Beispiel:
aws-codeguru-cli -r ./ -kms 12345678-abcd-abcd-1234-1234567890ab
Wenn Sie zum ersten Mal ein Repository mit dem Codeguru -Rezensent CLI analysieren, wird ein neuer Verband erstellt und der bereitgestellte Schlüssel wird diesem Repository zugeordnet. Wenn Sie nachfolgende Scans, müssen Sie den Schlüssel nicht erneut bereitstellen. Beachten Sie, dass Sie einen Schlüssel verwenden können, nachdem das Repository bereits zugeordnet ist. Wenn Sie von der Verwendung eines Schlüssels zur Verwendung eines Schlüssels wechseln möchten, müssen Sie zuerst die vorhandene Assoziation in der AWS -Konsole löschen und dann einen neuen Scan mit der CLI auslösen, in der Sie den Schlüssel bereitstellen.
Der Codeguru-Rezensent CLI sucht nach einer Datei namens .codeguru-ignore.yml in der Benutzer Kriterien angeben können, basierend auf den Empfehlungen unterdrückt werden sollten. Unterdrückte Empfehlungen werden nicht von der CLI zurückgegeben, sondern auch in der AWS -Konsole angezeigt.
Die .codeguru-ignore.yml Datei kann eines der unten angegebenen Filterkriterien verwenden:
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/**
Nur das version ist in der Datei .codeguru-ignore.yml Datei obligatorisch. Alle anderen Einträge sind optional, und die CLI versteht jede Kombination dieser Einträge.
Ein Beispiel für eine solche Konfigurationsdatei finden Sie hier.
Sie können diese CLI verwenden, um Codeguru in Ihrer CI/CD -Pipeline auszuführen. Sehen Sie diese Aktion als Beispiel. Um die CLI in CI/CD zu verwenden, müssen Sie Arbeitsanmeldeinformationen benötigen. Sie können diese CDK -Vorlage verwenden, um OIDC -Anmeldeinformationen für GitHub -Aktionen einzurichten.
Anschließend können Sie die CLI im nicht-interaktiven Modus mit der Option --no-prompt ausführen und die Option --fail-on-recommendations verwenden, um einen Exit-Code ungleich Null zurückzugeben, wenn Empfehlungen gemeldet werden. Sie können ein Region und ein AWS -Profil angeben, indem Sie die Optionen --region und --profile nach Bedarf angeben:
aws-codeguru-cli --region [BUCKET REGION] --no-prompt --fail-on-recommendations -r ./ ...
Erhalten Sie den Komite -Bereich, der für verschiedene CI/CD -Anbieter unterschiedlich funktioniert. Beispielsweise bietet GitHub die relevanten Commits über Umgebungsvariablen wie ${{ github.event.before }} und ${{ github.event.after }} .
In dieser Aktion wird ein End-to-End-Beispiel angegeben.
Um das Projekt zu erstellen, benötigen Sie Java 8 oder höher. Überprüfen Sie dieses Repository und führen Sie aus:
./gradlew installDist
Und jetzt laufen Sie Ihren lokalen Build mit:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
Sie können einen Selbsttest mit:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli -r . -s src/main/java -b build/libs -c HEAD^:HEAD
Weitere Informationen finden Sie unter Beitrag.
Dieses Projekt ist unter der Lizenz Apache-2.0 lizenziert.