


تم تصميم هذا الإجراء github لمشاريع C ++/Python ويقوم بتحليل ثابت باستخدام:
يمكن تشغيله بطلبات الدفع والسحب.
لمزيد من المعلومات والإرشادات حول الإعداد والمدخلات المختلفة ، يرجى الاطلاع على الأقسام المخصصة لكل لغة ( C ++ و Python )
سيحتوي التعليق الذي تم إنشاؤه على مقتطفات رمز مع وصف المشكلة. عند تشغيل هذا الإجراء لأول مرة ، سيتم إنشاء التعليق مع النتيجة الأولية لطلب السحب الحالي. ستعمل عمليات التشغيل المتتالية على تعديل هذا التعليق مع الحالة المحدثة.
لاحظ أنه من الممكن أن يكون مقدار المشكلات المكتشفة أن تجعل جسم التعليق أكبر من حد شخصية GitHub لكل تعليق PR (وهو 65536). في هذه الحالة ، سيحتوي التعليق الذي تم إنشاؤه فقط على المشكلات التي تم العثور عليها حتى هذه النقطة ، والمعلومات التي تم الوصول إلى حد الأحرف.

بالنسبة لطلبات غير السحب ، سيتم طباعة الإخراج على وحدة التحكم في الإخراج Github. يمكن أيضًا إجبار هذا السلوك عبر إدخال force_console_print .

