غلاف 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 Reviewer أسماء الجرافات التي تبدأ فقط مع مراجعة codeguru-reviewer- خارج المربع. إذا اخترت نمط تسمية مختلف للدلو الخاص بك ، فأنت بحاجة إلى:
S3:GetObject على دلو S3 إلى codeguru-reviewer.amazonaws.comKMS::Decrypt الأذونات إلى codeguru-reviewer.amazonaws.comيتيح لك Codeguru Reviewer استخدام مفتاح يديره العميل (CMCMK) لتشفير محتويات دلو S3 المستخدم لتخزين المصادر وبناء القطع الأثرية ، وجميع البيانات الوصفية والتوصيات التي يتم إنتاجها بواسطة CodeGuru Reporty. أولاً ، قم بإنشاء مفتاح إدارة عميل في KMS. ستحتاج إلى منح Codeguru Reviewer إذنًا لفك تشفير القطع الأثرية مع هذا المفتاح عن طريق إضافة البيان التالي إلى سياستك الرئيسية:
{
"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 CLI ، سيتم إنشاء ارتباط جديد وسيترتبط مفتاح المقدمة مع هذا المستودع. الفراء الفراء اللاحقة ، لا تحتاج إلى توفير المفتاح مرة أخرى. لاحظ أنه يمكنك البدء في استخدام مفتاح بعد أن يرتبط المستودع بالفعل. إذا كنت ترغب في التبديل من عدم استخدام مفتاح لاستخدام مفتاح ، فأنت بحاجة إلى حذف الارتباط الحالي أولاً في وحدة التحكم AWS ثم يؤدي إلى إجراء فحص جديد باستخدام CLI حيث يمكنك تقديم المفتاح.
يبحث مراجع Codeguru 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
انظر المساهمة لمزيد من المعلومات.
تم ترخيص هذا المشروع بموجب ترخيص Apache-2.0.