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