Простая обертка CLI для рецензента CodeGuru, которая предоставляет команду одной строки для сканирования локального клона репозитория и получения результатов. Этот CLI завершает команды AWS CLI для связи с рецензентом AWS CodeGuru. Использование рецензента CodeGuru может генерировать сбор за счет за счет вашей учетной записи AWS. Смотрите подробную цену для рецензента Codeguru.
Чтобы запустить CLI, нам необходимо установить версию GIT, Java (например, Amazon Corretto) и интерфейс командной строки AWS. Убедитесь, что оба приложения установлены на нашей машине с помощью работы:
java -version
mvn --version
aws --version
git --version
Нам также понадобятся рабочие учетные данные на нашей машине, чтобы взаимодействовать с нашей учетной записью AWS. Узнайте больше о настройке учетных данных для AWS здесь: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html.
Вы всегда можете использовать CLI с учетными данными администратора , но если вы хотите иметь определенную роль в использовании CLI, ваши учетные данные должны иметь хотя бы следующие разрешения:
{
"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 "
}
]
} Вы можете скачать AWS-Codeguru-Cli из раздела релизов. Загрузите последнюю версию и добавьте ее на свой 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
Теперь давайте загрузим пример проекта (требуется Maven):
git clone https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app
cd amazon-codeguru-reviewer-sample-app
mvn clean compile
После компиляции мы можем запустить Codeguru с:
aws-codeguru-cli --root-dir ./ --build target/classes --src src --output ./output
open output/codeguru-report.html
где --root-dir . Указывает, что корень проекта, который мы хотим проанализировать. Опция --build target/classses гласит, что артефакты сборки расположены под ./target/classes , и --src говорит, что мы хотим проанализировать только исходные файлы, расположенные под ./src . Опция --output ./output указывает, где Codeguru должен написать свои рекомендации. По умолчанию CodeGuru создает отчет JSON и HTML.
Вы можете предоставить свое собственное имя ведра, используя опцию --bucket-name . Обратите внимание, что в настоящее время рецензент CodeGuru поддерживает только имена ведра, которые начинаются с Prefix codeguru-reviewer- из коробки. Если вы выберете другой шаблон именования для своего ведра, вам нужно:
S3:GetObject на ведре S3 в codeguru-reviewer.amazonaws.comKMS::Decrypt разрешения codeguru-reviewer.amazonaws.comCodeGuru Reviewer позволяет вам использовать управляемый клиент ключ (CMCMK) для шифрования содержимого ведра S3, которое используется для хранения исходных и строительных артефактов, а также все метаданные и рекомендации, которые производятся рецензентом CodeGuru. Во -первых, создайте управляемый клиентом ключ в KMS. Вам необходимо будет предоставить разрешение рецензента Codeguru на расшифровку артефактов с помощью этого ключа, добавив следующее оператор в свою ключевую политику:
{
"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 ]
}
}
} Затем включите шифрование на стороне сервера для ведра, которое вы используете с помощью рецензента CodeGuru. Имя ведра должно быть codeguru-reviewer-cli-[YOUR ACCOUNT]-[YOUR REGION] , если вы не предоставили пользовательское имя. Для шифрования используйте ключ KMS, который вы создали на предыдущем шаге.
Теперь вы можете проанализировать репозиторий, предоставив идентификатор ключа KMS (не псевдоним). Например:
aws-codeguru-cli -r ./ -kms 12345678-abcd-abcd-1234-1234567890ab
В первый раз, когда вы анализируете репозиторий с CodeGuru Reviewer CLI, будет создана новая ассоциация, и предоставленный ключ будет связан с этим репозиторием. Последующие сканы мех вам не нужно снова предоставлять ключ. Обратите внимание, что вы можете начать использовать ключ после того, как репозиторий уже связан. Если вы хотите переключиться с не использовать ключ на использование клавиши, вам нужно сначала удалить существующую ассоциацию в консоли AWS, а затем запустить новое сканирование с помощью CLI, где вы предоставляете ключ.
CodeGuru Reviewer CLI ищет файл с именем .codeguru-ignore.yml , где пользователи могут указывать критерии, основанные на том, какие рекомендации следует подавлять. Подавленные рекомендации не будут возвращены CLI, но все же появляются в консоли AWS.
Файл .codeguru-ignore.yml может использовать любой из критериев фильтра, показанного ниже:
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/**
Только поле version является обязательным в файле .codeguru-ignore.yml . Все остальные записи являются необязательными, и CLI поймет любую комбинацию этих записей.
Пример такого файла конфигурации можно найти здесь.
Вы можете использовать этот CLI для запуска CodeGuru из вашего конвейера CI/CD. Смотрите это действие в качестве примера. Чтобы использовать CLI в CI/CD, вам нужны рабочие учетные данные. Вы можете использовать этот шаблон CDK для настройки учетных данных OIDC для действий GitHub.
Затем вы можете запустить CLI в неинтерактивном режиме, используя опцию --no-prompt и использовать опцию --fail-on-recommendations чтобы вернуть ненулевой код выхода, если сообщаются рекомендации. Вы можете указать профиль региона и AWS, используя варианты -по мере необходимости --region и --profile :
aws-codeguru-cli --region [BUCKET REGION] --no-prompt --fail-on-recommendations -r ./ ...
Получить диапазон коммит, работающий по -разному для различных поставщиков CI/CD. Например, GitHub предоставляет соответствующие коммиты через переменные среды, такие как ${{ github.event.before }} и ${{ github.event.after }} .
В этом действии приведен сквозный пример.
Чтобы построить проект, вам нужна Java 8 или более поздней версии. Осмотрите этот репозиторий и запустите:
./gradlew installDist
А теперь запустите свою местную сборку с:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
Вы можете запустить самопроверку с:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli -r . -s src/main/java -b build/libs -c HEAD^:HEAD
Смотрите Anploying для получения дополнительной информации.
Этот проект лицензирован по лицензии Apache-2.0.