


Esta acción de GitHub está diseñada para proyectos C ++/Python y realiza un análisis estático usando:
Se puede activar mediante solicitudes de empuje y extracción.
Para obtener más información y orientación sobre la configuración y varias entradas, consulte Secciones dedicadas a cada idioma ( C ++ y Python )
El comentario creado contendrá fragmentos de código con la descripción del problema. Cuando esta acción se ejecuta por primera vez, el comentario con el resultado inicial se creará para la solicitud de extracción actual. Las ejecuciones consecutivas editarán este comentario con un estado actualizado.
Tenga en cuenta que es posible que la cantidad de problemas detectados pueda hacer que el cuerpo del comentario sea mayor que el límite de caracteres de GitHub por comentario de relaciones públicas (que es 65536). En ese caso, el comentario creado contendrá solo los problemas encontrados hasta ese punto, y la información de que se alcanzó el límite de los caracteres.

Para las solicitudes de no extracción, la salida se imprimirá en la consola de salida de GitHub. Este comportamiento también se puede forzar a través de la entrada force_console_print .

Si bien se recomienda que su proyecto esté basado en Cmake, no es necesario (consulte la sección de entradas a continuación). También recomendamos usar un archivo .clang-tidy en su directorio raíz. Si su proyecto requiere que se instalen paquetes adicionales, puede usar las variables de entrada apt_pckgs y/o init_script para instalarlos (consulte el ejemplo de flujo de trabajo o las secciones de entradas a continuación). Si su repositorio permite las contribuciones de Forks, debe usar esta acción con el evento de activación pull_request_target , ya que la API de GitHub no permitirá los comentarios de PR de otra manera.
Por defecto, CPPCheck se ejecuta con los siguientes indicadores: --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive Puede usar la entrada cppcheck_args para configurar sus propios indicadores.
Clang-Tidy busca el archivo .clang-tidy en su repositorio, pero también puede establecer comprobaciones utilizando la 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 | Nombre | Descripción | Valor predeterminado |
|---|---|---|
github_token | Token GitHub utilizado para las solicitudes de API de GitHub | ${{github.token}} |
pr_num | Pull Número de solicitud para el cual se creará el comentario | ${{github.event.pull_request.number}} |
comment_title | Título para hacer comentarios con el Raport. Este debería ser un nombre único | Static analysis result |
exclude_dir | Directorio que debe ser excluido del Raport | <empty> |
apt_pckgs | Paquetes adicionales (separados) que deben instalarse para que el proyecto compilará | <empty> |
init_script | Script de shell opcional que se ejecutará antes de configurar el proyecto (es decir, ejecutar el comando cmake). Esto debe usarse, cuando el proyecto requiere una configuración ambiental de antemano. El script se ejecutará con 2 argumentos: root_dir (directorio raíz del código del usuario) y build_dir (directorio de compilación creado para ejecutar SA). Nota. apt_pckgs se ejecutará antes de este script, solo en caso de que necesite algunos paquetes instalados. Además, este script se ejecutará en la raíz del proyecto ( root_dir ) | <empty> |
cppcheck_args | CPPCHECK (espacio separado) argumentos que se utilizarán | --enable=all --suppress=missingIncludeSystem --inline-suppr --inconclusive |
clang_tidy_args | argumentos de clang-tidy que se utilizarán (ejemplo: -checks='*,fuchsia-*,google-*,zircon-*' | <empty> |
report_pr_changes_only | Solo publique los problemas encontrados dentro de los cambios introducidos en esta solicitud de extracción. Esto significa que solo los problemas encontrados dentro de las líneas cambiadas se publicarán. No se informarán cualquier otro problema causado por estos cambios en el repositorio, por lo que en general debe ejecutar un análisis estático en la base de código completo | false |
use_cmake | Determina que si Cmake debe usarse para generar el archivo compile_commands.json | true |
cmake_args | Argumentos adicionales de CMake | <empty> |
force_console_print | ENTRAR el resultado de la acción a la consola, en lugar de crear el comentario | false |
Nota: apt_pckgs se ejecutará antes de init_script , en caso de que necesite algunos paquetes instalados antes de ejecutar el 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 " | Nombre | Descripción | Valor predeterminado |
|---|---|---|
github_token | Token GitHub utilizado para las solicitudes de API de GitHub | ${{github.token}} |
pr_num | Pull Número de solicitud para el cual se creará el comentario | ${{github.event.pull_request.number}} |
comment_title | Título para hacer comentarios con el Raport. Este debería ser un nombre único | Static analysis result |
exclude_dir | Directorio que debe ser excluido del Raport | <empty> |
apt_pckgs | Paquetes adicionales (separados) que deben instalarse para que el proyecto compilará | <empty> |
init_script | Script de shell opcional que se ejecutará antes de configurar el proyecto (es decir, ejecutar el comando cmake). Esto debe usarse, cuando el proyecto requiere una configuración ambiental de antemano. El script se ejecutará con 2 argumentos: root_dir (directorio raíz del código del usuario) y build_dir (directorio de compilación creado para ejecutar SA). Nota. apt_pckgs se ejecutará antes de este script, solo en caso de que necesite algunos paquetes instalados. Además, este script se ejecutará en la raíz del proyecto ( root_dir ) | <empty> |
pylint_args | Argumentos de pylint (separado en el espacio) que se utilizarán | <empty> |
python_dirs | Directorios que contienen archivos Python para verificar | <empty> |
report_pr_changes_only | Solo publique los problemas encontrados dentro de los cambios introducidos en esta solicitud de extracción. Esto significa que solo los problemas encontrados dentro de las líneas cambiadas se publicarán. No se informarán cualquier otro problema causado por estos cambios en el repositorio, por lo que en general debe ejecutar un análisis estático en la base de código completo | false |
force_console_print | ENTRAR el resultado de la acción a la consola, en lugar de crear el comentario | false |
Nota: apt_pckgs se ejecutará antes de init_script , en caso de que necesite algunos paquetes instalados antes de ejecutar el script