


การกระทำของ GitHub นี้ออกแบบมาสำหรับโครงการ C ++/Python และทำการวิเคราะห์แบบคงที่โดยใช้:
มันสามารถเรียกใช้โดยการร้องขอและดึง
สำหรับข้อมูลเพิ่มเติมและคำแนะนำเกี่ยวกับการตั้งค่าและอินพุตต่าง ๆ โปรดดูส่วนที่ทุ่มเทให้กับแต่ละภาษา ( C ++ และ Python )
ความคิดเห็นที่สร้างขึ้นจะมีตัวอย่างโค้ดพร้อมคำอธิบายปัญหา เมื่อการดำเนินการนี้ทำงานเป็นครั้งแรกความคิดเห็นที่มีผลลัพธ์เริ่มต้นจะถูกสร้างขึ้นสำหรับคำขอดึงปัจจุบัน การรันต่อเนื่องจะแก้ไขความคิดเห็นนี้ด้วยสถานะที่อัปเดต
โปรดทราบว่าเป็นไปได้ว่าปริมาณของปัญหาที่ตรวจพบสามารถทำให้ร่างกายของความคิดเห็นมีค่ามากกว่าขีด จำกัด อักขระของ GitHub ต่อความคิดเห็น PR (ซึ่งคือ 65536) ในกรณีดังกล่าวความคิดเห็นที่สร้างขึ้นจะมีเฉพาะปัญหาที่พบจนถึงจุดนั้นและข้อมูลที่ถึงขีด จำกัด ของตัวละคร

สำหรับคำขอที่ไม่ดึงเอาท์พุทจะถูกพิมพ์ไปยังคอนโซลเอาท์พุทของ GitHub พฤติกรรมนี้สามารถถูกบังคับผ่านอินพุต force_console_print

