cppcheck
This commit is contained in:
@@ -51,7 +51,7 @@ void Input::applyGamepadBindingsFromOptions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Obtener el primer gamepad conectado
|
// Obtener el primer gamepad conectado
|
||||||
auto& gamepad = gamepads_[0];
|
const auto& gamepad = gamepads_[0];
|
||||||
|
|
||||||
// Aplicar bindings desde Options
|
// Aplicar bindings desde Options
|
||||||
// Los valores pueden ser:
|
// Los valores pueden ser:
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ void OpenGLShader::createQuadGeometry() {
|
|||||||
checkGLError("glVertexAttribPointer(position)");
|
checkGLError("glVertexAttribPointer(position)");
|
||||||
|
|
||||||
// Atributo 1: Coordenadas de textura (2 floats)
|
// Atributo 1: Coordenadas de textura (2 floats)
|
||||||
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), (void*)(2 * sizeof(float)));
|
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), reinterpret_cast<void*>(2 * sizeof(float)));
|
||||||
glEnableVertexAttribArray(1);
|
glEnableVertexAttribArray(1);
|
||||||
checkGLError("glVertexAttribPointer(texcoord)");
|
checkGLError("glVertexAttribPointer(texcoord)");
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ auto Screen::get() -> Screen* {
|
|||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Screen::Screen()
|
Screen::Screen()
|
||||||
: palettes_(Asset::get()->getListByType(Asset::Type::PALETTE)) {
|
: window_width_(0),
|
||||||
|
window_height_(0),
|
||||||
|
palettes_(Asset::get()->getListByType(Asset::Type::PALETTE)) {
|
||||||
// Arranca SDL VIDEO, crea la ventana y el renderizador
|
// Arranca SDL VIDEO, crea la ventana y el renderizador
|
||||||
initSDLVideo();
|
initSDLVideo();
|
||||||
if (Options::video.fullscreen) {
|
if (Options::video.fullscreen) {
|
||||||
@@ -456,11 +458,10 @@ void Screen::initShaders() {
|
|||||||
|
|
||||||
// Obtiene información sobre la pantalla
|
// Obtiene información sobre la pantalla
|
||||||
void Screen::getDisplayInfo() {
|
void Screen::getDisplayInfo() {
|
||||||
int i;
|
|
||||||
int num_displays = 0;
|
int num_displays = 0;
|
||||||
SDL_DisplayID* displays = SDL_GetDisplays(&num_displays);
|
SDL_DisplayID* displays = SDL_GetDisplays(&num_displays);
|
||||||
if (displays != nullptr) {
|
if (displays != nullptr) {
|
||||||
for (i = 0; i < num_displays; ++i) {
|
for (int i = 0; i < num_displays; ++i) {
|
||||||
SDL_DisplayID instance_id = displays[i];
|
SDL_DisplayID instance_id = displays[i];
|
||||||
const char* name = SDL_GetDisplayName(instance_id);
|
const char* name = SDL_GetDisplayName(instance_id);
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ void Surface::loadPalette(const std::string& file_path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Carga una paleta desde otra paleta
|
// Carga una paleta desde otra paleta
|
||||||
void Surface::loadPalette(Palette palette) {
|
void Surface::loadPalette(const Palette& palette) {
|
||||||
palette_ = palette;
|
palette_ = palette;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class Surface {
|
|||||||
|
|
||||||
// Carga una paleta desde un archivo
|
// Carga una paleta desde un archivo
|
||||||
void loadPalette(const std::string& file_path);
|
void loadPalette(const std::string& file_path);
|
||||||
void loadPalette(Palette palette);
|
void loadPalette(const Palette& palette);
|
||||||
|
|
||||||
// Copia una región de la SurfaceData de origen a la SurfaceData de destino
|
// Copia una región de la SurfaceData de origen a la SurfaceData de destino
|
||||||
void render(float dx, float dy, float sx, float sy, float w, float h);
|
void render(float dx, float dy, float sx, float sy, float w, float h);
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ void Resource::destroy() { delete Resource::resource; }
|
|||||||
auto Resource::get() -> Resource* { return Resource::resource; }
|
auto Resource::get() -> Resource* { return Resource::resource; }
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Resource::Resource() {
|
Resource::Resource()
|
||||||
loading_text_ = Screen::get()->getText();
|
: loading_text_(Screen::get()->getText()) {
|
||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,9 +353,9 @@ void Resource::createText() {
|
|||||||
{"subatomic", "subatomic.gif", "subatomic.txt"},
|
{"subatomic", "subatomic.gif", "subatomic.txt"},
|
||||||
{"8bithud", "8bithud.gif", "8bithud.txt"}};
|
{"8bithud", "8bithud.gif", "8bithud.txt"}};
|
||||||
|
|
||||||
for (const auto& resource : resources) {
|
for (const auto& res_info : resources) {
|
||||||
texts_.emplace_back(resource.key, std::make_shared<Text>(getSurface(resource.texture_file), getTextFile(resource.text_file)));
|
texts_.emplace_back(res_info.key, std::make_shared<Text>(getSurface(res_info.texture_file), getTextFile(res_info.text_file)));
|
||||||
printWithDots("Text : ", resource.key, "[ DONE ]");
|
printWithDots("Text : ", res_info.key, "[ DONE ]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,7 +415,7 @@ void Resource::renderProgress() {
|
|||||||
Screen::get()->clearSurface(static_cast<Uint8>(PaletteColor::BLACK));
|
Screen::get()->clearSurface(static_cast<Uint8>(PaletteColor::BLACK));
|
||||||
|
|
||||||
auto surface = Screen::get()->getRendererSurface();
|
auto surface = Screen::get()->getRendererSurface();
|
||||||
const auto TEXT_COLOR = static_cast<Uint8>(PaletteColor::BRIGHT_WHITE);
|
const auto LOADING_TEXT_COLOR = static_cast<Uint8>(PaletteColor::BRIGHT_WHITE);
|
||||||
const auto BAR_COLOR = static_cast<Uint8>(PaletteColor::WHITE);
|
const auto BAR_COLOR = static_cast<Uint8>(PaletteColor::WHITE);
|
||||||
const int TEXT_HEIGHT = loading_text_->getCharacterSize();
|
const int TEXT_HEIGHT = loading_text_->getCharacterSize();
|
||||||
const int CENTER_X = Options::game.width / 2;
|
const int CENTER_X = Options::game.width / 2;
|
||||||
@@ -427,7 +427,7 @@ void Resource::renderProgress() {
|
|||||||
CENTER_X - (loading_text_->lenght(APP_NAME) / 2),
|
CENTER_X - (loading_text_->lenght(APP_NAME) / 2),
|
||||||
CENTER_Y - TEXT_HEIGHT,
|
CENTER_Y - TEXT_HEIGHT,
|
||||||
APP_NAME,
|
APP_NAME,
|
||||||
TEXT_COLOR);
|
LOADING_TEXT_COLOR);
|
||||||
|
|
||||||
// Draw VERSION centered below center
|
// Draw VERSION centered below center
|
||||||
const std::string VERSION_TEXT = "(" + std::string(Version::GIT_HASH) + ")";
|
const std::string VERSION_TEXT = "(" + std::string(Version::GIT_HASH) + ")";
|
||||||
@@ -435,7 +435,7 @@ void Resource::renderProgress() {
|
|||||||
CENTER_X - (loading_text_->lenght(VERSION_TEXT) / 2),
|
CENTER_X - (loading_text_->lenght(VERSION_TEXT) / 2),
|
||||||
CENTER_Y + TEXT_HEIGHT,
|
CENTER_Y + TEXT_HEIGHT,
|
||||||
VERSION_TEXT,
|
VERSION_TEXT,
|
||||||
TEXT_COLOR);
|
LOADING_TEXT_COLOR);
|
||||||
|
|
||||||
// Draw progress bar border
|
// Draw progress bar border
|
||||||
const float WIRED_BAR_WIDTH = Options::game.width - (X_PADDING * 2);
|
const float WIRED_BAR_WIDTH = Options::game.width - (X_PADDING * 2);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
class Director {
|
class Director {
|
||||||
public:
|
public:
|
||||||
Director(std::vector<std::string> const& args); // Constructor
|
explicit Director(std::vector<std::string> const& args); // Constructor
|
||||||
~Director(); // Destructor
|
~Director(); // Destructor
|
||||||
static auto run() -> int; // Bucle principal
|
static auto run() -> int; // Bucle principal
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ Title::Title()
|
|||||||
axis_cooldown_(0.0F),
|
axis_cooldown_(0.0F),
|
||||||
remap_completed_(false) {
|
remap_completed_(false) {
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
|
temp_keys_[0] = temp_keys_[1] = temp_keys_[2] = SDL_SCANCODE_UNKNOWN;
|
||||||
|
temp_buttons_[0] = temp_buttons_[1] = temp_buttons_[2] = -1;
|
||||||
|
|
||||||
state_ = SceneManager::options == SceneManager::Options::TITLE_WITH_LOADING_SCREEN ? State::SHOW_LOADING_SCREEN : State::MAIN_MENU;
|
state_ = SceneManager::options == SceneManager::Options::TITLE_WITH_LOADING_SCREEN ? State::SHOW_LOADING_SCREEN : State::MAIN_MENU;
|
||||||
SceneManager::current = SceneManager::Scene::TITLE;
|
SceneManager::current = SceneManager::Scene::TITLE;
|
||||||
SceneManager::options = SceneManager::Options::NONE;
|
SceneManager::options = SceneManager::Options::NONE;
|
||||||
|
|||||||
@@ -1,5 +1,55 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# CONFIGURACIÓN - Editar estas constantes para personalizar el script
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# Detectar la ubicación del script y la raíz del proyecto
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||||
|
|
||||||
|
# Rutas del proyecto
|
||||||
|
DEFAULT_ANALYSIS_PATH="$PROJECT_ROOT/source"
|
||||||
|
INCLUDE_PATH="$PROJECT_ROOT/source"
|
||||||
|
SUPPRESSIONS_FILE="$SCRIPT_DIR/cppcheck_suppressions"
|
||||||
|
OUTPUT_DIR="$SCRIPT_DIR"
|
||||||
|
BUILD_DIR="$PROJECT_ROOT/build"
|
||||||
|
COMPILE_COMMANDS="$BUILD_DIR/compile_commands.json"
|
||||||
|
|
||||||
|
# Parámetros de compilación comunes (fallback para análisis de archivos específicos)
|
||||||
|
CPPCHECK_STD="--std=c++20"
|
||||||
|
|
||||||
|
# Calcular número de threads (cores - 1, mínimo 1)
|
||||||
|
THREADS=$(($(nproc) - 1))
|
||||||
|
[[ $THREADS -lt 1 ]] && THREADS=1
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# Función para asegurar que compile_commands.json existe
|
||||||
|
ensure_compile_commands() {
|
||||||
|
if [[ ! -f "$COMPILE_COMMANDS" ]]; then
|
||||||
|
echo "⚠ compile_commands.json no encontrado en $BUILD_DIR"
|
||||||
|
echo "Generando compile_commands.json con CMake..."
|
||||||
|
|
||||||
|
# Crear directorio build si no existe
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
|
|
||||||
|
# Ejecutar CMake para generar compile_commands.json
|
||||||
|
(cd "$BUILD_DIR" && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. > /dev/null 2>&1)
|
||||||
|
|
||||||
|
if [[ ! -f "$COMPILE_COMMANDS" ]]; then
|
||||||
|
echo "❌ Error: No se pudo generar compile_commands.json"
|
||||||
|
echo "Por favor, ejecuta manualmente:"
|
||||||
|
echo " cd $BUILD_DIR && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✓ compile_commands.json generado exitosamente"
|
||||||
|
else
|
||||||
|
echo "✓ Usando compile_commands.json existente: $COMPILE_COMMANDS"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Función para mostrar el uso del script
|
# Función para mostrar el uso del script
|
||||||
mostrar_uso() {
|
mostrar_uso() {
|
||||||
echo "Uso: $0 [OPCIÓN] [RUTA]"
|
echo "Uso: $0 [OPCIÓN] [RUTA]"
|
||||||
@@ -10,7 +60,7 @@ mostrar_uso() {
|
|||||||
echo " -u, --unused Ejecutar cppcheck para unusedFunction"
|
echo " -u, --unused Ejecutar cppcheck para unusedFunction"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Opciones de ruta:"
|
echo "Opciones de ruta:"
|
||||||
echo " -p, --path <ruta> Especificar ruta a analizar (default: ../source/)"
|
echo " -p, --path <ruta> Especificar ruta a analizar (default: PROJECT_ROOT/source)"
|
||||||
echo " [RUTA] Ruta como último argumento posicional"
|
echo " [RUTA] Ruta como último argumento posicional"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Ejemplos:"
|
echo "Ejemplos:"
|
||||||
@@ -22,7 +72,7 @@ mostrar_uso() {
|
|||||||
|
|
||||||
# Inicializar las variables
|
# Inicializar las variables
|
||||||
opcion=""
|
opcion=""
|
||||||
ruta="../source/"
|
ruta="$DEFAULT_ANALYSIS_PATH"
|
||||||
|
|
||||||
# Procesar las opciones
|
# Procesar las opciones
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
@@ -76,30 +126,67 @@ fi
|
|||||||
# Ejecutar según la opción seleccionada
|
# Ejecutar según la opción seleccionada
|
||||||
case $opcion in
|
case $opcion in
|
||||||
warning)
|
warning)
|
||||||
echo "Ejecutando cppcheck con warning, style, performance en: $ruta"
|
ensure_compile_commands
|
||||||
cppcheck --force --enable=warning,style,performance --std=c++20 \
|
if [[ "$ruta" == "$DEFAULT_ANALYSIS_PATH" ]]; then
|
||||||
--check-level=exhaustive \
|
echo "Ejecutando cppcheck con warning, style, performance en proyecto completo (usando $THREADS threads)"
|
||||||
--suppressions-list=./cppcheck_suppressions \
|
cppcheck --force --enable=warning,style,performance \
|
||||||
"$ruta" \
|
--check-level=exhaustive \
|
||||||
2>./cppcheck-result-warning-style-performance.txt
|
-j$THREADS \
|
||||||
echo "Resultados guardados en: ./cppcheck-result-warning-style-performance.txt"
|
--project="$COMPILE_COMMANDS" \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-warning-style-performance.txt"
|
||||||
|
else
|
||||||
|
echo "Ejecutando cppcheck con warning, style, performance en: $ruta (usando $THREADS threads)"
|
||||||
|
cppcheck --force --enable=warning,style,performance $CPPCHECK_STD \
|
||||||
|
--check-level=exhaustive \
|
||||||
|
-j$THREADS \
|
||||||
|
-I "$INCLUDE_PATH" \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
"$ruta" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-warning-style-performance.txt"
|
||||||
|
fi
|
||||||
|
echo "Resultados guardados en: $OUTPUT_DIR/cppcheck-result-warning-style-performance.txt"
|
||||||
;;
|
;;
|
||||||
all)
|
all)
|
||||||
echo "Ejecutando cppcheck con todas las opciones en: $ruta"
|
ensure_compile_commands
|
||||||
cppcheck --force --enable=all -I /usr/include --std=c++20 \
|
if [[ "$ruta" == "$DEFAULT_ANALYSIS_PATH" ]]; then
|
||||||
--suppress=missingIncludeSystem \
|
echo "Ejecutando cppcheck con todas las opciones en proyecto completo (usando $THREADS threads)"
|
||||||
--suppressions-list=./cppcheck_suppressions \
|
cppcheck --force --enable=all \
|
||||||
"$ruta" \
|
-j$THREADS \
|
||||||
2>./cppcheck-result-all.txt
|
--project="$COMPILE_COMMANDS" \
|
||||||
echo "Resultados guardados en: ./cppcheck-result-all.txt"
|
--suppress=missingIncludeSystem \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-all.txt"
|
||||||
|
else
|
||||||
|
echo "Ejecutando cppcheck con todas las opciones en: $ruta (usando $THREADS threads)"
|
||||||
|
cppcheck --force --enable=all -I /usr/include -I "$INCLUDE_PATH" $CPPCHECK_STD \
|
||||||
|
-j$THREADS \
|
||||||
|
--suppress=missingIncludeSystem \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
"$ruta" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-all.txt"
|
||||||
|
fi
|
||||||
|
echo "Resultados guardados en: $OUTPUT_DIR/cppcheck-result-all.txt"
|
||||||
;;
|
;;
|
||||||
unused)
|
unused)
|
||||||
echo "Ejecutando cppcheck para unusedFunction en: $ruta"
|
ensure_compile_commands
|
||||||
cppcheck --enable=style --std=c++20 \
|
if [[ "$ruta" == "$DEFAULT_ANALYSIS_PATH" ]]; then
|
||||||
--suppressions-list=./cppcheck_suppressions \
|
echo "Ejecutando cppcheck para unusedFunction en proyecto completo (usando $THREADS threads)"
|
||||||
"$ruta" \
|
cppcheck --enable=style \
|
||||||
2>./cppcheck-result-unusedFunction.txt
|
-j$THREADS \
|
||||||
echo "Resultados guardados en: ./cppcheck-result-unusedFunction.txt"
|
--project="$COMPILE_COMMANDS" \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-unusedFunction.txt"
|
||||||
|
else
|
||||||
|
echo "Ejecutando cppcheck para unusedFunction en: $ruta (usando $THREADS threads)"
|
||||||
|
cppcheck --enable=style $CPPCHECK_STD \
|
||||||
|
-j$THREADS \
|
||||||
|
-I "$INCLUDE_PATH" \
|
||||||
|
--suppressions-list="$SUPPRESSIONS_FILE" \
|
||||||
|
"$ruta" \
|
||||||
|
2>"$OUTPUT_DIR/cppcheck-result-unusedFunction.txt"
|
||||||
|
fi
|
||||||
|
echo "Resultados guardados en: $OUTPUT_DIR/cppcheck-result-unusedFunction.txt"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Opción inválida"
|
echo "Error: Opción inválida"
|
||||||
|
|||||||
Reference in New Issue
Block a user