


Esta ação do GitHub foi projetada para projetos C ++/Python e realiza análise estática usando:
Pode ser acionado por solicitações de push e puxar.
Para obter mais informações e orientações sobre a configuração e várias entradas, consulte seções dedicadas a cada idioma ( C ++ e Python )
O comentário criado conterá snippets de código com a descrição do problema. Quando essa ação for executada pela primeira vez, o comentário com o resultado inicial será criado para a solicitação de tração atual. Executivos consecutivos editarão este comentário com o status atualizado.
Observe que é possível que a quantidade de problemas detectados possa fazer com que o corpo do comentário seja maior que o limite de personagem do Github por comentário de relações públicas (que é 65536). Nesse caso, o comentário criado conterá apenas os problemas encontrados até esse ponto e as informações de que o limite dos caracteres foi alcançado.

Para solicitações não puxadas, a saída será impressa no console de saída do GitHub. Esse comportamento também pode ser forçado através da entrada force_console_print .

Embora seja recomendável que seu projeto seja baseado em cmake, ele não é necessário (consulte a seção de entradas abaixo). Também recomendamos o uso de um arquivo .clang-tidy no seu diretório raiz. Se o seu projeto exigir que pacotes adicionais sejam instalados, você poderá usar as variáveis de entrada apt_pckgs e/ou init_script para instalá -las (consulte o exemplo do fluxo de trabalho ou seções de entrada abaixo). Se o seu repositório permitir contribuições dos garfos, você deverá usar essa ação com o evento pull_request_target Trigger, pois a API do GitHub não permitirá os comentários do PR de outra forma.
Por padrão, o CPPCHECK é executado com os seguintes sinalizadores: --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive você pode usar a entrada cppcheck_args para definir seus próprios sinalizadores.
Clang-Tidy procura o arquivo .clang-tidy em seu repositório, mas você também pode definir verificações usando a entrada 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 | Nome | Descrição | Valor padrão |
|---|---|---|
github_token | Token Github usado para solicitações de API do GitHub | ${{github.token}} |
pr_num | Puxe o número da solicitação para o qual o comentário será criado | ${{github.event.pull_request.number}} |
comment_title | Título para comentar com o Rapport. Este deve ser um nome único | Static analysis result |
exclude_dir | Diretório que deve ser excluído do Rapport | <empty> |
apt_pckgs | Pacotes adicionais (separados por espaço) que precisam ser instalados para que o projeto compile | <empty> |
init_script | Script de shell opcional que será executado antes de configurar o projeto (ou seja, executando o comando cmake). Isso deve ser usado, quando o projeto exigir alguma configuração ambiental com antecedência. O script será executado com 2 argumentos: root_dir (diretório raiz do código do usuário) e build_dir (diretório de construção criado para executar SA). Observação. apt_pckgs será executado antes deste script, caso você precise de alguns pacotes instalados. Além disso, este script será executado na raiz do projeto ( root_dir ) | <empty> |
cppcheck_args | Argumentos de cppcheck (espaço separado) que serão usados | --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive |
clang_tidy_args | Argumentos de Clang-Tidy que serão usados (Exemplo: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | Publique apenas os problemas encontrados nas alterações introduzidas nesta solicitação de tração. Isso significa que apenas os problemas encontrados nas linhas alteradas serão publicadas. Quaisquer outros problemas causados por essas mudanças no repositório não serão relatados; portanto, em geral, você deve executar uma análise estática em toda a base de código | false |
use_cmake | Determina o Wether Cmake deve ser usado para gerar o arquivo compile_commands.json | true |
cmake_args | Argumentos adicionais de cmake | <empty> |
force_console_print | Saia o resultado da ação para console, em vez de criar o comentário | false |
Nota: apt_pckgs será executado antes init_script , caso você precise de alguns pacotes instalados antes de executar o 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 " | Nome | Descrição | Valor padrão |
|---|---|---|
github_token | Token Github usado para solicitações de API do GitHub | ${{github.token}} |
pr_num | Puxe o número da solicitação para o qual o comentário será criado | ${{github.event.pull_request.number}} |
comment_title | Título para comentar com o Rapport. Este deve ser um nome único | Static analysis result |
exclude_dir | Diretório que deve ser excluído do Rapport | <empty> |
apt_pckgs | Pacotes adicionais (separados por espaço) que precisam ser instalados para que o projeto compile | <empty> |
init_script | Script de shell opcional que será executado antes de configurar o projeto (ou seja, executando o comando cmake). Isso deve ser usado, quando o projeto exigir alguma configuração ambiental com antecedência. O script será executado com 2 argumentos: root_dir (diretório raiz do código do usuário) e build_dir (diretório de construção criado para executar SA). Observação. apt_pckgs será executado antes deste script, caso você precise de alguns pacotes instalados. Além disso, este script será executado na raiz do projeto ( root_dir ) | <empty> |
pylint_args | Argumentos de pylint (espaço separado) que serão usados | <empty> |
python_dirs | Diretórios que contêm arquivos python a serem verificados | <empty> |
report_pr_changes_only | Publique apenas os problemas encontrados nas alterações introduzidas nesta solicitação de tração. Isso significa que apenas os problemas encontrados nas linhas alteradas serão publicadas. Quaisquer outros problemas causados por essas mudanças no repositório não serão relatados; portanto, em geral, você deve executar uma análise estática em toda a base de código | false |
force_console_print | Saia o resultado da ação para console, em vez de criar o comentário | false |
Nota: apt_pckgs será executado antes init_script , caso você precise de alguns pacotes instalados antes de executar o script