


Tindakan GitHub ini dirancang untuk proyek C ++/Python dan melakukan analisis statis menggunakan:
Itu dapat dipicu oleh permintaan push dan tarik.
Untuk informasi dan panduan lebih lanjut tentang pengaturan dan berbagai input, silakan lihat bagian yang didedikasikan untuk setiap bahasa ( C ++ dan Python )
Komentar yang dibuat akan berisi cuplikan kode dengan deskripsi masalah. Ketika tindakan ini dijalankan untuk pertama kalinya, komentar dengan hasil awal akan dibuat untuk permintaan tarik saat ini. Lari berturut -turut akan mengedit komentar ini dengan status yang diperbarui.
Perhatikan bahwa ada kemungkinan bahwa jumlah masalah yang terdeteksi dapat membuat tubuh komentar lebih besar dari batas karakter GitHub per komentar PR (yaitu 65536). Dalam hal ini, komentar yang dibuat hanya akan berisi masalah yang ditemukan sampai saat itu, dan informasi bahwa batas karakter tercapai.

Untuk permintaan non pull, output akan dicetak ke konsol output GitHub. Perilaku ini juga dapat dipaksa melalui input force_console_print .

Meskipun disarankan agar proyek Anda berbasis CMAKE, itu tidak diperlukan (lihat bagian Input di bawah). Kami juga merekomendasikan menggunakan file .clang-tidy di direktori root Anda. Jika proyek Anda memerlukan paket tambahan untuk diinstal, Anda dapat menggunakan variabel input apt_pckgs dan/atau init_script untuk menginstalnya (lihat contoh alur kerja atau bagian input di bawah). Jika repositori Anda memungkinkan kontribusi dari garpu, Anda harus menggunakan tindakan ini dengan acara pemicu pull_request_target , karena API GitHub tidak akan mengizinkan komentar PR sebaliknya.
Secara default, CPPCHECK berjalan dengan bendera berikut: --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive Anda dapat menggunakan input cppcheck_args untuk mengatur bendera Anda sendiri.
Clang-Tidy mencari file .clang-tidy di repositori Anda, tetapi Anda juga dapat mengatur cek menggunakan input 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 | Nama | Keterangan | Nilai default |
|---|---|---|
github_token | Token GitHub Digunakan untuk Permintaan API GitHub | ${{github.token}} |
pr_num | Nomor permintaan tarik yang akan dibuat komentar | ${{github.event.pull_request.number}} |
comment_title | Judul untuk komentar dengan Raport. Ini harus menjadi nama yang unik | Static analysis result |
exclude_dir | Direktori yang harus dikecualikan dari Raport | <empty> |
apt_pckgs | Paket tambahan (dipisahkan ruang) yang perlu diinstal agar proyek dapat dikompilasi | <empty> |
init_script | Skrip shell opsional yang akan dijalankan sebelum mengkonfigurasi proyek (yaitu menjalankan perintah cmake). Ini harus digunakan, ketika proyek memerlukan beberapa pengaturan lingkungan sebelumnya. Script akan dijalankan dengan 2 argumen: root_dir (direktori root kode pengguna) dan build_dir (Direktori build yang dibuat untuk menjalankan SA). Catatan. apt_pckgs akan berjalan sebelum skrip ini, untuk berjaga -jaga jika Anda memerlukan beberapa paket yang diinstal. Juga skrip ini akan dijalankan di root proyek ( root_dir ) | <empty> |
cppcheck_args | Argumen cppcheck (spasi terpisah) yang akan digunakan | --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive |
clang_tidy_args | argumen clang-ridy yang akan digunakan (contoh: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | Hanya memposting masalah yang ditemukan dalam perubahan yang diperkenalkan dalam permintaan tarik ini. Ini berarti bahwa hanya masalah yang ditemukan dalam garis yang diubah yang akan diposting PO. Masalah lain apa pun yang disebabkan oleh perubahan dalam repositori ini, tidak akan dilaporkan, jadi secara umum Anda harus menjalankan analisis statis di seluruh basis kode | false |
use_cmake | Menentukan Wether CMake harus digunakan untuk menghasilkan file compile_commands.json | true |
cmake_args | Argumen cmake tambahan | <empty> |
force_console_print | Output hasil tindakan ke konsol, alih -alih membuat komentar | false |
CATATAN: apt_pckgs akan berjalan sebelum init_script , kalau -kalau Anda memerlukan beberapa paket yang diinstal sebelum menjalankan skrip
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 " | Nama | Keterangan | Nilai default |
|---|---|---|
github_token | Token GitHub Digunakan untuk Permintaan API GitHub | ${{github.token}} |
pr_num | Nomor permintaan tarik yang akan dibuat komentar | ${{github.event.pull_request.number}} |
comment_title | Judul untuk komentar dengan Raport. Ini harus menjadi nama yang unik | Static analysis result |
exclude_dir | Direktori yang harus dikecualikan dari Raport | <empty> |
apt_pckgs | Paket tambahan (dipisahkan ruang) yang perlu diinstal agar proyek dapat dikompilasi | <empty> |
init_script | Skrip shell opsional yang akan dijalankan sebelum mengkonfigurasi proyek (yaitu menjalankan perintah cmake). Ini harus digunakan, ketika proyek memerlukan beberapa pengaturan lingkungan sebelumnya. Script akan dijalankan dengan 2 argumen: root_dir (direktori root kode pengguna) dan build_dir (Direktori build yang dibuat untuk menjalankan SA). Catatan. apt_pckgs akan berjalan sebelum skrip ini, untuk berjaga -jaga jika Anda memerlukan beberapa paket yang diinstal. Juga skrip ini akan dijalankan di root proyek ( root_dir ) | <empty> |
pylint_args | Argumen pylint (dipisahkan ruang) yang akan digunakan | <empty> |
python_dirs | Direktori yang berisi file Python untuk diperiksa | <empty> |
report_pr_changes_only | Hanya memposting masalah yang ditemukan dalam perubahan yang diperkenalkan dalam permintaan tarik ini. Ini berarti bahwa hanya masalah yang ditemukan dalam garis yang diubah yang akan diposting PO. Masalah lain apa pun yang disebabkan oleh perubahan dalam repositori ini, tidak akan dilaporkan, jadi secara umum Anda harus menjalankan analisis statis di seluruh basis kode | false |
force_console_print | Output hasil tindakan ke konsol, alih -alih membuat komentar | false |
CATATAN: apt_pckgs akan berjalan sebelum init_script , kalau -kalau Anda memerlukan beberapa paket yang diinstal sebelum menjalankan skrip