


이 GitHub 동작은 C ++/Python 프로젝트를 위해 설계되었으며 다음을 사용하여 정적 분석을 수행합니다.
푸시 앤 풀 요청으로 트리거 될 수 있습니다.
설정 및 다양한 입력에 대한 자세한 정보 및 지침은 각 언어 전용 섹션 ( C ++ 및 Python )을 참조하십시오.
생성 된 주석에는 문제 설명이 포함 된 코드 스 니펫이 포함됩니다. 이 조치가 처음으로 실행되면 초기 결과가 포함 된 주석이 현재 풀 요청에 대해 작성됩니다. 연속 실행은이 주석을 업데이트 된 상태로 편집합니다.
감지 된 문제의 양이 주석의 본문을 PR 주석 당 GitHub의 문자 한계 (65536)보다 클 수 있습니다. 이 경우 생성 된 주석에는 해당 시점까지 발견 된 문제 만 포함되며 문자 한계에 도달 한 정보가 포함됩니다.

비 당김 요청의 경우 출력이 Github의 출력 콘솔에 인쇄됩니다. 이 동작은 force_console_print 입력을 통해 강제로 만들 수 있습니다.

프로젝트가 CMake 기반이라는 것이 권장되지만 필요하지 않습니다 (아래 입력 섹션 참조). 또한 루트 디렉토리에서 .clang-tidy 파일을 사용하는 것이 좋습니다. 프로젝트에 추가 패키지를 설치 해야하는 경우 apt_pckgs 및/또는 init_script 입력 변수를 사용하여 설치할 수 있습니다 (아래 워크 플로 예 또는 입력 섹션 참조). 저장소에서 Forks의 기여를 허용하는 경우 GitHub API가 PR 주석을 달리 허용하지 않으므로 pull_request_target 트리거 이벤트와 함께이 작업을 사용해야합니다.
기본적으로 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 | Raport에서 제외 해야하는 디렉토리 | <empty> |
apt_pckgs | 프로젝트를 컴파일하려면 설치 해야하는 추가 (공간 분리) 패키지 | <empty> |
init_script | 프로젝트를 구성하기 전에 실행될 선택적 쉘 스크립트 (예 : CMAKE 명령 실행). 프로젝트에 미리 환경 설정이 필요한 경우 사용해야합니다. 스크립트는 root_dir (사용자 코드의 루트 디렉토리) 및 build_dir (SA를 실행하기 위해 생성 된 빌드 디렉토리)의 2 인수와 함께 실행됩니다. 메모. 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 | 이 풀 요청에 도입 된 변경 사항 내에 발견 된 문제 만 게시하십시오. 이는 변경된 라인 내에서 발견 된 문제 만 PO에 게시 함을 의미합니다. 저장소의 이러한 변경으로 인한 다른 문제는보고되지 않으므로 일반적으로 전체 코드베이스에서 정적 분석을 실행해야합니다. | false |
use_cmake | 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 | Raport에서 제외 해야하는 디렉토리 | <empty> |
apt_pckgs | 프로젝트를 컴파일하려면 설치 해야하는 추가 (공간 분리) 패키지 | <empty> |
init_script | 프로젝트를 구성하기 전에 실행될 선택적 쉘 스크립트 (예 : CMAKE 명령 실행). 프로젝트에 미리 환경 설정이 필요한 경우 사용해야합니다. 스크립트는 root_dir (사용자 코드의 루트 디렉토리) 및 build_dir (SA를 실행하기 위해 생성 된 빌드 디렉토리)의 2 인수와 함께 실행됩니다. 메모. apt_pckgs 이 스크립트 전에 실행되며, 일부 패키지가 설치된 경우를 대비하여 실행됩니다. 또한이 스크립트는 프로젝트의 루트에서 실행됩니다 ( root_dir ) | <empty> |
pylint_args | 파일 린트 (공간 분리 된) 사용이 사용될 인수 | <empty> |
python_dirs | 확인할 파이썬 파일이 포함 된 디렉토리 | <empty> |
report_pr_changes_only | 이 풀 요청에 도입 된 변경 사항 내에 발견 된 문제 만 게시하십시오. 이는 변경된 라인 내에서 발견 된 문제 만 PO에 게시 함을 의미합니다. 저장소의 이러한 변경으로 인한 다른 문제는보고되지 않으므로 일반적으로 전체 코드베이스에서 정적 분석을 실행해야합니다. | false |
force_console_print | 댓글을 작성하는 대신 작업 결과를 콘솔에 출력하십시오. | false |
참고 : apt_pckgs init_script 전에 실행됩니다. 스크립트를 실행하기 전에 설치가 필요한 경우를 대비하여