على الرغم من أنه يوصى بأن يعتمد مشروعك على CMAKE ، إلا أنه غير مطلوب (انظر قسم المدخلات أدناه). نوصي أيضًا باستخدام ملف .clang-tidy في دليل الجذر الخاص بك. إذا كان مشروعك يتطلب تثبيت حزم إضافية ، فيمكنك استخدام متغيرات إدخال apt_pckgs و/أو init_script لتثبيتها (انظر مثال سير العمل أو أقسام المدخلات أدناه). إذا كان مستودعك يتيح المساهمات من Forks ، فيجب عليك استخدام هذا الإجراء مع حدث TRIGGER pull_request_target ، حيث لن يسمح GITHUB API بتعليقات العلاقات العامة على خلاف ذلك.
بشكل افتراضي ، يعمل CPPCheck مع الأعلام التالية: --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive يمكنك استخدام إدخال cppcheck_args لتعيين أعلامك الخاصة.
يبحث Clang-Tidy عن ملف .clang-tidy في المستودع الخاص بك ، ولكن يمكنك أيضًا تعيين الشيكات باستخدام إدخال clang_tidy_args .
name : Static analysis
on :
# Will run on push when merging to 'branches'. The output will be shown in the console
push :
branches :
- develop
- master
- main
# 'pull_request_target' allows this Action to also run on forked repositories
# The output will be shown in PR comments (unless the 'force_console_print' flag is used)
pull_request_target :
branches :
- " * "
jobs :
static_analysis :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
- name : setup init_script
shell : bash
run : |
echo "#!/bin/bash
# Input args provided by StaticAnalysis action
root_dir=${1}
build_dir=${2}
echo "Hello from the init script! First arg=${root_dir} second arg=${build_dir}"
add-apt-repository ppa:oibaf/graphics-drivers
apt update && apt upgrade
apt install -y libvulkan1 mesa-vulkan-drivers vulkan-utils" > init_script.sh
- name : Run static analysis
uses : JacobDomagala/StaticAnalysis@master
with :
language : c++
# Exclude any issues found in ${Project_root_dir}/lib
exclude_dir : lib
use_cmake : true
# Additional apt packages that need to be installed before running Cmake
apt_pckgs : software-properties-common libglu1-mesa-dev freeglut3-dev mesa-common-dev
# Additional script that will be run (sourced) AFTER 'apt_pckgs' and before running Cmake
init_script : init_script.sh
# (Optional) clang-tidy args
clang_tidy_args : -checks='*,fuchsia-*,google-*,zircon-*,abseil-*,modernize-use-trailing-return-type'
# (Optional) cppcheck args
cppcheck_args : --enable=all --suppress=missingIncludeSystem | اسم | وصف | القيمة الافتراضية |
|---|---|---|
github_token | رمز Github المستخدمة لطلبات API Github | ${{github.token}} |
pr_num | رقم طلب السحب الذي سيتم إنشاء التعليق له | ${{github.event.pull_request.number}} |
comment_title | عنوان للتعليق مع Raport. يجب أن يكون هذا اسمًا فريدًا | Static analysis result |
exclude_dir | الدليل الذي يجب استبعاده من الرابور | <empty> |
apt_pckgs | حزم إضافية (منفصلة عن المساحة) التي تحتاج إلى تثبيت حتى يتم تجميع المشروع | <empty> |
init_script | البرنامج النصي shell الاختياري الذي سيتم تشغيله قبل تكوين المشروع (أي تشغيل cmake الأمر). يجب استخدام هذا ، عندما يتطلب المشروع بعض الإعدادات البيئية مسبقًا. سيتم تشغيل البرنامج النصي باستخدام وسيطتين: root_dir (دليل الجذر لرمز المستخدم) و build_dir (إنشاء دليل تم إنشاؤه لتشغيل SA). ملحوظة. سيتم تشغيل apt_pckgs قبل هذا البرنامج النصي ، فقط في حالة تثبيت بعض الحزم. كما سيتم تشغيل هذا البرنامج النصي في جذر المشروع ( root_dir ) | <empty> |
cppcheck_args | حجج CPPCHECK (الفضاء المنفصل) التي سيتم استخدامها | --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive |
clang_tidy_args | وسيطات clang-tidy التي سيتم استخدامها (مثال: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | فقط نشر المشكلات الموجودة في التغييرات التي تم تقديمها في طلب السحب هذا. هذا يعني أن القضايا الموجودة في الخطوط المتغيرة فقط هي التي سيتم نشرها. لن يتم الإبلاغ عن أي مشكلات أخرى ناتجة عن هذه التغييرات في المستودع | false |
use_cmake | يجب استخدام wether cmake لإنشاء ملف compile_commands.json | true |
cmake_args | حجج Cmake إضافية | <empty> |
force_console_print | إخراج نتيجة الإجراء إلى وحدة التحكم ، بدلاً من إنشاء التعليق | false |
ملاحظة: سيتم تشغيل apt_pckgs قبل init_script ، فقط في حالة حاجة إلى تثبيت بعض الحزم قبل تشغيل البرنامج النصي
name : Static analysis
on :
push :
branches :
- master
pull_request :
jobs :
check :
name : Run Linter
runs-on : ubuntu-20.04
steps :
- uses : actions/checkout@v3
- name : CodeQuality
uses : JacobDomagala/StaticAnalysis@master
with :
language : " Python "
pylint_args : " --rcfile=.pylintrc --recursive=true "
python_dirs : " src test " | اسم | وصف | القيمة الافتراضية |
|---|---|---|
github_token | رمز Github المستخدمة لطلبات API Github | ${{github.token}} |
pr_num | رقم طلب السحب الذي سيتم إنشاء التعليق له | ${{github.event.pull_request.number}} |
comment_title | عنوان للتعليق مع Raport. يجب أن يكون هذا اسمًا فريدًا | Static analysis result |
exclude_dir | الدليل الذي يجب استبعاده من الرابور | <empty> |
apt_pckgs | حزم إضافية (منفصلة عن المساحة) التي تحتاج إلى تثبيت حتى يتم تجميع المشروع | <empty> |
init_script | البرنامج النصي shell الاختياري الذي سيتم تشغيله قبل تكوين المشروع (أي تشغيل cmake الأمر). يجب استخدام هذا ، عندما يتطلب المشروع بعض الإعدادات البيئية مسبقًا. سيتم تشغيل البرنامج النصي باستخدام وسيطتين: root_dir (دليل الجذر لرمز المستخدم) و build_dir (إنشاء دليل تم إنشاؤه لتشغيل SA). ملحوظة. سيتم تشغيل apt_pckgs قبل هذا البرنامج النصي ، فقط في حالة تثبيت بعض الحزم. كما سيتم تشغيل هذا البرنامج النصي في جذر المشروع ( root_dir ) | <empty> |
pylint_args | الحجج (الفضاء المنفصلة) البالنت التي سيتم استخدامها | <empty> |
python_dirs | الدلائل التي تحتوي على ملفات بيثون ليتم فحصها | <empty> |
report_pr_changes_only | فقط نشر المشكلات الموجودة في التغييرات التي تم تقديمها في طلب السحب هذا. هذا يعني أن القضايا الموجودة في الخطوط المتغيرة فقط هي التي سيتم نشرها. لن يتم الإبلاغ عن أي مشكلات أخرى ناتجة عن هذه التغييرات في المستودع | false |
force_console_print | إخراج نتيجة الإجراء إلى وحدة التحكم ، بدلاً من إنشاء التعليق | false |
ملاحظة: سيتم تشغيل apt_pckgs قبل init_script ، فقط في حالة حاجة إلى تثبيت بعض الحزم قبل تشغيل البرنامج النصي