Pembungkus CLI sederhana untuk pengulas Codeguru yang menyediakan perintah satu baris untuk memindai klon lokal repositori dan menerima hasil. CLI ini membungkus perintah AWS CLI untuk berkomunikasi dengan peninjau AWS Codeguru. Menggunakan Codeguru Reviewer dapat menghasilkan biaya pengukuran di akun AWS Anda. Lihat harga pengulas Codeguru untuk detailnya.
Untuk menjalankan CLI, kita perlu memiliki versi Git, Java (misalnya, Amazon Corretto) dan antarmuka baris perintah AWS yang diinstal. Verifikasi bahwa kedua aplikasi diinstal pada mesin kami dengan menjalankan:
java -version
mvn --version
aws --version
git --version
Kami juga akan membutuhkan kredensial kerja di mesin kami untuk berinteraksi dengan akun AWS kami. Pelajari lebih lanjut tentang mengatur kredensial untuk AWS di sini: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html.
Anda selalu dapat menggunakan CLI dengan kredensial admin tetapi jika Anda ingin memiliki peran khusus untuk menggunakan CLI, kredensial Anda harus memiliki setidaknya izin berikut:
{
"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 "
}
]
} Anda dapat mengunduh AWS-Codeguru-Cli dari bagian rilis. Unduh versi terbaru dan tambahkan ke PATH Anda:
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
Sekarang, mari kita unduh contoh proyek (membutuhkan maven):
git clone https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app
cd amazon-codeguru-reviewer-sample-app
mvn clean compile
Setelah menyusun, kita dapat menjalankan Codeguru dengan:
aws-codeguru-cli --root-dir ./ --build target/classes --src src --output ./output
open output/codeguru-report.html
dimana --root-dir . Menentukan bahwa akar proyek yang ingin kami analisis. Opsi --build target/classses menyatakan bahwa artefak build terletak di bawah ./target/classes dan --src mengatakan bahwa kami hanya ingin menganalisis file sumber yang terletak di bawah ./src . Opsi --output ./output menentukan di mana Codeguru harus menulis rekomendasinya. Secara default, Codeguru menghasilkan laporan JSON dan HTML.
Anda dapat memberikan nama ember sendiri menggunakan opsi --bucket-name . Perhatikan bahwa, saat ini, pengulas Codeguru hanya mendukung nama-nama ember yang dimulai dengan awalan codeguru-reviewer- Out of the Box. Jika Anda memilih pola penamaan yang berbeda untuk ember Anda, Anda harus:
S3:GetObject Izin pada S3 Bucket ke codeguru-reviewer.amazonaws.comKMS::Decrypt Izin ke codeguru-reviewer.amazonaws.comCodeguru Reviewer memungkinkan Anda untuk menggunakan Kunci Pelanggan yang dikelola (CMCMK) untuk mengenkripsi isi ember S3 yang digunakan untuk menyimpan sumber dan membangun artefak, dan semua metadata dan rekomendasi yang diproduksi oleh pengulas Codeguru. Pertama, buat kunci yang dikelola pelanggan di KMS. Anda perlu memberikan izin pengulas Codeguru untuk mendekripsi artefak dengan kunci ini dengan menambahkan pernyataan berikut ke kebijakan utama Anda:
{
"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 ]
}
}
} Kemudian, aktifkan enkripsi sisi server untuk ember yang Anda gunakan dengan Codeguru Reviewer. Nama bucket harus codeguru-reviewer-cli-[YOUR ACCOUNT]-[YOUR REGION] , kecuali Anda memberikan nama khusus. Untuk enkripsi, gunakan kunci KMS yang Anda buat di langkah sebelumnya.
Sekarang Anda dapat menganalisis repositori dengan menyediakan ID kunci KMS (bukan alias). Misalnya:
aws-codeguru-cli -r ./ -kms 12345678-abcd-abcd-1234-1234567890ab
Pertama kali Anda menganalisis repositori dengan Codeguru Reviewer CLI, asosiasi baru akan dibuat dan kunci yang disediakan akan dikaitkan dengan repositori ini. Fur scan berikutnya, Anda tidak perlu memberikan kunci lagi. Perhatikan bahwa Anda dapat mulai menggunakan kunci setelah repositori sudah dikaitkan. Jika Anda ingin beralih dari tidak menggunakan kunci untuk menggunakan kunci, Anda perlu menghapus asosiasi yang ada terlebih dahulu di konsol AWS dan kemudian memicu pemindaian baru dengan CLI tempat Anda memberikan kunci.
Peninjau Codeguru CLI mencari file bernama .codeguru-ignore.yml di mana pengguna dapat menentukan kriteria berdasarkan rekomendasi mana yang harus ditekan. Rekomendasi yang ditekan tidak akan dikembalikan oleh CLI, tetapi masih muncul di konsol AWS.
File .codeguru-ignore.yml dapat menggunakan kriteria filter apa pun yang ditunjukkan di bawah ini:
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/**
Hanya bidang version yang wajib dalam file .codeguru-ignore.yml . Semua entri lain adalah opsional, dan CLI akan memahami kombinasi entri tersebut.
Contoh file konfigurasi seperti itu dapat ditemukan di sini.
Anda dapat menggunakan CLI ini untuk menjalankan Codeguru dari dalam pipa CI/CD Anda. Lihat tindakan ini sebagai contoh. Untuk menggunakan CLI dalam CI/CD, Anda memerlukan kredensial yang berfungsi. Anda dapat menggunakan template CDK ini untuk mengatur kredensial OIDC untuk tindakan GitHub.
Kemudian Anda dapat menjalankan CLI dalam mode non-interaktif menggunakan opsi --no-prompt , dan menggunakan opsi --fail-on-recommendations untuk mengembalikan kode keluar nol nol jika rekomendasi dilaporkan. Anda dapat menentukan profil wilayah dan AWS menggunakan opsi --region dan --profile sesuai kebutuhan:
aws-codeguru-cli --region [BUCKET REGION] --no-prompt --fail-on-recommendations -r ./ ...
Dapatkan rentang komit bekerja secara berbeda untuk penyedia CI/CD yang berbeda. Misalnya, GitHub memberikan komit relevan melalui variabel lingkungan seperti ${{ github.event.before }} dan ${{ github.event.after }} .
Contoh ujung ke ujung disediakan dalam tindakan ini.
Untuk membangun proyek, Anda membutuhkan Java 8 atau lebih baru. Lihat repositori ini dan jalankan:
./gradlew installDist
Dan sekarang jalankan bangunan lokal Anda dengan:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
Anda dapat menjalankan uji diri dengan:
./build/install/aws-codeguru-cli/bin/aws-codeguru-cli -r . -s src/main/java -b build/libs -c HEAD^:HEAD
Lihat berkontribusi untuk informasi lebih lanjut.
Proyek ini dilisensikan di bawah lisensi APACHE-2.0.