O Patrull CLI para revisor do CEDGURU, que fornece um comando de uma linha para digitalizar um clone local de um repositório e receber resultados. Essa CLI envolve os comandos da AWS CLI para se comunicar com o revisor da AWS CodeGuru. O uso do revisor CodeGuru pode gerar taxas de medição na sua conta da AWS. Consulte o preço do revisor CodeGuru para obter detalhes.
Para executar a CLI, precisamos ter uma versão do Git, Java (por exemplo, Amazon Corretto) e a interface da linha de comando da AWS instalada. Verifique se os dois aplicativos estão instalados em nossa máquina em execução:
java -version
mvn --version
aws --version
git --version
Também precisaremos de credenciais de trabalho em nossa máquina para interagir com nossa conta da AWS. Saiba mais sobre a configuração de credenciais para a AWS aqui: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html.
Você sempre pode usar a CLI com credenciais de administrador , mas se você deseja ter uma função específica para usar a CLI, suas credenciais devem ter pelo menos as seguintes permissões:
{
"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 "
}
]
} Você pode fazer o download da AWS-CodeGuru-Cli na seção Releases. Baixe a versão mais recente e adicione -a ao seu 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
Agora, vamos baixar um projeto de exemplo (requer Maven):
git clone https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app
cd amazon-codeguru-reviewer-sample-app
mvn clean compile
Após a compilação, podemos executar o CodeGuru com:
aws-codeguru-cli --root-dir ./ --build target/classes --src src --output ./output
open output/codeguru-report.html
Onde --root-dir . Especifica que a raiz do projeto que queremos analisar. A opção --build target/classses afirma que os artefatos de construção estão localizados em ./target/classes e --src diz que queremos apenas analisar arquivos de origem localizados em ./src . A opção --output ./output Especifica para onde o CodeGuru deve escrever suas recomendações. Por padrão, o CodeGuru produz um relatório JSON e HTML.
Você pode fornecer seu próprio nome de balde usando a opção --bucket-name . Observe que, atualmente, o Codeguru Revisor suporta apenas nomes de baldes que começam com o prefixo codeguru-reviewer- Out of the Box. Se você escolher um padrão de nomenclatura diferente para o seu balde, é necessário:
S3:GetObject no balde S3 para codeguru-reviewer.amazonaws.comKMS::Decrypt Permissions to codeguru-reviewer.amazonaws.comO CodeGuru Revisor permite que você use uma chave gerenciada pelo cliente (CMCMK) para criptografar o conteúdo do balde S3 usado para armazenar fonte e criar artefatos, e todos os metadados e recomendações produzidas pelo CodeGuru Revisor. Primeiro, crie uma chave gerenciada pelo cliente no KMS. Você precisará conceder permissão do revisor CodeGuru para descriptografar artefatos com esta chave, adicionando a seguinte declaração à sua política -chave:
{
"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 ]
}
}
} Em seguida, habilite a criptografia do lado do servidor para o balde que você está usando com o Codeguru Revisor. O nome do balde deve ser codeguru-reviewer-cli-[YOUR ACCOUNT]-[YOUR REGION] , a menos que você forneça um nome personalizado. Para criptografia, use a tecla KMS que você criou na etapa anterior.
Agora você pode analisar um repositório fornecendo o KMS Key ID (não o alias). Por exemplo:
aws-codeguru-cli -r ./ -kms 12345678-abcd-abcd-1234-1234567890ab
Na primeira vez em que você analisa um repositório com a CEDGURU Revisor CLI, uma nova associação será criada e a chave fornecida será associada a este repositório. Scanns subsequentes de pêlo, você não precisa fornecer a chave novamente. Observe que você pode começar a usar uma chave depois que o repositório já estiver associado. Se você deseja mudar de não usar uma chave para usar uma chave, precisará excluir a associação existente primeiro no console da AWS e depois acionar uma nova varredura com a CLI, onde você fornece a chave.
O revisor CodeGuru CLI procura um arquivo chamado .codeguru-ignore.yml onde os usuários podem especificar critérios com base em quais recomendações devem ser suprimidas. As recomendações suprimidas não serão devolvidas pela CLI, mas ainda aparecerão no console da AWS.
O arquivo .codeguru-ignore.yml pode usar qualquer um dos critérios de filtro mostrados abaixo:
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/**
Somente o campo version é obrigatório no arquivo .codeguru-ignore.yml . Todas as outras entradas são opcionais e a CLI entenderá qualquer combinação dessas entradas.
Um exemplo desse arquivo de configuração pode ser encontrado aqui.
Você pode usar esta CLI para executar o CodeGuru de dentro do seu pipeline CI/CD. Veja esta ação como exemplo. Para usar a CLI no CI/CD, você precisa de credenciais de trabalho. Você pode usar este modelo CDK para configurar credenciais OIDC para ações do GitHub.
Em seguida, você pode executar a CLI no modo não interativo usando a opção --no-prompt e usar a opção --fail-on-recommendations para retornar um código de saída diferente de zero se forem relatadas recomendações. Você pode especificar um perfil de região e AWS usando as opções --region e --profile , conforme necessário:
aws-codeguru-cli --region [BUCKET REGION] --no-prompt --fail-on-recommendations -r ./ ...
Obtenha o intervalo de comprometimento funciona de maneira diferente para diferentes provedores de IC/CD. Por exemplo, o Github fornece as confirmações relevantes por meio de variáveis de ambiente como ${{ github.event.before }} e ${{ github.event.after }} .
Um exemplo de ponta a ponta é fornecido nesta ação.
Para construir o projeto, você precisa de Java 8 ou posterior. Confira este repositório e execute:
./gradlew installDist
E agora execute sua construção local com:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
Você pode executar um autoteste com:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli -r . -s src/main/java -b build/libs -c HEAD^:HEAD
Consulte contribuindo para mais informações.
Este projeto está licenciado sob a licença Apache-2.0.