ในขณะที่แนะนำว่าโครงการของคุณใช้ CMake แต่ไม่จำเป็นต้องใช้ (ดูส่วน อินพุต ด้านล่าง) นอกจากนี้เรายังแนะนำให้ใช้ไฟล์ .clang-tidy ในไดเรกทอรีรูทของคุณ หากโครงการของคุณต้องการแพ็คเกจเพิ่มเติมที่จะติดตั้งคุณสามารถใช้ตัวแปร apt_pckgs และ/หรือ init_script ตัวแปรอินพุตเพื่อติดตั้ง (ดู ตัวอย่างเวิร์กโฟลว์ หรือส่วน อินพุต ด้านล่าง) หากพื้นที่เก็บข้อมูลของคุณอนุญาตให้มีส่วนร่วมจากส้อมคุณต้องใช้การกระทำนี้กับเหตุการณ์ทริกเกอร์ pull_request_target เนื่องจาก GitHub API จะไม่อนุญาตให้มีความคิดเห็น PR เป็นอย่างอื่น
โดยค่าเริ่มต้น 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 ที่ใช้สำหรับคำขอ GitHub API | ${{github.token}} |
pr_num | หมายเลขคำขอดึงซึ่งจะสร้างความคิดเห็น | ${{github.event.pull_request.number}} |
comment_title | ชื่อเรื่องสำหรับความคิดเห็นกับ The Raport นี่ควรเป็นชื่อที่ไม่ซ้ำกัน | Static analysis result |
exclude_dir | ไดเรกทอรีที่ควรได้รับการยกเว้นจาก Raport | <empty> |
apt_pckgs | แพ็คเกจเพิ่มเติม (แยกพื้นที่) ที่จำเป็นต้องติดตั้งเพื่อให้โครงการรวบรวม | <empty> |
init_script | เชลล์สคริปต์เสริมที่จะเรียกใช้ก่อนที่จะกำหนดค่าโครงการ (เช่นคำสั่งเรียกใช้ CMake) ควรใช้สิ่งนี้เมื่อโครงการต้องการการตั้งค่าด้านสิ่งแวดล้อมล่วงหน้า สคริปต์จะถูกเรียกใช้ด้วย 2 อาร์กิวเมนต์: root_dir (ไดเรกทอรีรูทของรหัสผู้ใช้) และ build_dir (สร้างไดเรกทอรีที่สร้างขึ้นสำหรับการเรียกใช้ SA) บันทึก. apt_pckgs จะทำงานก่อนสคริปต์นี้ในกรณีที่คุณต้องการติดตั้งแพ็คเกจ สคริปต์นี้จะทำงานในรูทของโครงการ ( root_dir ) | <empty> |
cppcheck_args | ข้อโต้แย้ง CPPCHECK (แยกพื้นที่) ที่จะใช้ | --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive |
clang_tidy_args | อาร์กิวเมนต์ที่มีความเสี่ยงจากเสียงดังที่จะใช้ (ตัวอย่าง: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | โพสต์เฉพาะปัญหาที่พบภายในการเปลี่ยนแปลงที่แนะนำในคำขอดึงนี้ ซึ่งหมายความว่าเฉพาะปัญหาที่พบภายในบรรทัดที่เปลี่ยนแปลงจะโพสต์ ปัญหาอื่น ๆ ที่เกิดจากการเปลี่ยนแปลงเหล่านี้ในที่เก็บจะไม่ถูกรายงานดังนั้นโดยทั่วไปคุณควรทำการวิเคราะห์แบบคงที่บนฐานรหัสทั้งหมด | false |
use_cmake | กำหนด cmake wether ควรใช้เพื่อสร้างไฟล์ 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 ที่ใช้สำหรับคำขอ GitHub API | ${{github.token}} |
pr_num | หมายเลขคำขอดึงซึ่งจะสร้างความคิดเห็น | ${{github.event.pull_request.number}} |
comment_title | ชื่อเรื่องสำหรับความคิดเห็นกับ The Raport นี่ควรเป็นชื่อที่ไม่ซ้ำกัน | Static analysis result |
exclude_dir | ไดเรกทอรีที่ควรได้รับการยกเว้นจาก Raport | <empty> |
apt_pckgs | แพ็คเกจเพิ่มเติม (แยกพื้นที่) ที่จำเป็นต้องติดตั้งเพื่อให้โครงการรวบรวม | <empty> |
init_script | เชลล์สคริปต์เสริมที่จะเรียกใช้ก่อนที่จะกำหนดค่าโครงการ (เช่นคำสั่งเรียกใช้ CMake) ควรใช้สิ่งนี้เมื่อโครงการต้องการการตั้งค่าด้านสิ่งแวดล้อมล่วงหน้า สคริปต์จะถูกเรียกใช้ด้วย 2 อาร์กิวเมนต์: root_dir (ไดเรกทอรีรูทของรหัสผู้ใช้) และ build_dir (สร้างไดเรกทอรีที่สร้างขึ้นสำหรับการเรียกใช้ SA) บันทึก. apt_pckgs จะทำงานก่อนสคริปต์นี้ในกรณีที่คุณต้องการติดตั้งแพ็คเกจ สคริปต์นี้จะทำงานในรูทของโครงการ ( root_dir ) | <empty> |
pylint_args | อาร์กิวเมนต์ Pylint (แยกพื้นที่) ที่จะใช้ | <empty> |
python_dirs | ไดเรกทอรีที่มีไฟล์ Python ที่จะตรวจสอบ | <empty> |
report_pr_changes_only | โพสต์เฉพาะปัญหาที่พบภายในการเปลี่ยนแปลงที่แนะนำในคำขอดึงนี้ ซึ่งหมายความว่าเฉพาะปัญหาที่พบภายในบรรทัดที่เปลี่ยนแปลงจะโพสต์ ปัญหาอื่น ๆ ที่เกิดจากการเปลี่ยนแปลงเหล่านี้ในที่เก็บจะไม่ถูกรายงานดังนั้นโดยทั่วไปคุณควรทำการวิเคราะห์แบบคงที่บนฐานรหัสทั้งหมด | false |
force_console_print | เอาต์พุตผลลัพธ์การกระทำไปยังคอนโซลแทนที่จะสร้างความคิดเห็น | false |
หมายเหตุ: apt_pckgs จะทำงานก่อน init_script ในกรณีที่คุณต้องการแพ็คเกจบางอย่างที่ติดตั้งก่อนเรียกใช้สคริปต์