


このGitHubアクションは、C ++/Pythonプロジェクト向けに設計されており、以下を使用して静的分析を実行します。
プッシュアンドプルリクエストによってトリガーできます。
セットアップとさまざまな入力に関する詳細情報とガイダンスについては、各言語( C ++およびPython )専用のセクションをご覧ください。
作成されたコメントには、問題の説明が記載されたコードスニペットが含まれます。このアクションが初めて実行されると、最初の結果とのコメントが現在のプルリクエストのために作成されます。連続した実行は、このコメントを更新したステータスで編集します。
検出された問題の量が、コメントの本文をPRコメントごとのGitHubのキャラクターの制限(65536)よりも大きくする可能性があることに注意してください。その場合、作成されたコメントには、その時点までに見つかった問題と、文字の限界に到達したという情報のみが含まれます。

非プル要求の場合、出力はGitHubの出力コンソールに印刷されます。この動作は、 force_console_print入力を介して強制することもできます。

プロジェクトはCmakeベースであることをお勧めしますが、必須ではありません(以下の入力セクションを参照)。また、ルートディレクトリに.clang-tidyファイルを使用することもお勧めします。プロジェクトを追加のパッケージのインストールが必要な場合は、 apt_pckgsおよび/またはinit_script入力変数を使用してインストールできます(以下のワークフローの例または入力セクションを参照)。リポジトリがフォークからの寄付を許可している場合は、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 | ラポートとのコメントのタイトル。これはユニークな名前である必要があります | Static analysis result |
exclude_dir | ラポートから除外する必要があるディレクトリ | <empty> |
apt_pckgs | プロジェクトをコンパイルするためにインストールする必要がある追加(スペース分離)パッケージ | <empty> |
init_script | プロジェクトを構成する前に実行されるオプションのシェルスクリプト(つまり、cmakeコマンドを実行しています)。これは、プロジェクトが事前に環境のセットアップを必要とする場合に使用する必要があります。スクリプトは、 root_dir (ユーザーコードのルートディレクトリ)とbuild_dir (saを実行するために作成されたビルドディレクトリ)の2つの引数で実行されます。注記。 apt_pckgs 、パッケージがインストールされる必要がある場合に備えて、このスクリプトの前に実行されます。また、このスクリプトはプロジェクトのroot( 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 | cmakeを使用してcompile_commands.jsonファイルを生成する必要があります | true |
cmake_args | 追加のcmake引数 | <empty> |
force_console_print | コメントを作成する代わりに、アクション結果をコンソールに出力します | false |
注: apt_pckgs 、 init_script実行する前にいくつかのパッケージをインストールする必要がある場合に備えて、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 | ラポートとのコメントのタイトル。これはユニークな名前である必要があります | Static analysis result |
exclude_dir | ラポートから除外する必要があるディレクトリ | <empty> |
apt_pckgs | プロジェクトをコンパイルするためにインストールする必要がある追加(スペース分離)パッケージ | <empty> |
init_script | プロジェクトを構成する前に実行されるオプションのシェルスクリプト(つまり、cmakeコマンドを実行しています)。これは、プロジェクトが事前に環境のセットアップを必要とする場合に使用する必要があります。スクリプトは、 root_dir (ユーザーコードのルートディレクトリ)とbuild_dir (saを実行するために作成されたビルドディレクトリ)の2つの引数で実行されます。注記。 apt_pckgs 、パッケージがインストールされる必要がある場合に備えて、このスクリプトの前に実行されます。また、このスクリプトはプロジェクトのroot( root_dir )で実行されます | <empty> |
pylint_args | 使用されるピリント(スペース分離)引数 | <empty> |
python_dirs | チェックするPythonファイルを含むディレクトリ | <empty> |
report_pr_changes_only | このプルリクエストで導入された変更内で見つかった問題のみを投稿してください。これは、変更された行内で見つかった問題のみが投稿されることを意味します。リポジトリのこれらの変更によって引き起こされる他の問題は報告されないため、一般にコードベース全体で静的分析を実行する必要があります | false |
force_console_print | コメントを作成する代わりに、アクション結果をコンソールに出力します | false |
注: apt_pckgs 、 init_script実行する前にいくつかのパッケージをインストールする必要がある場合に備えて、init_scriptの前に実行されます