diff --git a/tools/linter/cppcheck-result-all.txt b/tools/linter/cppcheck-result-all.txt new file mode 100644 index 0000000..e69de29 diff --git a/tools/linter/cppcheck-result-unusedFunction.txt b/tools/linter/cppcheck-result-unusedFunction.txt new file mode 100644 index 0000000..e69de29 diff --git a/tools/linter/cppcheck-result-warning-style-performance.txt b/tools/linter/cppcheck-result-warning-style-performance.txt new file mode 100644 index 0000000..e69de29 diff --git a/tools/linter/cppcheck_suppressions b/tools/linter/cppcheck_suppressions new file mode 100644 index 0000000..83863b3 --- /dev/null +++ b/tools/linter/cppcheck_suppressions @@ -0,0 +1,2 @@ +*:/home/sergio/gitea/jaildoctors_dilemma/source/external/* +*:/usr/include/* \ No newline at end of file diff --git a/tools/linter/run_cppcheck.sh b/tools/linter/run_cppcheck.sh new file mode 100755 index 0000000..57c1551 --- /dev/null +++ b/tools/linter/run_cppcheck.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# Función para mostrar el uso del script +mostrar_uso() { + echo "Uso: $0 [OPCIÓN] [RUTA]" + echo "" + echo "Opciones de análisis:" + echo " -w, --warning Ejecutar cppcheck con warning, style, performance" + echo " -a, --all Ejecutar cppcheck con todas las opciones habilitadas" + echo " -u, --unused Ejecutar cppcheck para unusedFunction" + echo "" + echo "Opciones de ruta:" + echo " -p, --path Especificar ruta a analizar (default: ../source/)" + echo " [RUTA] Ruta como último argumento posicional" + echo "" + echo "Ejemplos:" + echo " $0 --warning" + echo " $0 -w --path ../src/" + echo " $0 --all /path/to/code/" + echo " $0 -u ../source/" +} + +# Inicializar las variables +opcion="" +ruta="../source/" + +# Procesar las opciones +while [[ $# -gt 0 ]]; do + case $1 in + -w|--warning) + opcion="warning" + shift + ;; + -a|--all) + opcion="all" + shift + ;; + -u|--unused) + opcion="unused" + shift + ;; + -p|--path) + if [[ -n "$2" && "$2" != -* ]]; then + ruta="$2" + shift 2 + else + echo "Error: --path requiere un argumento" + mostrar_uso + exit 1 + fi + ;; + -h|--help) + mostrar_uso + exit 0 + ;; + -*) + echo "Error: Opción desconocida: $1" + mostrar_uso + exit 1 + ;; + *) + # Argumento posicional (asumimos que es la ruta) + ruta="$1" + shift + ;; + esac +done + +# Verificar que se haya especificado una opción de análisis +if [[ -z "$opcion" ]]; then + echo "Error: Debe especificar una opción de análisis (-w, -a, o -u)" + mostrar_uso + exit 1 +fi + +# Ejecutar según la opción seleccionada +case $opcion in + warning) + echo "Ejecutando cppcheck con warning, style, performance en: $ruta" + cppcheck --force --enable=warning,style,performance --std=c++20 \ + --check-level=exhaustive \ + --suppressions-list=./cppcheck_suppressions \ + "$ruta" \ + 2>./cppcheck-result-warning-style-performance.txt + echo "Resultados guardados en: ./cppcheck-result-warning-style-performance.txt" + ;; + all) + echo "Ejecutando cppcheck con todas las opciones en: $ruta" + cppcheck --force --enable=all -I /usr/include --std=c++20 \ + --suppress=missingIncludeSystem \ + --suppressions-list=./cppcheck_suppressions \ + "$ruta" \ + 2>./cppcheck-result-all.txt + echo "Resultados guardados en: ./cppcheck-result-all.txt" + ;; + unused) + echo "Ejecutando cppcheck para unusedFunction en: $ruta" + cppcheck --enable=style --std=c++20 \ + --suppressions-list=./cppcheck_suppressions \ + "$ruta" \ + 2>./cppcheck-result-unusedFunction.txt + echo "Resultados guardados en: ./cppcheck-result-unusedFunction.txt" + ;; + *) + echo "Error: Opción inválida" + mostrar_uso + exit 1 + ;; +esac