


Это действие GitHub предназначено для проектов C ++/Python и выполняет статический анализ, используя:
Это может быть вызвано запрашиванием Push and Pull.
Для получения дополнительной информации и рекомендаций о настройке и различных входных данных см. В разделе, посвященные каждому языку ( C ++ и Python )
Созданный комментарий будет содержать фрагменты кода с описанием вопроса. Когда это действие будет запущено в первый раз, комментарий с первоначальным результатом будет создан для текущего запроса на привлечение. Последовательные запуска редактируют этот комментарий с обновленным статусом.
Обратите внимание, что возможно, что количество обнаруженных вопросов может сделать тело комментария больше, чем ограничение характера GitHub на PR (который составляет 65536). В этом случае созданный комментарий будет содержать только те проблемы, найденные до этого момента, и информация о том, что был достигнут предел символов.

Для не привлеченных запросов выходной сигнал будет напечатан на выходной консоли GitHub. Такое поведение также может быть вынуждено с помощью ввода force_console_print .

Хотя рекомендуется, чтобы ваш проект был на основе Cmake, он не требуется (см. Раздел входов ниже). Мы также рекомендуем использовать файл .clang-tidy в вашем корневом каталоге. Если ваш проект требуют установки дополнительных пакетов, вы можете использовать входные переменные apt_pckgs и/или init_script для их установки (см. Пример рабочего процесса или разделы входов ниже). Если ваш репозиторий разрешает вклады от Forks, вы должны использовать это действие с помощью триггера pull_request_target , так как API GitHub не позволяет иначе.
По умолчанию 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 | Название для комментариев с Recort. Это должно быть уникальное имя | Static analysis result |
exclude_dir | Каталог, который должен быть исключен из ROPORT | <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 | Clang-Tidy Arguments, которые будут использоваться (пример: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | Только разместите проблемы, обнаруженные в рамках изменений, введенных в этом запросе. Это означает, что будут размещены только проблемы, найденные в измененных строках. Любые другие проблемы, вызванные этими изменениями в репозитории, не будут сообщены, поэтому в целом вы должны запустить статический анализ на всей базе кода | 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, используемый для запросов GitHub API | ${{github.token}} |
pr_num | Получить номер запроса, для которого будет создан комментарий | ${{github.event.pull_request.number}} |
comment_title | Название для комментариев с Recort. Это должно быть уникальное имя | Static analysis result |
exclude_dir | Каталог, который должен быть исключен из ROPORT | <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 , на случай, если вам понадобятся некоторые пакеты, установленные перед запуском сценария