Files
jaildoctors_dilemma/tools/linter/run_cppcheck.sh
2025-11-07 10:06:47 +01:00

110 lines
3.1 KiB
Bash
Executable File

#!/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 <ruta> 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